From 06dde9dea0c881392fe0a1c4b4d62a40828dbacd Mon Sep 17 00:00:00 2001 From: Nebojsa Majic <79749977+Onako2@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:59:33 +0100 Subject: [PATCH] Add Ridable and Attribute options for Creaking mob (#1613) --- patches/server/0007-Ridables.patch | 67 ++++- ...-Configurable-entity-base-attributes.patch | 60 +++- patches/server/0023-Giants-AI-settings.patch | 6 +- .../0024-Zombie-horse-naturally-spawn.patch | 6 +- ...0025-Charged-creeper-naturally-spawn.patch | 6 +- ...bit-naturally-spawn-toast-and-killer.patch | 6 +- .../server/0028-Tulips-change-fox-type.patch | 6 +- .../server/0029-Breedable-Polar-Bears.patch | 6 +- patches/server/0033-Cows-eat-mushrooms.patch | 4 +- .../server/0035-Pigs-give-saddle-back.patch | 6 +- ...36-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...37-Ender-dragon-always-drop-full-exp.patch | 6 +- ...derman-and-creeper-griefing-controls.patch | 10 +- ...0047-Villagers-follow-emerald-blocks.patch | 10 +- .../0048-Allow-leashing-villagers.patch | 10 +- .../0063-Configurable-jockey-options.patch | 22 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- .../0065-Add-phantom-spawning-options.patch | 6 +- patches/server/0072-Squid-EAR-immunity.patch | 8 +- .../server/0073-Phantoms-burn-in-light.patch | 6 +- .../0074-Configurable-villager-breeding.patch | 6 +- ...7-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...sable-zombie-aggressiveness-towards-.patch | 6 +- patches/server/0090-Flying-squids-Oh-my.patch | 8 +- ...e-entity-breeding-times-configurable.patch | 80 ++--- ...llowing-Endermen-to-despawn-even-whi.patch | 6 +- .../0104-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 6 +- ...09-Configurable-default-collar-color.patch | 6 +- .../server/0110-Phantom-flames-on-swoop.patch | 6 +- .../0113-Striders-give-saddle-back.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 62 ++-- ...oggle-for-water-sensitive-mob-damage.patch | 268 ++++++++--------- ...ither-Ender-Dragon-can-ride-vehicles.patch | 14 +- ...an-aggressiveness-towards-Endermites.patch | 8 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 8 +- ...134-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0139-Add-config-for-villager-trading.patch | 10 +- .../0149-Piglin-portal-spawn-modifier.patch | 6 +- ...1-Config-for-wither-explosion-radius.patch | 6 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0158-Iron-golem-calm-anger-options.patch | 6 +- patches/server/0159-Breedable-parrots.patch | 6 +- ...73-Shulker-spawn-from-bullet-options.patch | 6 +- ...5-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- ...e-Enderman-teleport-on-projectile-hi.patch | 8 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...0192-Toggle-for-Wither-s-spawn-sound.patch | 8 +- .../0195-Conduit-behavior-configuration.patch | 4 +- .../server/0196-Cauldron-fill-chances.patch | 4 +- .../0198-Shulker-change-color-with-dye.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 4 +- ...-Halloween-options-and-optimizations.patch | 4 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- .../0216-Mobs-always-drop-experience.patch | 274 +++++++++--------- .../0220-Mob-head-visibility-percent.patch | 20 +- .../0227-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0230-Lobotomize-stuck-villagers.patch | 6 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 6 +- .../0242-Skeletons-eat-wither-roses.patch | 6 +- ...243-Enchantment-Table-Persists-Lapis.patch | 4 +- ...253-Add-skeleton-bow-accuracy-option.patch | 6 +- ...low-creeper-to-encircle-target-when-.patch | 6 +- .../server/0277-Shears-can-defuse-TNT.patch | 4 +- ...-Option-Ocelot-Spawn-Under-Sea-Level.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 6 +- ...-Configurable-villager-search-radius.patch | 6 +- ...n-to-make-ravagers-afraid-of-rabbits.patch | 8 +- 79 files changed, 697 insertions(+), 604 deletions(-) diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index f84aa06eb..bbff8228c 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -22,7 +22,7 @@ index f58a94efafbc01d402cd03a108bb90f60930a316..21ea63da99c5b3e2e1ab9cc1049c903b super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 663b4ecd520e82aa108d44f2d5c2a20cfc7bc01f..1c1ce108840c522d5db49846ad3cac08916a7911 100644 +index c26e3a239441376f2694782d4f07943538677c71..5cd3d7b30a8dea820d0e9569219cbc5858c80f6c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1855,6 +1855,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); return value.isEmpty() ? fallback : value; } @@ -5288,6 +5340,15 @@ index 42e502cfcb8d2e775cbf738773caf1a087d2f3f4..2e35e494134e5294fd67a0bf9abbe3f6 + cowControllable = getBoolean("mobs.cow.controllable", cowControllable); + } + ++ public boolean creakingRidable = false; ++ public boolean creakingRidableInWater = true; ++ public boolean creakingControllable = true; ++ private void creakingSettings() { ++ creakingRidable = getBoolean("mobs.creaking.ridable", creakingRidable); ++ creakingRidableInWater = getBoolean("mobs.creaking.ridable-in-water", creakingRidableInWater); ++ creakingControllable = getBoolean("mobs.creaking.controllable", creakingControllable); ++ } ++ + public boolean creeperRidable = false; + public boolean creeperRidableInWater = true; + public boolean creeperControllable = true; diff --git a/patches/server/0008-Configurable-entity-base-attributes.patch b/patches/server/0008-Configurable-entity-base-attributes.patch index d13898a4e..6efce90a4 100644 --- a/patches/server/0008-Configurable-entity-base-attributes.patch +++ b/patches/server/0008-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 5263f97db83626096b1c4fef415a2fbf41bc9ce7..0360d3a4e7f291e3528a0debe4909e774e8c8b91 100644 +index 697c8c8fd0cdca4bb8bc3db62f7de8999785ec1e..90a51b05c80d079af07133a3e509aada57927a26 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -177,7 +177,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index 7c11b5e73d4f3c0be7c467f7522c2d974ab330f3..27aee968718af1ae78e2076ddc890114 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 b8303404f8a81e2b446a9a40861787ca786aad47..5eb5976a0fbe1959f9015734cc0b31503604649d 100644 +index b027633d6c854f481fbd4a2e4b89ace4b9d7a398..f4cc9ff863079f5546cce1bfa0f1dcab022bb293 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -326,6 +326,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -214,7 +214,7 @@ index 9d82fec6f5969816095dbd5a11325c79002dbb61..500109364b4741fc310eb22c151754a1 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index d554c62b89f382018c5be872077cccf1425c8e35..358f8d6650ed9820e7378d29f993b71504e779f3 100644 +index ba8d47111cf80c8e9a0b47793f125ca91f5f906e..0005cd7156e46ae790d629d7a985cdace1cc5577 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -82,6 +82,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -269,7 +269,7 @@ index 7c1f903c41839251a69d38ba58fb4a7038f8901a..50db395f519db1d25174e2bdb930e11a private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1171,6 +1174,9 @@ public class PurpurWorldConfig { +@@ -1184,6 +1187,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0065-Add-phantom-spawning-options.patch b/patches/server/0065-Add-phantom-spawning-options.patch index f54bf5f4b..f5e66e1cb 100644 --- a/patches/server/0065-Add-phantom-spawning-options.patch +++ b/patches/server/0065-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ index 021221da5d0315f6e371380a705ac6b3f6ac18d3..27eb9a365006884c85603dc6d9dd8eee for (int l = 0; l < k; ++l) { // Paper start - PhantomPreSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50db395f519db1d25174e2bdb930e11a05167603..862e65def7fd59810ca9bf206298556d900aa28d 100644 +index 429c0bd678cb726b761e32d4b22b33c630f28097..8aebaf667907aa61355ae3a0846b4ee67f204382 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1153,6 +1153,12 @@ public class PurpurWorldConfig { +@@ -1166,6 +1166,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index 50db395f519db1d25174e2bdb930e11a05167603..862e65def7fd59810ca9bf206298556d private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1177,6 +1183,12 @@ public class PurpurWorldConfig { +@@ -1190,6 +1196,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); diff --git a/patches/server/0072-Squid-EAR-immunity.patch b/patches/server/0072-Squid-EAR-immunity.patch index 6af57efd9..0c7beebbe 100644 --- a/patches/server/0072-Squid-EAR-immunity.patch +++ b/patches/server/0072-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 89151a9538e22941ad55aab1807d6871a852364c..30c0c6d582069c6a01b033bb9707f4fa1c82f4e9 100644 +index b5d714f137257810ced4b4457bd5bb01123d3452..0d4eaa2933d2b6501eeb64a0d95b2d4d67fb5523 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig { +@@ -1586,6 +1586,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; @@ -16,7 +16,7 @@ index 89151a9538e22941ad55aab1807d6871a852364c..30c0c6d582069c6a01b033bb9707f4fa private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1583,6 +1584,7 @@ public class PurpurWorldConfig { +@@ -1596,6 +1597,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); @@ -25,7 +25,7 @@ index 89151a9538e22941ad55aab1807d6871a852364c..30c0c6d582069c6a01b033bb9707f4fa public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 2812fa381a2d91a4638583a43556a7eef2b3d298..e047c0a4a8638588b4ac0d47c4c96899fac4abb7 100644 +index 24d7eca3f0b06602a1026eda3432f0a4255d8b01..9d8d0a99f0b2a8e3452c4c86e6c53c66d58c5b3d 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -378,6 +378,7 @@ public class ActivationRange diff --git a/patches/server/0073-Phantoms-burn-in-light.patch b/patches/server/0073-Phantoms-burn-in-light.patch index dcf38640b..347485d36 100644 --- a/patches/server/0073-Phantoms-burn-in-light.patch +++ b/patches/server/0073-Phantoms-burn-in-light.patch @@ -51,10 +51,10 @@ index bd1c23d849269df504c94da9d0ca0a6846b22c41..987b860f85a1be3159233fb329177379 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 30c0c6d582069c6a01b033bb9707f4fa1c82f4e9..feddf1aeb817e5bf3fbde76943c36da6bd4c1133 100644 +index 0d4eaa2933d2b6501eeb64a0d95b2d4d67fb5523..4fc86678e3c6459d88a0f7114dd858c6850290df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1208,6 +1208,9 @@ public class PurpurWorldConfig { +@@ -1221,6 +1221,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -64,7 +64,7 @@ index 30c0c6d582069c6a01b033bb9707f4fa1c82f4e9..feddf1aeb817e5bf3fbde76943c36da6 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1238,6 +1241,9 @@ public class PurpurWorldConfig { +@@ -1251,6 +1254,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); diff --git a/patches/server/0074-Configurable-villager-breeding.patch b/patches/server/0074-Configurable-villager-breeding.patch index f07dd905b..b77cfcd3e 100644 --- a/patches/server/0074-Configurable-villager-breeding.patch +++ b/patches/server/0074-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 329db0049e0792b2c066349849ebd7c26a9178d7..c50cfa8225d5098f978da42cdf6c6860 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 296285cd96f0b1a96216608474c78ef5333ae110..1510a14f18851c6906a0ae9249f0fbf8b0edc750 100644 +index 4fc86678e3c6459d88a0f7114dd858c6850290df..83af43e5f1d3e80170104771b2d38526d1ab3e3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1746,6 +1746,7 @@ public class PurpurWorldConfig { +@@ -1759,6 +1759,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public double villagerTemptRange = 10.0D; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index 296285cd96f0b1a96216608474c78ef5333ae110..1510a14f18851c6906a0ae9249f0fbf8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1760,6 +1761,7 @@ public class PurpurWorldConfig { +@@ -1773,6 +1774,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerTemptRange = getDouble("mobs.villager.attributes.tempt_range", villagerTemptRange); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch index 43234fe2f..6ccb04235 100644 --- a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch @@ -21,10 +21,10 @@ index 2bfce82bee8f3a16a33bd937eb610d9df1b6ceeb..2f7da09e14787395e95211acadd5c693 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff2c7696bc1988d40a3db83e8071d767615a5bd0..e462e34f33adaba50af7b0ff60356e1153f6f4ac 100644 +index 35ce3c0385f72feea1a0741ee055994f5cf0190a..a4c20f7b679150425b192a9e4411fa987aed8e1f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1776,6 +1776,7 @@ public class PurpurWorldConfig { +@@ -1789,6 +1789,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; @@ -32,7 +32,7 @@ index ff2c7696bc1988d40a3db83e8071d767615a5bd0..e462e34f33adaba50af7b0ff60356e11 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1787,6 +1788,7 @@ public class PurpurWorldConfig { +@@ -1800,6 +1801,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); diff --git a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch index 06ef8231d..39d39fa1f 100644 --- a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index a5a23c7f733d49c20c870f819eec2607781dccbf..be74a5732bc24eb3c909d28b4ef46d51 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1264d6e7304db19e8e10bace19d750fcf51fc995..f57bdfe69273a62dda9839b1725625aa969b2b78 100644 +index 7a7b8725f7a0b1a193b4e19510c386b46604f006..109c2d5ba677eee65f44cd93b0fdcee22d04d17b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -656,6 +656,7 @@ public class PurpurWorldConfig { +@@ -669,6 +669,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; @@ -28,7 +28,7 @@ index 1264d6e7304db19e8e10bace19d750fcf51fc995..f57bdfe69273a62dda9839b1725625aa private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -669,6 +670,7 @@ public class PurpurWorldConfig { +@@ -682,6 +683,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); diff --git a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch index 3da72ba03..c41329f36 100644 --- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index 6cf6d4ec7b9e43c7b2b4c0e2fb080964ff588130..e74866e5195a5eeae7666ad7be750eda + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 32c8a0bd5aa71676dcabebe7395be381722accb9..ff41df1aefb9c0062af302251e97fad101a7cef3 100644 +index 109c2d5ba677eee65f44cd93b0fdcee22d04d17b..b04c1c2534bec8f2eee873b43969843f54644dca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1598,6 +1598,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 32c8a0bd5aa71676dcabebe7395be381722accb9..ff41df1aefb9c0062af302251e97fad1 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1609,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1623,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0085-Customizable-wither-health-and-healing.patch b/patches/server/0085-Customizable-wither-health-and-healing.patch index a150a51bc..08d32928c 100644 --- a/patches/server/0085-Customizable-wither-health-and-healing.patch +++ b/patches/server/0085-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index f55842cf85dec8e5c26cd5ac52c63599f3b19cf3..2ec12ec298446b556132785d4d376130 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 ba1bf7fe6ffe74b832a0d247a82f510b02597a12..9698423ff57ff7aac8d7e222230059c5984afc59 100644 +index a28548332baf610521a308a560a858b3fc737b60..e323914f8694043e7b08a2518169695f582bc1a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1863,6 +1863,8 @@ public class PurpurWorldConfig { +@@ -1876,6 +1876,8 @@ public class PurpurWorldConfig { public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; public double witherScale = 1.0D; @@ -35,7 +35,7 @@ index ba1bf7fe6ffe74b832a0d247a82f510b02597a12..9698423ff57ff7aac8d7e222230059c5 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1879,6 +1881,8 @@ public class PurpurWorldConfig { +@@ -1892,6 +1894,8 @@ public class PurpurWorldConfig { } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); diff --git a/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch index b73aec9f3..8b6d208f1 100644 --- a/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,10 +70,10 @@ index cb5cf34781de4e87074a70a447fd463280147bdc..e6fb53b828c1a2e76d398e88449260f6 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 f47fff5e410eaba7113a795dd362057ea091c172..337aabd13f1062a351e19a55212313002cc51a87 100644 +index 0e7473973fe06f51e28bb8651856ed52a9a51d92..f6771afafe3e9e672059f504982e90449492449c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1971,6 +1971,7 @@ public class PurpurWorldConfig { +@@ -1984,6 +1984,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index f47fff5e410eaba7113a795dd362057ea091c172..337aabd13f1062a351e19a5521231300 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1986,6 +1987,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2000,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/0090-Flying-squids-Oh-my.patch b/patches/server/0090-Flying-squids-Oh-my.patch index 4a571fdeb..df0ec8a52 100644 --- a/patches/server/0090-Flying-squids-Oh-my.patch +++ b/patches/server/0090-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 7891d015d2f8dadcff8f457145574ea8ba48fe8d..4d2992a16865fa60dd38d0ff6dc341f9 this.squid.movementVector = new Vec3( (double)(Mth.cos(f) * 0.2F), (double)(-0.1F + this.squid.getRandom().nextFloat() * 0.2F), (double)(Mth.sin(f) * 0.2F) diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c185f89b6f90720620f1fa93e13da60a944613e..32ceab27543b01a0340796255b6f48bc2834de9d 100644 +index f6771afafe3e9e672059f504982e90449492449c..fea279b9fbd7f989bf26f0fc1254b1ecb8ac4342 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -933,11 +933,13 @@ public class PurpurWorldConfig { +@@ -946,11 +946,13 @@ public class PurpurWorldConfig { public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; @@ -75,7 +75,7 @@ index 3c185f89b6f90720620f1fa93e13da60a944613e..32ceab27543b01a0340796255b6f48bc } public boolean goatRidable = false; -@@ -1624,6 +1626,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1639,7 @@ public class PurpurWorldConfig { public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -83,7 +83,7 @@ index 3c185f89b6f90720620f1fa93e13da60a944613e..32ceab27543b01a0340796255b6f48bc private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1636,6 +1639,7 @@ public class PurpurWorldConfig { +@@ -1649,6 +1652,7 @@ public class PurpurWorldConfig { squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0097-Make-entity-breeding-times-configurable.patch b/patches/server/0097-Make-entity-breeding-times-configurable.patch index 4759c3537..9c463af59 100644 --- a/patches/server/0097-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0097-Make-entity-breeding-times-configurable.patch @@ -538,7 +538,7 @@ index 08c4a32b1195820eb574cdf4a499107565a551d6..0220fb517d99e8c9629d191eb554799a public boolean canBeLeashed() { return true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc808cf6477 100644 +index 6805a2f2803bb4e859afba5369308dd4d2ac5165..e363a93bdfcef7408ecdd5618b63c345ab9525b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -463,23 +463,27 @@ public class PurpurWorldConfig { @@ -648,8 +648,8 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 + cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); } - public boolean creeperRidable = false; -@@ -737,6 +751,7 @@ public class PurpurWorldConfig { + public boolean creakingRidable = false; +@@ -750,6 +764,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -657,7 +657,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -752,6 +767,7 @@ public class PurpurWorldConfig { +@@ -765,6 +780,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -665,7 +665,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean drownedRidable = false; -@@ -882,6 +898,7 @@ public class PurpurWorldConfig { +@@ -895,6 +911,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; @@ -673,7 +673,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -894,17 +911,20 @@ public class PurpurWorldConfig { +@@ -907,17 +924,20 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -694,7 +694,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean ghastRidable = false; -@@ -979,12 +999,14 @@ public class PurpurWorldConfig { +@@ -992,12 +1012,14 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; @@ -709,7 +709,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean guardianRidable = false; -@@ -1008,6 +1030,7 @@ public class PurpurWorldConfig { +@@ -1021,6 +1043,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; @@ -717,7 +717,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1019,6 +1042,7 @@ public class PurpurWorldConfig { +@@ -1032,6 +1055,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); @@ -725,7 +725,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean horseRidableInWater = false; -@@ -1028,6 +1052,7 @@ public class PurpurWorldConfig { +@@ -1041,6 +1065,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -733,7 +733,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1043,6 +1068,7 @@ public class PurpurWorldConfig { +@@ -1056,6 +1081,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -741,7 +741,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean huskRidable = false; -@@ -1126,6 +1152,7 @@ public class PurpurWorldConfig { +@@ -1139,6 +1165,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -749,7 +749,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1143,6 +1170,7 @@ public class PurpurWorldConfig { +@@ -1156,6 +1183,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -757,7 +757,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean magmaCubeRidable = false; -@@ -1172,6 +1200,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1213,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; @@ -765,7 +765,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1183,6 +1212,7 @@ public class PurpurWorldConfig { +@@ -1196,6 +1225,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); @@ -773,7 +773,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean muleRidableInWater = false; -@@ -1192,6 +1222,7 @@ public class PurpurWorldConfig { +@@ -1205,6 +1235,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -781,7 +781,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1207,6 +1238,7 @@ public class PurpurWorldConfig { +@@ -1220,6 +1251,7 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -789,7 +789,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean ocelotRidable = false; -@@ -1214,6 +1246,7 @@ public class PurpurWorldConfig { +@@ -1227,6 +1259,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; @@ -797,7 +797,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1225,6 +1258,7 @@ public class PurpurWorldConfig { +@@ -1238,6 +1271,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); @@ -805,7 +805,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean pandaRidable = false; -@@ -1232,6 +1266,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1279,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; @@ -813,7 +813,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1243,6 +1278,7 @@ public class PurpurWorldConfig { +@@ -1256,6 +1291,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); @@ -821,7 +821,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean parrotRidable = false; -@@ -1329,6 +1365,7 @@ public class PurpurWorldConfig { +@@ -1342,6 +1378,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; @@ -829,7 +829,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1341,6 +1378,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1391,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -837,7 +837,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean piglinRidable = false; -@@ -1404,6 +1442,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1455,7 @@ public class PurpurWorldConfig { public double polarBearScale = 1.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -845,7 +845,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1418,6 +1457,7 @@ public class PurpurWorldConfig { +@@ -1431,6 +1470,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.getValue(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -853,7 +853,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean pufferfishRidable = false; -@@ -1443,6 +1483,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1496,7 @@ public class PurpurWorldConfig { public double rabbitScale = 1.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -861,7 +861,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1456,6 +1497,7 @@ public class PurpurWorldConfig { +@@ -1469,6 +1510,7 @@ public class PurpurWorldConfig { rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -869,7 +869,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean ravagerRidable = false; -@@ -1497,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1552,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; @@ -877,7 +877,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1508,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1521,6 +1564,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); @@ -885,7 +885,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean shulkerRidable = false; -@@ -1644,12 +1688,14 @@ public class PurpurWorldConfig { +@@ -1657,12 +1701,14 @@ public class PurpurWorldConfig { public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; @@ -900,7 +900,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean squidRidable = false; -@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { +@@ -1728,6 +1774,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; @@ -908,7 +908,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1726,6 +1773,7 @@ public class PurpurWorldConfig { +@@ -1739,6 +1786,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); @@ -916,7 +916,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean tadpoleRidable = false; -@@ -1746,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1759,6 +1807,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -924,7 +924,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1763,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1776,6 +1825,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); @@ -932,7 +932,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean tropicalFishRidable = false; -@@ -1786,6 +1836,7 @@ public class PurpurWorldConfig { +@@ -1799,6 +1849,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; @@ -940,7 +940,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1797,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1810,6 +1861,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); @@ -948,7 +948,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean vexRidable = false; -@@ -1828,6 +1880,7 @@ public class PurpurWorldConfig { +@@ -1841,6 +1893,7 @@ public class PurpurWorldConfig { public double villagerTemptRange = 10.0D; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -956,7 +956,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1843,6 +1896,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1909,7 @@ public class PurpurWorldConfig { villagerTemptRange = getDouble("mobs.villager.attributes.tempt_range", villagerTemptRange); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -964,7 +964,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 } public boolean vindicatorRidable = false; -@@ -1967,6 +2021,7 @@ public class PurpurWorldConfig { +@@ -1980,6 +2034,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -972,7 +972,7 @@ index 62791c5dc87b1c392db4eaf2359c6625e1bff8e5..ffe18a49ecceee710843d9f32688adc8 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1978,6 +2033,7 @@ public class PurpurWorldConfig { +@@ -1991,6 +2046,7 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index bac1f521b..6106974f8 100644 --- a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 8933b1f16617f0373cc99f93254533cc7d1e923f..02336ee7a002a620cd76570c84d1d531 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07e997fd9adb318820e6acafc781a8bfa9d2d0d8..5e3240a67fac56631b5611176d9bf8fd426ad97b 100644 +index c6f4b6e14616aed688269c56aa9ddf11f097abaf..cdcc44e381dee9189f951e3f1984272b0f0f60b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -849,6 +849,7 @@ public class PurpurWorldConfig { +@@ -862,6 +862,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 07e997fd9adb318820e6acafc781a8bfa9d2d0d8..5e3240a67fac56631b5611176d9bf8fd private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -861,6 +862,7 @@ public class PurpurWorldConfig { +@@ -874,6 +875,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch b/patches/server/0104-Snow-Golem-rate-of-fire-config.patch index 592d7f3ab..d49b96404 100644 --- a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0104-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index bfdb0c52db44e7cc4f37fd42a22c8dae2cc28fac..3f97118c8ce4f4e9a5f2a2fc3acdc68a 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 db63c982a19e8e95f4601dadc17cd5f52f29253a..60c89f3e4cbf5b02479dacd21ebe61ef41bc3478 100644 +index 3bd6931d3b19bd9687cdaee2b245cd3f2e9df0bc..dec46168df0ca009bcc0a1abe3ff6f47f3d7a66e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1686,6 +1686,10 @@ public class PurpurWorldConfig { +@@ -1699,6 +1699,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public double snowGolemScale = 1.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index db63c982a19e8e95f4601dadc17cd5f52f29253a..60c89f3e4cbf5b02479dacd21ebe61ef private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1699,6 +1703,10 @@ public class PurpurWorldConfig { +@@ -1712,6 +1716,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemScale = Mth.clamp(getDouble("mobs.snow_golem.attributes.scale", snowGolemScale), 0.0625D, 16.0D); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 2b077f6cf..2c61c7334 100644 --- a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1f596596407a3b448d3e02fc929fca64644e6e2..35341a19536fbc1456e7a81d6d768a2d7abfae9c 100644 +index dec46168df0ca009bcc0a1abe3ff6f47f3d7a66e..53a740b2d85afc1fc09f91037aaff8b7e1caf5ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1907,6 +1907,8 @@ public class PurpurWorldConfig { +@@ -1920,6 +1920,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index b1f596596407a3b448d3e02fc929fca64644e6e2..35341a19536fbc1456e7a81d6d768a2d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1923,6 +1925,8 @@ public class PurpurWorldConfig { +@@ -1936,6 +1938,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/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 3d9ddd0e2..f8ee4b90c 100644 --- a/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 650f9e1ca3a5ddec5123133c9604f33140e948a8..cb47b15d197b1167dcbac1b989903bbf } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35341a19536fbc1456e7a81d6d768a2d7abfae9c..a68eacc7e5c6a16e4c7f3ab084c097b02294616e 100644 +index 53a740b2d85afc1fc09f91037aaff8b7e1caf5ea..09bf59c95f57f5beb718e74d99a6399317cf1222 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2176,6 +2176,7 @@ public class PurpurWorldConfig { +@@ -2189,6 +2189,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 35341a19536fbc1456e7a81d6d768a2d7abfae9c..a68eacc7e5c6a16e4c7f3ab084c097b0 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2191,5 +2192,6 @@ public class PurpurWorldConfig { +@@ -2204,5 +2205,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/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch index 83e3539e6..9d983622e 100644 --- a/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,10 +182,10 @@ index ecd33b4add46acbe4e4f8879c0601220423d66ca..1506a8c0fa490726eb4a4ae14f3aa194 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a68eacc7e5c6a16e4c7f3ab084c097b02294616e..c39156bd01e030b06ce1eff68808a97f0371a02c 100644 +index 09bf59c95f57f5beb718e74d99a6399317cf1222..ece3de874b4ad6dd9f17190281dcad2eab6a3097 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2051,6 +2051,8 @@ public class PurpurWorldConfig { +@@ -2064,6 +2064,8 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -194,7 +194,7 @@ index a68eacc7e5c6a16e4c7f3ab084c097b02294616e..c39156bd01e030b06ce1eff68808a97f public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -2063,6 +2065,8 @@ public class PurpurWorldConfig { +@@ -2076,6 +2078,8 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0109-Configurable-default-collar-color.patch b/patches/server/0109-Configurable-default-collar-color.patch index 95d6e1f6d..71d0d8c21 100644 --- a/patches/server/0109-Configurable-default-collar-color.patch +++ b/patches/server/0109-Configurable-default-collar-color.patch @@ -43,7 +43,7 @@ index 34ca92be146bec3d2f6e46f473c3e68b0a97b168..89566a88a98af2e4ec2b062ed12d4828 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c39156bd01e030b06ce1eff68808a97f0371a02c..434310452cb21a83fc6ed03047fc3ac1f897bf46 100644 +index ece3de874b4ad6dd9f17190281dcad2eab6a3097..8caef74b83984c6351f7366376b64be50b50a41c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -619,6 +619,7 @@ public class PurpurWorldConfig { @@ -66,7 +66,7 @@ index c39156bd01e030b06ce1eff68808a97f0371a02c..434310452cb21a83fc6ed03047fc3ac1 } public boolean caveSpiderRidable = false; -@@ -2051,6 +2057,7 @@ public class PurpurWorldConfig { +@@ -2064,6 +2070,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -74,7 +74,7 @@ index c39156bd01e030b06ce1eff68808a97f0371a02c..434310452cb21a83fc6ed03047fc3ac1 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -2065,6 +2072,11 @@ public class PurpurWorldConfig { +@@ -2078,6 +2085,11 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0110-Phantom-flames-on-swoop.patch b/patches/server/0110-Phantom-flames-on-swoop.patch index 82957e4a7..d4e5220ef 100644 --- a/patches/server/0110-Phantom-flames-on-swoop.patch +++ b/patches/server/0110-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 987b860f85a1be3159233fb3291773792d291348..39ae23d4942178ce95d4c06e676545aa @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 57a5631a139251ae23592c10b082ab738f5cbb0b..7e32f0ec92b9309ca61a0c773d75b996768d3b74 100644 +index 8caef74b83984c6351f7366376b64be50b50a41c..739402d4e7b2b99ced75f62df33e4f4b4b9bdd6c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1348,6 +1348,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1361,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 57a5631a139251ae23592c10b082ab738f5cbb0b..7e32f0ec92b9309ca61a0c773d75b996 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1381,6 +1382,7 @@ public class PurpurWorldConfig { +@@ -1394,6 +1395,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/0113-Striders-give-saddle-back.patch b/patches/server/0113-Striders-give-saddle-back.patch index 1a8672097..7ee3e1d5f 100644 --- a/patches/server/0113-Striders-give-saddle-back.patch +++ b/patches/server/0113-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 0cc49b0a600a5e6fb4fc21e698e3a5fef5996df1..bb2283fa9a21d7fc609f0a914cdb8b13 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 bae2bb894cc068cbf738849b9e46ce8d8b78f919..cd61cf137bfe39633414c59beaf7e4fb303fa2f1 100644 +index 012bdd66052eb30a185804a36e4cbde323bb1d68..c0b9a7a7cd1e4acf151b12d308627d4ff2202018 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1801,6 +1801,7 @@ public class PurpurWorldConfig { +@@ -1814,6 +1814,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index bae2bb894cc068cbf738849b9e46ce8d8b78f919..cd61cf137bfe39633414c59beaf7e4fb private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1813,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1826,6 +1827,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch index 2908aa227..2306b9343 100644 --- a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch @@ -382,7 +382,7 @@ index bae4931fff0db56aa125248e17b29f7c2557221f..a265c5bf1a4d6f3c84cad20f9b3c285d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee17184288 100644 +index 19c6572a82de81b5a3aacad4bd77878d6c21ddc8..4f31d65962618a29b0a52ec7c51fba2267d63a05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -121,6 +121,9 @@ public class PurpurWorldConfig { @@ -442,7 +442,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public int waterInfiniteRequiredSources = 2; -@@ -745,6 +760,7 @@ public class PurpurWorldConfig { +@@ -758,6 +773,7 @@ public class PurpurWorldConfig { public double creeperScale = 1.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -450,7 +450,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -758,6 +774,7 @@ public class PurpurWorldConfig { +@@ -771,6 +787,7 @@ public class PurpurWorldConfig { creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -458,7 +458,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean dolphinRidable = false; -@@ -858,6 +875,7 @@ public class PurpurWorldConfig { +@@ -871,6 +888,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -466,7 +466,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -874,6 +892,7 @@ public class PurpurWorldConfig { +@@ -887,6 +905,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -474,7 +474,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean endermanRidable = false; -@@ -883,6 +902,7 @@ public class PurpurWorldConfig { +@@ -896,6 +915,7 @@ public class PurpurWorldConfig { public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -482,7 +482,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -896,6 +916,7 @@ public class PurpurWorldConfig { +@@ -909,6 +929,7 @@ public class PurpurWorldConfig { endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -490,7 +490,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean endermiteRidable = false; -@@ -921,6 +942,7 @@ public class PurpurWorldConfig { +@@ -934,6 +955,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; @@ -498,7 +498,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -932,6 +954,7 @@ public class PurpurWorldConfig { +@@ -945,6 +967,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); @@ -506,7 +506,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean foxRidable = false; -@@ -941,6 +964,7 @@ public class PurpurWorldConfig { +@@ -954,6 +977,7 @@ public class PurpurWorldConfig { public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -514,7 +514,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -954,6 +978,7 @@ public class PurpurWorldConfig { +@@ -967,6 +991,7 @@ public class PurpurWorldConfig { foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -522,7 +522,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean frogRidable = false; -@@ -1430,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1443,6 +1468,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; @@ -530,7 +530,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1441,6 +1467,7 @@ public class PurpurWorldConfig { +@@ -1454,6 +1480,7 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); @@ -538,7 +538,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean piglinBruteRidable = false; -@@ -1466,6 +1493,7 @@ public class PurpurWorldConfig { +@@ -1479,6 +1506,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; @@ -546,7 +546,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1477,6 +1505,7 @@ public class PurpurWorldConfig { +@@ -1490,6 +1518,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); @@ -554,7 +554,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean polarBearRidable = false; -@@ -1528,6 +1557,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1570,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -562,7 +562,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1542,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1555,6 +1585,7 @@ 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); @@ -570,7 +570,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean ravagerRidable = false; -@@ -1549,6 +1580,7 @@ public class PurpurWorldConfig { +@@ -1562,6 +1593,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; @@ -578,7 +578,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1560,6 +1592,7 @@ public class PurpurWorldConfig { +@@ -1573,6 +1605,7 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); @@ -586,7 +586,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean salmonRidable = false; -@@ -1584,6 +1617,7 @@ public class PurpurWorldConfig { +@@ -1597,6 +1630,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; @@ -594,7 +594,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1596,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1609,6 +1643,7 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -602,7 +602,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean shulkerRidable = false; -@@ -1623,6 +1658,7 @@ public class PurpurWorldConfig { +@@ -1636,6 +1671,7 @@ public class PurpurWorldConfig { public double silverfishScale = 1.0D; public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; @@ -610,7 +610,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1636,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1649,6 +1685,7 @@ public class PurpurWorldConfig { silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D); silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); @@ -618,7 +618,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean skeletonRidable = false; -@@ -1716,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1729,6 +1766,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -626,7 +626,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1733,6 +1771,7 @@ public class PurpurWorldConfig { +@@ -1746,6 +1784,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); @@ -634,7 +634,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean snifferRidable = false; -@@ -1937,6 +1976,7 @@ public class PurpurWorldConfig { +@@ -1950,6 +1989,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -642,7 +642,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1955,6 +1995,7 @@ public class PurpurWorldConfig { +@@ -1968,6 +2008,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); @@ -650,7 +650,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean vindicatorRidable = false; -@@ -2036,6 +2077,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2090,7 @@ public class PurpurWorldConfig { public double witherScale = 1.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -658,7 +658,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2054,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -2067,6 +2109,7 @@ public class PurpurWorldConfig { witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -666,7 +666,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee } public boolean witherSkeletonRidable = false; -@@ -2132,6 +2175,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2188,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -674,7 +674,7 @@ index 44db4f1f86758535300cb88941aa466990f55f92..fbbf7153606fc3ccad12ca4a164436ee private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2148,6 +2192,7 @@ public class PurpurWorldConfig { +@@ -2161,6 +2205,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/0122-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch index bfb1e05c3..a0474c533 100644 --- a/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch @@ -142,7 +142,7 @@ index be74a5732bc24eb3c909d28b4ef46d5175d999d2..bcc6435c177189aa59a3fbe67795ae50 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData entityData) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index f78d3ef0913f90fb275a8067c4b0b8523a0eb964..c442b119f699449bdac73cb1b4c139f093ec2a96 100644 +index 3870803139f162793598cef8f2700e0940aeb66e..85cb838e8b31880468b02671dd4d04a5e1909e69 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -193,6 +193,11 @@ public class Fox extends Animal implements VariantHolder { @@ -286,7 +286,7 @@ index f43faa4a6918a442cfdb1553ce6a509f1f73e7ae..be78d703bab323f0e64e120172c220d3 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 2281f08f07ec4d820586883ef7378883344a4f27..1f25920b194b174dca78bb584671d35e769d547c 100644 +index d0ab026af1642b6b3094d37a0c994deb633da577..8e316da789cb7a8d4c630c71724a56d6159cf0ac 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -150,6 +150,11 @@ public class Rabbit extends Animal implements VariantHolder { @@ -334,7 +334,7 @@ index 8d94e1a33ac7748ded0f75212738ba13bd18d492..3f54b38a3182b116b80ef9ba53c160b3 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 59fe12a265523f3f1e3568216b703abcff27f4cc..0d6eca127532cf0bc2a4495df1fcd50e3d97f85e 100644 +index 6c12817e00125a3957df1a37a06a5c6a9406a11f..02cf5a92ff56ada1198e157e0f87f243ad65e488 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -118,7 +118,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -555,7 +555,7 @@ index b7eda8855bc7162566975849f9bae7f182ad801c..5ffb2ca8dd4cd1d32f7d239a767ac68d return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 0462718041e34bdc9fc3cdee1a2c9bd000686718..5f642aba559290011f2426858e2966352da1e6f4 100644 +index cb9f73605e5cfbbff9935340529a2daa782ed10b..9aeee3b61bb33d378d7ace77c1cb02bbb081790a 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -191,6 +191,11 @@ public class EnderDragon extends Mob implements Enemy { @@ -571,7 +571,7 @@ index 0462718041e34bdc9fc3cdee1a2c9bd000686718..5f642aba559290011f2426858e296635 return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 6b499d59ab27869a74ee1e3b3f777cbda9e4d53b..1f9d7c85f2ee5f6653e11457e19c03e6fa0419d9 100644 +index 1786d3978c8a9d66dd16b667de4d4604c35231db..6124c72380f2a95ad70b453a1e4f1b416bc8bfe6 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -120,6 +120,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -673,7 +673,7 @@ index 1cfb85a72e270a953c13102490dc38f3dbfb76d1..a0c76ffa16edffdfa75fd539e58282d3 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index fb55f4c2523fb1573b6dcb7dc6c8f769b7e770a2..491d63bd648c0f0a82c2e9f8a899b352b553a697 100644 +index 025f6b327b63f4e71490f01cd22fc043400a882a..6d437ddf91444a4dc1bbbfa0d02783d023047497 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -92,7 +92,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -711,7 +711,7 @@ index 89f808dd5470c9d94a0cd6b690b9711136027f8a..e8b7e291c96ff6856832fc6612f792fc protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 371a3db041ae8990c0a2a7c5e1702ba83712fcdc..64db1748d25db5d52f182e05a9d3ac1e04d4fe6a 100644 +index 63ddac9c83d70107dace11fe1f033d7e17b1541a..2a0561d0e0cfc6e732c2342e12a1af4dfa73befe 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -76,6 +76,11 @@ public class Evoker extends SpellcasterIllager { @@ -855,7 +855,7 @@ index 3613b82bef45dddf7e356deaee6353c48455e33a..b85579065ac006589120d4d7ed83d355 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 83fcf23077721fcc976fc0cd3a4a18ba4f05e1e5..159b542361debf397bbd24ac9a4f037e584de876 100644 +index f257258473e036ae60d9463ae97d848192a61af7..48c66c97784f7c81029a81efb63eb6da4a2d88c2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -106,6 +106,11 @@ public class Ravager extends Raider { @@ -887,7 +887,7 @@ index ebc50e517093329dc5c76cdcd3b6d7e7e66bf55f..4a04ade0cfeac23afbac1a5ef7dfff0d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 01c4627c4879389bcd0a328e00c0471ef38f60d6..a7f4982d3ac1d580ee4b82297111bee106c3108a 100644 +index 9c58d01fc7ba148d4e5d50731eaee71a6c914f28..02b30999eb96aa376ec940885fde8f7b543bfdfa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -69,6 +69,11 @@ public class Silverfish extends Monster { @@ -1135,7 +1135,7 @@ index 0220fb517d99e8c9629d191eb554799a1dc8d7bc..f3f77e5e219d6a3a831ac9b1a642e77e public boolean canBeLeashed() { return true; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 18d4a90bef46522e12e79e03c466910fbb703f6d..334d7a657e883de6ea81b6f88876f5ca45c43d7b 100644 +index c58fe83deb0d5cb9e4f5700b75b7073ff261f051..6cef7eb84ddb02a273024f6b30bc7e33712d742a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -119,6 +119,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1199,7 +1199,7 @@ index 738df68a988a8ba428bf2c74a12cb8d9dd525bee..116f47c7342dade1eaf0fabc62fb0ba2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd955ec836f 100644 +index 126d2689166579785735cf250ddf0838512ce81b..5480f6fbc3b3f99297ff4de83c6501fa2161714a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -549,12 +549,14 @@ public class PurpurWorldConfig { @@ -1343,8 +1343,8 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 + cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); } - public boolean creeperRidable = false; -@@ -783,6 +801,7 @@ public class PurpurWorldConfig { + public boolean creakingRidable = false; +@@ -796,6 +814,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1352,7 +1352,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -797,6 +816,7 @@ public class PurpurWorldConfig { +@@ -810,6 +829,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1360,7 +1360,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean dolphinRidable = false; -@@ -807,6 +827,7 @@ public class PurpurWorldConfig { +@@ -820,6 +840,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1368,7 +1368,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -821,6 +842,7 @@ public class PurpurWorldConfig { +@@ -834,6 +855,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1376,7 +1376,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean donkeyRidableInWater = false; -@@ -831,6 +853,7 @@ public class PurpurWorldConfig { +@@ -844,6 +866,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1384,7 +1384,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -847,6 +870,7 @@ public class PurpurWorldConfig { +@@ -860,6 +883,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1392,7 +1392,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean drownedRidable = false; -@@ -858,6 +882,7 @@ public class PurpurWorldConfig { +@@ -871,6 +895,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1400,7 +1400,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -873,12 +898,14 @@ public class PurpurWorldConfig { +@@ -886,12 +911,14 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1415,7 +1415,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -889,6 +916,7 @@ public class PurpurWorldConfig { +@@ -902,6 +929,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); @@ -1423,7 +1423,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean enderDragonRidable = false; -@@ -898,6 +926,7 @@ public class PurpurWorldConfig { +@@ -911,6 +939,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1431,7 +1431,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -915,6 +944,7 @@ public class PurpurWorldConfig { +@@ -928,6 +957,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1439,7 +1439,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean endermanRidable = false; -@@ -925,6 +955,7 @@ public class PurpurWorldConfig { +@@ -938,6 +968,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1447,7 +1447,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -939,6 +970,7 @@ public class PurpurWorldConfig { +@@ -952,6 +983,7 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1455,7 +1455,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean endermiteRidable = false; -@@ -946,6 +978,7 @@ public class PurpurWorldConfig { +@@ -959,6 +991,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; @@ -1463,7 +1463,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -957,6 +990,7 @@ public class PurpurWorldConfig { +@@ -970,6 +1003,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); @@ -1471,7 +1471,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean evokerRidable = false; -@@ -965,6 +999,7 @@ public class PurpurWorldConfig { +@@ -978,6 +1012,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; @@ -1479,7 +1479,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -977,6 +1012,7 @@ public class PurpurWorldConfig { +@@ -990,6 +1025,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1487,7 +1487,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean foxRidable = false; -@@ -987,6 +1023,7 @@ public class PurpurWorldConfig { +@@ -1000,6 +1036,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1495,7 +1495,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1001,6 +1038,7 @@ public class PurpurWorldConfig { +@@ -1014,6 +1051,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1503,7 +1503,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean frogRidable = false; -@@ -1022,6 +1060,7 @@ public class PurpurWorldConfig { +@@ -1035,6 +1073,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; @@ -1511,7 +1511,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1034,6 +1073,7 @@ public class PurpurWorldConfig { +@@ -1047,6 +1086,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); @@ -1519,7 +1519,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean giantRidable = false; -@@ -1047,6 +1087,7 @@ public class PurpurWorldConfig { +@@ -1060,6 +1100,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1527,7 +1527,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1068,6 +1109,7 @@ public class PurpurWorldConfig { +@@ -1081,6 +1122,7 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1535,7 +1535,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean glowSquidRidable = false; -@@ -1075,12 +1117,14 @@ public class PurpurWorldConfig { +@@ -1088,12 +1130,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; @@ -1550,7 +1550,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean goatRidable = false; -@@ -1089,6 +1133,7 @@ public class PurpurWorldConfig { +@@ -1102,6 +1146,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; public int goatBreedingTicks = 6000; @@ -1558,7 +1558,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1096,12 +1141,14 @@ public class PurpurWorldConfig { +@@ -1109,12 +1154,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); @@ -1573,7 +1573,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1112,6 +1159,7 @@ public class PurpurWorldConfig { +@@ -1125,6 +1172,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); @@ -1581,7 +1581,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean hoglinRidable = false; -@@ -1120,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1133,6 +1181,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; @@ -1589,7 +1589,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1132,6 +1181,7 @@ public class PurpurWorldConfig { +@@ -1145,6 +1194,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1597,7 +1597,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean horseRidableInWater = false; -@@ -1142,6 +1192,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1205,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1605,7 +1605,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1158,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1222,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1613,7 +1613,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean huskRidable = false; -@@ -1169,6 +1221,7 @@ public class PurpurWorldConfig { +@@ -1182,6 +1234,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1621,7 +1621,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1184,6 +1237,7 @@ public class PurpurWorldConfig { +@@ -1197,6 +1250,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1629,7 +1629,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean illusionerRidable = false; -@@ -1193,6 +1247,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1260,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; @@ -1637,7 +1637,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1210,6 +1265,7 @@ public class PurpurWorldConfig { +@@ -1223,6 +1278,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); @@ -1645,7 +1645,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean ironGolemRidable = false; -@@ -1218,6 +1274,7 @@ public class PurpurWorldConfig { +@@ -1231,6 +1287,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; @@ -1653,7 +1653,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1230,6 +1287,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1300,7 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); @@ -1661,7 +1661,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean llamaRidable = false; -@@ -1242,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1255,6 +1313,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1669,7 +1669,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1260,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1332,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1677,7 +1677,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean magmaCubeRidable = false; -@@ -1269,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1342,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1685,7 +1685,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1282,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1295,6 +1356,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1693,7 +1693,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean mooshroomRidable = false; -@@ -1290,6 +1352,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1365,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; @@ -1701,7 +1701,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1302,6 +1365,7 @@ public class PurpurWorldConfig { +@@ -1315,6 +1378,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1709,7 +1709,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean muleRidableInWater = false; -@@ -1312,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1325,6 +1389,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1717,7 +1717,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1328,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1341,6 +1406,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1725,7 +1725,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean ocelotRidable = false; -@@ -1336,6 +1402,7 @@ public class PurpurWorldConfig { +@@ -1349,6 +1415,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; @@ -1733,7 +1733,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1348,6 +1415,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1428,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1741,7 +1741,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean pandaRidable = false; -@@ -1356,6 +1424,7 @@ public class PurpurWorldConfig { +@@ -1369,6 +1437,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; @@ -1749,7 +1749,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1368,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1450,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1757,7 +1757,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean parrotRidable = false; -@@ -1376,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1389,6 +1459,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; @@ -1765,7 +1765,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1388,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1401,6 +1472,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); @@ -1773,7 +1773,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean phantomRidable = false; -@@ -1414,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1427,6 +1499,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1781,7 +1781,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1448,6 +1521,7 @@ public class PurpurWorldConfig { +@@ -1461,6 +1534,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); @@ -1789,7 +1789,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean pigRidable = false; -@@ -1457,6 +1531,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1544,7 @@ public class PurpurWorldConfig { public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1797,7 +1797,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1470,6 +1545,7 @@ public class PurpurWorldConfig { +@@ -1483,6 +1558,7 @@ public class PurpurWorldConfig { pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1805,7 +1805,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean piglinRidable = false; -@@ -1478,6 +1554,7 @@ public class PurpurWorldConfig { +@@ -1491,6 +1567,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; @@ -1813,7 +1813,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1490,6 +1567,7 @@ public class PurpurWorldConfig { +@@ -1503,6 +1580,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1821,7 +1821,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean piglinBruteRidable = false; -@@ -1497,6 +1575,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1588,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; @@ -1829,7 +1829,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1508,6 +1587,7 @@ public class PurpurWorldConfig { +@@ -1521,6 +1600,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); @@ -1837,7 +1837,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean pillagerRidable = false; -@@ -1516,6 +1596,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1609,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; @@ -1845,7 +1845,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1528,6 +1609,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1622,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1853,7 +1853,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean polarBearRidable = false; -@@ -1538,6 +1620,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1633,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1861,7 +1861,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1553,12 +1636,14 @@ public class PurpurWorldConfig { +@@ -1566,12 +1649,14 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.getValue(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1876,7 +1876,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1569,6 +1654,7 @@ public class PurpurWorldConfig { +@@ -1582,6 +1667,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); @@ -1884,7 +1884,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean rabbitRidable = false; -@@ -1580,6 +1666,7 @@ public class PurpurWorldConfig { +@@ -1593,6 +1679,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1892,7 +1892,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1595,6 +1682,7 @@ public class PurpurWorldConfig { +@@ -1608,6 +1695,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); @@ -1900,7 +1900,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean ravagerRidable = false; -@@ -1603,6 +1691,7 @@ public class PurpurWorldConfig { +@@ -1616,6 +1704,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; @@ -1908,7 +1908,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1615,12 +1704,14 @@ public class PurpurWorldConfig { +@@ -1628,12 +1717,14 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1923,7 +1923,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1631,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1735,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); @@ -1931,7 +1931,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean sheepRidable = false; -@@ -1640,6 +1732,7 @@ public class PurpurWorldConfig { +@@ -1653,6 +1745,7 @@ public class PurpurWorldConfig { public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1939,7 +1939,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1653,6 +1746,7 @@ public class PurpurWorldConfig { +@@ -1666,6 +1759,7 @@ public class PurpurWorldConfig { sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1947,7 +1947,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean shulkerRidable = false; -@@ -1660,6 +1754,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1767,7 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; @@ -1955,7 +1955,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1671,6 +1766,7 @@ public class PurpurWorldConfig { +@@ -1684,6 +1779,7 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); @@ -1963,7 +1963,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean silverfishRidable = false; -@@ -1681,6 +1777,7 @@ public class PurpurWorldConfig { +@@ -1694,6 +1790,7 @@ public class PurpurWorldConfig { public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; @@ -1971,7 +1971,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1695,6 +1792,7 @@ public class PurpurWorldConfig { +@@ -1708,6 +1805,7 @@ public class PurpurWorldConfig { silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1979,7 +1979,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean skeletonRidable = false; -@@ -1702,6 +1800,7 @@ public class PurpurWorldConfig { +@@ -1715,6 +1813,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; @@ -1987,7 +1987,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1713,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1825,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); @@ -1995,7 +1995,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean skeletonHorseRidable = false; -@@ -1724,6 +1824,7 @@ public class PurpurWorldConfig { +@@ -1737,6 +1837,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -2003,7 +2003,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1740,6 +1841,7 @@ public class PurpurWorldConfig { +@@ -1753,6 +1854,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); @@ -2011,7 +2011,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean slimeRidable = false; -@@ -1749,6 +1851,7 @@ public class PurpurWorldConfig { +@@ -1762,6 +1864,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2019,7 +2019,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1762,6 +1865,7 @@ public class PurpurWorldConfig { +@@ -1775,6 +1878,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2027,7 +2027,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean snowGolemRidable = false; -@@ -1776,6 +1880,7 @@ public class PurpurWorldConfig { +@@ -1789,6 +1893,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2035,7 +2035,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1794,6 +1899,7 @@ public class PurpurWorldConfig { +@@ -1807,6 +1912,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); @@ -2043,7 +2043,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean snifferRidable = false; -@@ -1818,6 +1924,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1937,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2051,7 +2051,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1831,6 +1938,7 @@ public class PurpurWorldConfig { +@@ -1844,6 +1951,7 @@ 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); @@ -2059,7 +2059,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean spiderRidable = false; -@@ -1838,6 +1946,7 @@ public class PurpurWorldConfig { +@@ -1851,6 +1959,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; @@ -2067,7 +2067,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1849,6 +1958,7 @@ public class PurpurWorldConfig { +@@ -1862,6 +1971,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); @@ -2075,7 +2075,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean strayRidable = false; -@@ -1856,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1979,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; @@ -2083,7 +2083,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1867,6 +1978,7 @@ public class PurpurWorldConfig { +@@ -1880,6 +1991,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); @@ -2091,7 +2091,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean striderRidable = false; -@@ -1876,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +2001,7 @@ public class PurpurWorldConfig { public double striderScale = 1.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2099,7 +2099,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1889,6 +2002,7 @@ public class PurpurWorldConfig { +@@ -1902,6 +2015,7 @@ public class PurpurWorldConfig { striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2107,7 +2107,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean tadpoleRidable = false; -@@ -1910,6 +2024,7 @@ public class PurpurWorldConfig { +@@ -1923,6 +2037,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2115,7 +2115,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1928,12 +2043,14 @@ public class PurpurWorldConfig { +@@ -1941,12 +2056,14 @@ 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); @@ -2130,7 +2130,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1944,6 +2061,7 @@ public class PurpurWorldConfig { +@@ -1957,6 +2074,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); @@ -2138,7 +2138,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean turtleRidable = false; -@@ -1952,6 +2070,7 @@ public class PurpurWorldConfig { +@@ -1965,6 +2083,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; @@ -2146,7 +2146,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1964,6 +2083,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2096,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2154,7 +2154,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean vexRidable = false; -@@ -1972,6 +2092,7 @@ public class PurpurWorldConfig { +@@ -1985,6 +2105,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; @@ -2162,7 +2162,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1984,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -1997,6 +2118,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); @@ -2170,7 +2170,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean villagerRidable = false; -@@ -1999,6 +2121,7 @@ public class PurpurWorldConfig { +@@ -2012,6 +2134,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2178,7 +2178,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2018,6 +2141,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2154,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); @@ -2186,7 +2186,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean vindicatorRidable = false; -@@ -2026,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2039,6 +2163,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2194,7 +2194,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2038,6 +2163,7 @@ public class PurpurWorldConfig { +@@ -2051,6 +2176,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2202,7 +2202,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean wanderingTraderRidable = false; -@@ -2048,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2187,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public double wanderingTraderTemptRange = 10.0D; public boolean wanderingTraderCanBeLeashed = false; @@ -2210,7 +2210,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2062,6 +2189,7 @@ public class PurpurWorldConfig { +@@ -2075,6 +2202,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderTemptRange = getDouble("mobs.wandering_trader.attributes.tempt_range", wanderingTraderTemptRange); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2218,7 +2218,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean wardenRidable = false; -@@ -2078,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2091,6 +2219,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; @@ -2226,7 +2226,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2089,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2102,6 +2231,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); @@ -2234,7 +2234,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean witherRidable = false; -@@ -2100,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2243,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2242,7 +2242,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2119,6 +2250,7 @@ public class PurpurWorldConfig { +@@ -2132,6 +2263,7 @@ 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); @@ -2250,7 +2250,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean witherSkeletonRidable = false; -@@ -2126,6 +2258,7 @@ public class PurpurWorldConfig { +@@ -2139,6 +2271,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; @@ -2258,7 +2258,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2137,6 +2270,7 @@ public class PurpurWorldConfig { +@@ -2150,6 +2283,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); @@ -2266,7 +2266,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean wolfRidable = false; -@@ -2148,6 +2282,7 @@ public class PurpurWorldConfig { +@@ -2161,6 +2295,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2274,7 +2274,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2167,6 +2302,7 @@ public class PurpurWorldConfig { +@@ -2180,6 +2315,7 @@ 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); @@ -2282,7 +2282,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean zoglinRidable = false; -@@ -2174,6 +2310,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2323,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; @@ -2290,7 +2290,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2185,6 +2322,7 @@ public class PurpurWorldConfig { +@@ -2198,6 +2335,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); @@ -2298,7 +2298,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean zombieRidable = false; -@@ -2198,6 +2336,7 @@ public class PurpurWorldConfig { +@@ -2211,6 +2349,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2306,7 +2306,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2215,6 +2354,7 @@ public class PurpurWorldConfig { +@@ -2228,6 +2367,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); @@ -2314,7 +2314,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean zombieHorseRidable = false; -@@ -2227,6 +2367,7 @@ public class PurpurWorldConfig { +@@ -2240,6 +2380,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2322,7 +2322,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2244,6 +2385,7 @@ public class PurpurWorldConfig { +@@ -2257,6 +2398,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); @@ -2330,7 +2330,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean zombieVillagerRidable = false; -@@ -2255,6 +2397,7 @@ public class PurpurWorldConfig { +@@ -2268,6 +2410,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2338,7 +2338,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2270,6 +2413,7 @@ public class PurpurWorldConfig { +@@ -2283,6 +2426,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); @@ -2346,7 +2346,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 } public boolean zombifiedPiglinRidable = false; -@@ -2282,6 +2426,7 @@ public class PurpurWorldConfig { +@@ -2295,6 +2439,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2354,7 +2354,7 @@ index a749f64a2b98025bbbc5f3b6b784a29557acda8c..b54607f98cd348ced9f7c27f9e8f7bd9 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2298,5 +2443,6 @@ public class PurpurWorldConfig { +@@ -2311,5 +2456,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/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index eba4c4e22..b5ab5370a 100644 --- a/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 5f642aba559290011f2426858e2966352da1e6f4..e0e76b5abdb9650c3c50a3c8b49336977982fe67 100644 +index 9aeee3b61bb33d378d7ace77c1cb02bbb081790a..c9e3bb91ff506a35551a58f469ad2849e6058668 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -1155,6 +1155,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -17,7 +17,7 @@ index 5f642aba559290011f2426858e2966352da1e6f4..e0e76b5abdb9650c3c50a3c8b4933697 } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 1f9d7c85f2ee5f6653e11457e19c03e6fa0419d9..8ecb72f6cd12d1e12f5ae9b240ccd6d9e4f6c248 100644 +index 6124c72380f2a95ad70b453a1e4f1b416bc8bfe6..d211339a43c38d6298fc2c5d40a9f8324e7cca51 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -729,6 +729,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -29,10 +29,10 @@ index 1f9d7c85f2ee5f6653e11457e19c03e6fa0419d9..8ecb72f6cd12d1e12f5ae9b240ccd6d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4a913b089a4867cbfe6786f1eaa9682dde9ca98..12c74e91648779ec12d1ffd31ce2da478b970640 100644 +index 5b9ca029c3dd765fe52a31e4c796b28e3c22302a..f0d75a5f4f9d1fc9e8e33be1412ef4c8c96573b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -966,6 +966,7 @@ public class PurpurWorldConfig { +@@ -979,6 +979,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index a4a913b089a4867cbfe6786f1eaa9682dde9ca98..12c74e91648779ec12d1ffd31ce2da47 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -984,6 +985,7 @@ public class PurpurWorldConfig { +@@ -997,6 +998,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index a4a913b089a4867cbfe6786f1eaa9682dde9ca98..12c74e91648779ec12d1ffd31ce2da47 } public boolean endermanRidable = false; -@@ -2270,6 +2272,7 @@ public class PurpurWorldConfig { +@@ -2283,6 +2285,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index a4a913b089a4867cbfe6786f1eaa9682dde9ca98..12c74e91648779ec12d1ffd31ce2da47 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2290,6 +2293,7 @@ public class PurpurWorldConfig { +@@ -2303,6 +2306,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/0131-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch index b633ff036..6e327e279 100644 --- a/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 491d63bd648c0f0a82c2e9f8a899b352b553a697..a3cf68f3a43fb525112eaa669f2766b562bda535 100644 +index 6d437ddf91444a4dc1bbbfa0d02783d023047497..7eb57c02515045dbc569c6b1da412c9fb398bd28 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -132,7 +132,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -18,10 +18,10 @@ index 491d63bd648c0f0a82c2e9f8a899b352b553a697..a3cf68f3a43fb525112eaa669f2766b5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3397c9fbdad9e7c6023c013d38e5061663b4434a..27d10afc896600b0e4f3a696367d66821eddc033 100644 +index dea04d8f0e6142b529a79791325472f4a5e98c48..6e199b1948fa7f4ba79fe21586aac94eabe189d7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1017,6 +1017,8 @@ public class PurpurWorldConfig { +@@ -1030,6 +1030,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 3397c9fbdad9e7c6023c013d38e5061663b4434a..27d10afc896600b0e4f3a696367d6682 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1026,12 +1028,18 @@ public class PurpurWorldConfig { +@@ -1039,12 +1041,18 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index b22ab6bfd..f1136a546 100644 --- a/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index a3cf68f3a43fb525112eaa669f2766b562bda535..737c3367faee2286984c8e7d161b128d7b6632a5 100644 +index 7eb57c02515045dbc569c6b1da412c9fb398bd28..6f3ccd2d437bacf7a7e828b62b51533eebc82b02 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -260,7 +260,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,10 +20,10 @@ index a3cf68f3a43fb525112eaa669f2766b562bda535..737c3367faee2286984c8e7d161b128d event.setCancelled(!shouldAttack); return event.callEvent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27d10afc896600b0e4f3a696367d66821eddc033..55b3b2c781215c1c6e3caab72fa7e31706a046d4 100644 +index 6e199b1948fa7f4ba79fe21586aac94eabe189d7..a5bf37a0e9e5b818b1213bfe5e54bd3e4f08644d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1019,6 +1019,7 @@ public class PurpurWorldConfig { +@@ -1032,6 +1032,7 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -31,7 +31,7 @@ index 27d10afc896600b0e4f3a696367d66821eddc033..55b3b2c781215c1c6e3caab72fa7e317 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1040,6 +1041,7 @@ public class PurpurWorldConfig { +@@ -1053,6 +1054,7 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0134-Config-to-disable-Llama-caravans.patch b/patches/server/0134-Config-to-disable-Llama-caravans.patch index c4180a384..916824e9f 100644 --- a/patches/server/0134-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0134-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 0b81415233df20fe7143c87ee964a6a1f490476f..227638f369a6581f37e892fa457e2d67 this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28853730bd4df2978b840a7aaa891c8a9cc96189..661c2ed59e1ce1d25122c64bb8cf91bd896d859c 100644 +index 418aa977435ac32b0d4777ea75a1ec3aea52411c..66c5250d3a4d838e5437af829f4adf67d149652c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1373,6 +1373,7 @@ public class PurpurWorldConfig { +@@ -1386,6 +1386,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 28853730bd4df2978b840a7aaa891c8a9cc96189..661c2ed59e1ce1d25122c64bb8cf91bd private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1392,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1406,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch index a070628d3..5c0251292 100644 --- a/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch @@ -51,10 +51,10 @@ index 78da4454fb6eccb1d17d1f0cb19013883437a23e..0bce10c1cbf9f1788817a2834ec0efa0 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 661c2ed59e1ce1d25122c64bb8cf91bd896d859c..c31d4deff4e91057fc1b5d93bfd1b59c012ce6e7 100644 +index 66c5250d3a4d838e5437af829f4adf67d149652c..062b2805f55e77eb3d451332a4a2f902fd144a29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -862,6 +862,7 @@ public class PurpurWorldConfig { +@@ -875,6 +875,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -62,7 +62,7 @@ index 661c2ed59e1ce1d25122c64bb8cf91bd896d859c..c31d4deff4e91057fc1b5d93bfd1b59c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -877,6 +878,7 @@ public class PurpurWorldConfig { +@@ -890,6 +891,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch index ff455c862..ad0ffcb7d 100644 --- a/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 49484773e67eb84e7dadc993406edd6da568dcd5..3f7440eb164ea7593844de6c496ee1a9 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 33c679619ddb73642d546367debbe1bf13f0d716..27a5c78f37b46582402741f5943acd8d807655f2 100644 +index 062b2805f55e77eb3d451332a4a2f902fd144a29..a80f8bc0da3accf15062a1291fc23bdb8fe6eb11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1768,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1781,6 +1781,7 @@ public class PurpurWorldConfig { public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 33c679619ddb73642d546367debbe1bf13f0d716..27a5c78f37b46582402741f5943acd8d private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1781,6 +1782,23 @@ public class PurpurWorldConfig { +@@ -1794,6 +1795,23 @@ public class PurpurWorldConfig { ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0139-Add-config-for-villager-trading.patch b/patches/server/0139-Add-config-for-villager-trading.patch index 38dec1748..83c77eb63 100644 --- a/patches/server/0139-Add-config-for-villager-trading.patch +++ b/patches/server/0139-Add-config-for-villager-trading.patch @@ -32,10 +32,10 @@ index 116f47c7342dade1eaf0fabc62fb0ba2edd4c578..ba7856973d22c031910df4ec2a84d101 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e7636ba4ff1dec83567c21ece380d593cf0fbf6..961b4e5348abe34a333f842defd00b707a8227bc 100644 +index 4ba1bda0efc475954ba281665179fab0ab0da8b7..7691c703e96165e1a670bd8ac4131c7dd075c517 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2223,6 +2223,7 @@ public class PurpurWorldConfig { +@@ -2236,6 +2236,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 5e7636ba4ff1dec83567c21ece380d593cf0fbf6..961b4e5348abe34a333f842defd00b70 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2243,6 +2244,7 @@ public class PurpurWorldConfig { +@@ -2256,6 +2257,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); @@ -51,7 +51,7 @@ index 5e7636ba4ff1dec83567c21ece380d593cf0fbf6..961b4e5348abe34a333f842defd00b70 } public boolean vindicatorRidable = false; -@@ -2276,6 +2278,7 @@ public class PurpurWorldConfig { +@@ -2289,6 +2291,7 @@ public class PurpurWorldConfig { public double wanderingTraderTemptRange = 10.0D; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 5e7636ba4ff1dec83567c21ece380d593cf0fbf6..961b4e5348abe34a333f842defd00b70 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2291,6 +2294,7 @@ public class PurpurWorldConfig { +@@ -2304,6 +2307,7 @@ public class PurpurWorldConfig { wanderingTraderTemptRange = getDouble("mobs.wandering_trader.attributes.tempt_range", wanderingTraderTemptRange); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0149-Piglin-portal-spawn-modifier.patch b/patches/server/0149-Piglin-portal-spawn-modifier.patch index 8c25d4a8d..02889e92c 100644 --- a/patches/server/0149-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0149-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index c00b13482ce3f603f1d85b9a5ad36b768de5a9f8..10e747edebd6463cdfcea592cec1c232 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f4fcc5a1a3419f0d0e9046ad070e1a81f257855b..fa3a059698ebb4d0e2bda13159c064f281753152 100644 +index d2fe41f8068fc0b5ecbca0cba8c9d3b2f34dd4c8..b002734db82852d8c2676c81980a5a1ab4795ac4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1700,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1713,7 @@ public class PurpurWorldConfig { public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index f4fcc5a1a3419f0d0e9046ad070e1a81f257855b..fa3a059698ebb4d0e2bda13159c064f2 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1713,6 +1714,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1727,7 @@ public class PurpurWorldConfig { piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0151-Config-for-wither-explosion-radius.patch b/patches/server/0151-Config-for-wither-explosion-radius.patch index fb0aef969..966505425 100644 --- a/patches/server/0151-Config-for-wither-explosion-radius.patch +++ b/patches/server/0151-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index e0f25b057b7b908a10038d9e9695a500aa883c75..e63b408594b5d2673148e39c1deafc85 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96de3a3d240c90905e25c9b7d851baf24ab30dbf..c3b837fc40c859098ef68bc8ff2b500b3d9dba92 100644 +index b002734db82852d8c2676c81980a5a1ab4795ac4..9520dba81ec967319056cfff911c2aa48d9260a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2401,6 +2401,7 @@ public class PurpurWorldConfig { +@@ -2414,6 +2414,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 96de3a3d240c90905e25c9b7d851baf24ab30dbf..c3b837fc40c859098ef68bc8ff2b500b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2422,6 +2423,7 @@ public class PurpurWorldConfig { +@@ -2435,6 +2436,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/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch index 95379adb1..f9a6652f7 100644 --- a/patches/server/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 0bce10c1cbf9f1788817a2834ec0efa04dd17752..d2de324f024d0a83790e2b86dc765b01 // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b8ef2126bc99855c3e3b59422d3368b2b2bdfa7..38acafae81a2db5169da413271c46077e8321855 100644 +index 39eeaa8797bc8afb627fe60e7bd2905aaf0b8ff0..886b692454c244ba97c3bb5447651059429ecf66 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -939,6 +939,7 @@ public class PurpurWorldConfig { +@@ -952,6 +952,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 6b8ef2126bc99855c3e3b59422d3368b2b2bdfa7..38acafae81a2db5169da413271c46077 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -955,6 +956,7 @@ public class PurpurWorldConfig { +@@ -968,6 +969,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0158-Iron-golem-calm-anger-options.patch b/patches/server/0158-Iron-golem-calm-anger-options.patch index 61276c7ed..514f9689f 100644 --- a/patches/server/0158-Iron-golem-calm-anger-options.patch +++ b/patches/server/0158-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 6396d31a14815fbe4f9f51dc610af317566bf522..db8420f6d1356d400699bd09e67e5805 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38acafae81a2db5169da413271c46077e8321855..22b0b817737ae6e72b268a2063f6903e56f477ed 100644 +index 886b692454c244ba97c3bb5447651059429ecf66..9e683fd8a18d63c201339a651462b8111b046a5e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1427,6 +1427,8 @@ public class PurpurWorldConfig { +@@ -1440,6 +1440,8 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 38acafae81a2db5169da413271c46077e8321855..22b0b817737ae6e72b268a2063f6903e private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1440,6 +1442,8 @@ public class PurpurWorldConfig { +@@ -1453,6 +1455,8 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0159-Breedable-parrots.patch b/patches/server/0159-Breedable-parrots.patch index 435aef5c2..b91f15bac 100644 --- a/patches/server/0159-Breedable-parrots.patch +++ b/patches/server/0159-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 9c7e29307b811d859a0d743b232463e18391b5f0..00759f484cab0d7c8d4e8914dd9f2706 @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 22b0b817737ae6e72b268a2063f6903e56f477ed..9049750b5213eecf5086db9032403e1fa21bf3bd 100644 +index 9e683fd8a18d63c201339a651462b8111b046a5e..e6de1d1bd422d9bf03456f88ef95e2587f4e5ad1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1605,6 +1605,7 @@ public class PurpurWorldConfig { +@@ -1618,6 +1618,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 22b0b817737ae6e72b268a2063f6903e56f477ed..9049750b5213eecf5086db9032403e1f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1618,6 +1619,7 @@ public class PurpurWorldConfig { +@@ -1631,6 +1632,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0173-Shulker-spawn-from-bullet-options.patch b/patches/server/0173-Shulker-spawn-from-bullet-options.patch index 1c56a2250..d4b62d144 100644 --- a/patches/server/0173-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0173-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 79dc7cf5bfe92b4df21d164f39726dfe618331e4..6721432f9cdd11c9658c34f0ac407be2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f075735eaefe238cd776e0bb8ee848f2f2b78d4..adb3a868bac580e65a72560c863f0d948bc6e5b5 100644 +index 6bbde7e866410de77eabc0295518e89be45ca825..7b076c637f85107883c889d1b5e2639d58a91cd8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1978,6 +1978,11 @@ public class PurpurWorldConfig { +@@ -1991,6 +1991,11 @@ public class PurpurWorldConfig { public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 8f075735eaefe238cd776e0bb8ee848f2f2b78d4..adb3a868bac580e65a72560c863f0d94 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1990,6 +1995,11 @@ public class PurpurWorldConfig { +@@ -2003,6 +2008,11 @@ public class PurpurWorldConfig { shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0175-Option-to-make-drowned-break-doors.patch b/patches/server/0175-Option-to-make-drowned-break-doors.patch index 180e526c8..bae279106 100644 --- a/patches/server/0175-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0175-Option-to-make-drowned-break-doors.patch @@ -17,10 +17,10 @@ index 1f41e4a88fb41347b8b1ac6b3d1c454ad35ebfc4..ec00c6b2a8b6a5e0ef030d65f86d4a7d this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (target, world) -> this.okTarget(target))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35f0bd3947ef9152ee0392d87a1d2abb64ca6d43..0a490f119ab9ca4fd2c1237b8bc0ee8edcbe1c4f 100644 +index 46c953354b9c37de378408b18cddd8d1dbd44d7a..84f9031091bbdbd42247d4ecf10894e029bff141 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1068,6 +1068,7 @@ public class PurpurWorldConfig { +@@ -1081,6 +1081,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -28,7 +28,7 @@ index 35f0bd3947ef9152ee0392d87a1d2abb64ca6d43..0a490f119ab9ca4fd2c1237b8bc0ee8e private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1084,6 +1085,7 @@ public class PurpurWorldConfig { +@@ -1097,6 +1098,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0176-Configurable-hunger-starvation-damage.patch b/patches/server/0176-Configurable-hunger-starvation-damage.patch index d5a25e9d8..b3045016a 100644 --- a/patches/server/0176-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0176-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 4f8ee2e5db3352306f3c035052866d95630f4aaf..b8b0b89b7f0a21ecff4ab6286f8a114e this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 391a25d4dc008b8cf13d167648e5033d5f51d1ed..9a763200f34b1232f361cec421615dbfa23e7c05 100644 +index 84f9031091bbdbd42247d4ecf10894e029bff141..60aa7a970cd43ce82a26b06e45f36a077acfa15b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2690,4 +2690,9 @@ public class PurpurWorldConfig { +@@ -2703,4 +2703,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/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index e7beeef5d..71e940e77 100644 --- a/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 737c3367faee2286984c8e7d161b128d7b6632a5..b8fe9665bed428e8e97d1b8a6527cbefc9b9fbcb 100644 +index 6f3ccd2d437bacf7a7e828b62b51533eebc82b02..dcc3b145aaaa208f4949d673333625928468717c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -424,6 +424,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -17,10 +17,10 @@ index 737c3367faee2286984c8e7d161b128d7b6632a5..b8fe9665bed428e8e97d1b8a6527cbef for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e70f67fe1c038490983026fc21ccaed8b761d279..8858336b39b97329457f7ee5f23139f1cc796330 100644 +index ef15b1c0502634da03ed239ee9bc12b395c58693..21841f15aae1816dab5a3fb81148e54877a3419c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1442,6 +1442,7 @@ public class PurpurWorldConfig { +@@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index e70f67fe1c038490983026fc21ccaed8b761d279..8858336b39b97329457f7ee5f23139f1 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1464,6 +1465,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1478,7 @@ public class PurpurWorldConfig { endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch index 11487acee..f7784531d 100644 --- a/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 7298ba35cb27269e778de6b265933baed3077b36..623e8ef53d6336b3e3c83fd37eda1324 return InteractionResult.SUCCESS_SERVER; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 753fdcd39fcb4696766070f8de2e414bd289cd95..0d94d2ed311b03cb13a5a4771c870dc1ee493357 100644 +index 3aa4cc24ca6465c2cc475c9473548f0b6680d51f..e12bbc0974890eea0f5fbeebeeb0a713e8e698d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2948,6 +2948,8 @@ public class PurpurWorldConfig { +@@ -2961,6 +2961,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 753fdcd39fcb4696766070f8de2e414bd289cd95..0d94d2ed311b03cb13a5a4771c870dc1 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2964,6 +2966,8 @@ public class PurpurWorldConfig { +@@ -2977,6 +2979,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/0192-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch index cfaffd912..5f02cb3ce 100644 --- a/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for Wither's spawn sound diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 4e59cbd95d2ee1b69a38fc23015a6262d1a2c53b..1857e0899b32a078bd0e9e4b784ea60b97aa70ef 100644 +index 780aa3e8580f9df24c56af1f2eb474d3ccf7a823..8f78d9a45770bd7114c6d08a4e818442e329eee4 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -424,7 +424,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -18,10 +18,10 @@ index 4e59cbd95d2ee1b69a38fc23015a6262d1a2c53b..1857e0899b32a078bd0e9e4b784ea60b // worldserver.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = world.getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4ddc1c2429857a5cb083613a26a35fdd07f7234..2a8ef714d2820c8b6ea360883326a09aa61ec51c 100644 +index 89a4e9f78f71f2b3e853a555bb8d8284cf6a6cb0..9111f026f6499eeada8a7c22d3c433e41a72d869 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2783,6 +2783,7 @@ public class PurpurWorldConfig { +@@ -2796,6 +2796,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index c4ddc1c2429857a5cb083613a26a35fdd07f7234..2a8ef714d2820c8b6ea360883326a09a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2805,6 +2806,7 @@ public class PurpurWorldConfig { +@@ -2818,6 +2819,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/0195-Conduit-behavior-configuration.patch b/patches/server/0195-Conduit-behavior-configuration.patch index a2faa4102..ec1b9eb5d 100644 --- a/patches/server/0195-Conduit-behavior-configuration.patch +++ b/patches/server/0195-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c99a7d692215c4906f206052c6544164827ac7f..3cf070d9bb17c36d70df8f831c05a17f4b1b59ba 100644 +index 915dcd176f058dd04ea980fd3790ac339ffd2de4..7161b90c101062bd9e30639c782c514aac15202c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3017,4 +3017,27 @@ public class PurpurWorldConfig { +@@ -3030,4 +3030,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0196-Cauldron-fill-chances.patch b/patches/server/0196-Cauldron-fill-chances.patch index da072f2e0..a563dbc50 100644 --- a/patches/server/0196-Cauldron-fill-chances.patch +++ b/patches/server/0196-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index 53cea36ec931de89e0060613acf87beb51dc16ec..fd5489993dca0f940da69e9163f78e5c if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3cf070d9bb17c36d70df8f831c05a17f4b1b59ba..b40eee6cba9272c945a12c2964b33f172db94ce6 100644 +index 7161b90c101062bd9e30639c782c514aac15202c..970954ee212526c767fe1dd84bbaaa459f071398 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3040,4 +3040,15 @@ public class PurpurWorldConfig { +@@ -3053,4 +3053,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0198-Shulker-change-color-with-dye.patch b/patches/server/0198-Shulker-change-color-with-dye.patch index 799ddb9f6..a431c4ca3 100644 --- a/patches/server/0198-Shulker-change-color-with-dye.patch +++ b/patches/server/0198-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index 79bf3d04fa2c7bcadfff08dc9a464e589866f7db..131c7d7e85a3d9ac0e485fd8e56bd419 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8392bed4344d6880b2e2a00e42e12b705095b3cd..cff0dfea430955ea4211d06ea2cff8db7ca4159a 100644 +index a2e3f6781ec6af4874d5c08d387f3e57409418cb..c74d3cec817ebedd2cb4cdb0d8781510335c6963 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2305,6 +2305,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2318,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -40,7 +40,7 @@ index 8392bed4344d6880b2e2a00e42e12b705095b3cd..cff0dfea430955ea4211d06ea2cff8db private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2322,6 +2323,7 @@ public class PurpurWorldConfig { +@@ -2335,6 +2336,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/0204-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch index 0d982a84c..d515a8f71 100644 --- a/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index bcc6435c177189aa59a3fbe67795ae5092685133..fad0b8157a9c30a0e9b35fe32b6a9f2e public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 948712e75fe4f0083178a8f5bcd918e9fcabd8df..39663ab70587b62c52804955081af1c740cac429 100644 +index 4075b1c719007965d487a6c033dc7198bc4cfc08..7fd68ad9c8506d45e000172f8cc97eca33c3af3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1345,6 +1345,7 @@ public class PurpurWorldConfig { +@@ -1358,6 +1358,7 @@ public class PurpurWorldConfig { public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 948712e75fe4f0083178a8f5bcd918e9fcabd8df..39663ab70587b62c52804955081af1c7 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1360,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1373,6 +1374,7 @@ public class PurpurWorldConfig { dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch index c375c6e20..0d34eb3cb 100644 --- a/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch @@ -61,7 +61,7 @@ index 4ad3571403ee8044d17f53987bd47b6c43d42f0e..380bd41336d8d24bffd4e10885e46c95 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 39663ab70587b62c52804955081af1c740cac429..4e4fda61d820a320215a64635421a804f6f63df5 100644 +index f3029600ef5eb73166a220f405bf5f8b62933436..4a3b4711aa82149299fb88301d69a23ada34e116 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1290,7 +1290,14 @@ public class PurpurWorldConfig { @@ -87,4 +87,4 @@ index 39663ab70587b62c52804955081af1c740cac429..4e4fda61d820a320215a64635421a804 + cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); } - public boolean creeperRidable = false; + public boolean creakingRidable = false; diff --git a/patches/server/0207-Halloween-options-and-optimizations.patch b/patches/server/0207-Halloween-options-and-optimizations.patch index 6a4333c4c..aa6907eab 100644 --- a/patches/server/0207-Halloween-options-and-optimizations.patch +++ b/patches/server/0207-Halloween-options-and-optimizations.patch @@ -64,10 +64,10 @@ index b34dec421adc3ce56c0720a839a43ce42faeefaf..98e7b57a45ae3cae704c65ec6db5f715 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e40f5790c243994d86cc8fdedc3ce7dcb94e24e..5226f3ad75ca94820c4b8de13b7cb8342268cbc9 100644 +index 55574dcdf112a3310c23425060009b1394449c3a..0e698fa909db87571ed4985840517abba39ab668 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1708,6 +1708,13 @@ public class PurpurWorldConfig { +@@ -1721,6 +1721,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch index 39a9577aa..16a006881 100644 --- a/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 623e8ef53d6336b3e3c83fd37eda13244a3b4ab6..3759f28c7f516a94ca8fe1b8f82230b9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98cfcc83104905ef458d64128fc3e3126d133bbf..de881d36a6c1f48c8269cc14da194d2a01466c31 100644 +index 6ff6604c23de222166a80db9a3f99acea8b8a62e..853eb6b8b03effd2df35b1dbd9526bc0b12c06d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3014,6 +3014,7 @@ public class PurpurWorldConfig { +@@ -3027,6 +3027,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 98cfcc83104905ef458d64128fc3e3126d133bbf..de881d36a6c1f48c8269cc14da194d2a private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3032,6 +3033,7 @@ public class PurpurWorldConfig { +@@ -3045,6 +3046,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/0216-Mobs-always-drop-experience.patch b/patches/server/0216-Mobs-always-drop-experience.patch index 6ddd2e4bd..f157223d6 100644 --- a/patches/server/0216-Mobs-always-drop-experience.patch +++ b/patches/server/0216-Mobs-always-drop-experience.patch @@ -133,7 +133,7 @@ index fad0b8157a9c30a0e9b35fe32b6a9f2e8a6dd43e..c1842894f96a567707992d8ff938dbf6 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData entityData) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index c442b119f699449bdac73cb1b4c139f093ec2a96..0e229955d9ea7036fab124fa7685df22280671f2 100644 +index 85cb838e8b31880468b02671dd4d04a5e1909e69..ac044be03494c3d6bad6bbc22321445e04d430cc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { @@ -277,7 +277,7 @@ index be78d703bab323f0e64e120172c220d3b8684690..c5a39ea2ad0e5e5ac434d79c1a57e006 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 1f25920b194b174dca78bb584671d35e769d547c..d8fa11a297ea2a183cac67c76b378ca912dba1f9 100644 +index 8e316da789cb7a8d4c630c71724a56d6159cf0ac..b3a0146ccfcda9fa33b91d33458086b510bb4d7b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -155,6 +155,11 @@ public class Rabbit extends Animal implements VariantHolder { @@ -325,7 +325,7 @@ index 3f54b38a3182b116b80ef9ba53c160b343da855a..38f651ab5f8e25e6d653a86dcb987599 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 798aafe6153a711b979f05745d1cd65e6f43192b..d6dd771a868bdf012b6095e333ebb12fc6050478 100644 +index f445a96eb3991410103225d1b9289261399182ff..13eecc676e33623e776d32495969f111bf6c0e44 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -88,6 +88,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -549,7 +549,7 @@ index 5ffb2ca8dd4cd1d32f7d239a767ac68d01ab3d3a..2b7b0d766ceba4b2261be2d8308170ae return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 1857e0899b32a078bd0e9e4b784ea60b97aa70ef..026e730f67c58caf385070d57a2e199fca966a46 100644 +index 8f78d9a45770bd7114c6d08a4e818442e329eee4..ac8f05e20e810e61e4c77aa7a6e41008779563dc 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -135,6 +135,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -645,7 +645,7 @@ index a0c76ffa16edffdfa75fd539e58282d3115f473b..a000304e3ac4c34b020f7457aa2589c8 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index b8fe9665bed428e8e97d1b8a6527cbefc9b9fbcb..39ec4b00c6254824632b37ea9824ae9ff84cdb20 100644 +index dcc3b145aaaa208f4949d673333625928468717c..1016ddd75b783484865fa814bb267eff9ae2ceb5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -118,6 +118,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -677,7 +677,7 @@ index 806719a3673f3c333bfc720a7ccf07f7ba5cffc2..f8373fc9839fccb31e3dd090de70e2cd protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 64db1748d25db5d52f182e05a9d3ac1e04d4fe6a..732fa9c2bf22e488ba531c0f9fd2a7e08468ff63 100644 +index 2a0561d0e0cfc6e732c2342e12a1af4dfa73befe..e231bb33b7e6a00d7c1a6c3540b4b48cfd4c15e3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -81,6 +81,11 @@ public class Evoker extends SpellcasterIllager { @@ -821,7 +821,7 @@ index b85579065ac006589120d4d7ed83d355a517b46d..85d5c84a8861905e4546901aa6707078 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index d4d02459f078788b404f39e84d1547a6c9d0313c..06aa58b0e036ce4e9615365d03060eb9d9a518b7 100644 +index 94f5b153627eca433905106a90e1bbdfb73e4e2d..1c8cb19a8b25593d16518006247bdf0e71e16ab1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -111,6 +111,11 @@ public class Ravager extends Raider { @@ -853,7 +853,7 @@ index 131c7d7e85a3d9ac0e485fd8e56bd419a775289d..e3fefd52c83079fe3eab1a96dd81a183 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index a7f4982d3ac1d580ee4b82297111bee106c3108a..ece70d8303e563df416fc6703e6d7d2e23ee220a 100644 +index 02b30999eb96aa376ec940885fde8f7b543bfdfa..7a6ad611faf39eb8dd87bd498169571633c33769 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -74,6 +74,11 @@ public class Silverfish extends Monster { @@ -1093,7 +1093,7 @@ index f3f77e5e219d6a3a831ac9b1a642e77ec67ce770..7520ab7ec5902f083aefd68895a7d9c4 public boolean canBeLeashed() { return true; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 334d7a657e883de6ea81b6f88876f5ca45c43d7b..7d5ce66c6691b0911ed5afcb1d4186525f09a15e 100644 +index 6cef7eb84ddb02a273024f6b30bc7e33712d742a..7aca25b8d898b97fd331d61ab901f2ebc0ed7039 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -124,6 +124,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1157,7 +1157,7 @@ index 7d219c1bfdcdc6d06dcb91c33ef09f88dca13aa3..37ba31724fb3630c9c7d8040f47be36e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a31aa837d 100644 +index 6954e3491cc21577931f9bd5eec33b05a670aca4..ecad05c231bee0245db1b30e9955fa6edd1596b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1087,6 +1087,7 @@ public class PurpurWorldConfig { @@ -1303,8 +1303,8 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a + cowAlwaysDropExp = getBoolean("mobs.cow.always-drop-exp", cowAlwaysDropExp); } - public boolean creeperRidable = false; -@@ -1354,6 +1372,7 @@ public class PurpurWorldConfig { + public boolean creakingRidable = false; +@@ -1367,6 +1385,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1312,7 +1312,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1371,6 +1390,7 @@ public class PurpurWorldConfig { +@@ -1384,6 +1403,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1320,7 +1320,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean dolphinRidable = false; -@@ -1383,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1396,6 +1416,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1328,7 +1328,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1399,6 +1420,7 @@ public class PurpurWorldConfig { +@@ -1412,6 +1433,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1336,7 +1336,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean donkeyRidableInWater = false; -@@ -1410,6 +1432,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1445,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1344,7 +1344,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1427,6 +1450,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1463,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1352,7 +1352,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean drownedRidable = false; -@@ -1440,6 +1464,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1477,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1360,7 +1360,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1457,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1495,7 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1368,7 +1368,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean elderGuardianRidable = false; -@@ -1464,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1503,7 @@ public class PurpurWorldConfig { public double elderGuardianMaxHealth = 80.0D; public double elderGuardianScale = 1.0D; public boolean elderGuardianTakeDamageFromWater = false; @@ -1376,7 +1376,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1475,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1515,7 @@ public class PurpurWorldConfig { elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1384,7 +1384,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean enderDragonRidable = false; -@@ -1520,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1533,6 +1561,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1392,7 +1392,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1543,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1556,6 +1585,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1400,7 +1400,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean endermiteRidable = false; -@@ -1551,6 +1581,7 @@ public class PurpurWorldConfig { +@@ -1564,6 +1594,7 @@ public class PurpurWorldConfig { public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1408,7 +1408,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1563,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1576,6 +1607,7 @@ public class PurpurWorldConfig { endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1416,7 +1416,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean evokerRidable = false; -@@ -1572,6 +1604,7 @@ public class PurpurWorldConfig { +@@ -1585,6 +1617,7 @@ public class PurpurWorldConfig { public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1424,7 +1424,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1585,6 +1618,7 @@ public class PurpurWorldConfig { +@@ -1598,6 +1631,7 @@ public class PurpurWorldConfig { evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1432,7 +1432,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean foxRidable = false; -@@ -1596,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1609,6 +1643,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1440,7 +1440,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1611,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1624,6 +1659,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1448,7 +1448,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean frogRidable = false; -@@ -1633,6 +1669,7 @@ public class PurpurWorldConfig { +@@ -1646,6 +1682,7 @@ public class PurpurWorldConfig { public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; public boolean ghastTakeDamageFromWater = false; @@ -1456,7 +1456,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1646,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1659,6 +1696,7 @@ public class PurpurWorldConfig { ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1464,7 +1464,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean giantRidable = false; -@@ -1660,6 +1698,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1711,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1472,7 +1472,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1682,6 +1721,7 @@ public class PurpurWorldConfig { +@@ -1695,6 +1734,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1480,7 +1480,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean glowSquidRidable = false; -@@ -1690,6 +1730,7 @@ public class PurpurWorldConfig { +@@ -1703,6 +1743,7 @@ public class PurpurWorldConfig { public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1488,7 +1488,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1697,6 +1738,7 @@ public class PurpurWorldConfig { +@@ -1710,6 +1751,7 @@ public class PurpurWorldConfig { glowSquidScale = Mth.clamp(getDouble("mobs.glow_squid.attributes.scale", glowSquidScale), 0.0625D, 16.0D); glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); @@ -1496,7 +1496,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean goatRidable = false; -@@ -1706,6 +1748,7 @@ public class PurpurWorldConfig { +@@ -1719,6 +1761,7 @@ public class PurpurWorldConfig { public double goatScale = 1.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1504,7 +1504,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1714,6 +1757,7 @@ public class PurpurWorldConfig { +@@ -1727,6 +1770,7 @@ public class PurpurWorldConfig { goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1512,7 +1512,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean guardianRidable = false; -@@ -1721,6 +1765,7 @@ public class PurpurWorldConfig { +@@ -1734,6 +1778,7 @@ public class PurpurWorldConfig { public double guardianMaxHealth = 30.0D; public double guardianScale = 1.0D; public boolean guardianTakeDamageFromWater = false; @@ -1520,7 +1520,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1732,6 +1777,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1790,7 @@ public class PurpurWorldConfig { guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1528,7 +1528,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean forceHalloweenSeason = false; -@@ -1748,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1761,6 +1807,7 @@ public class PurpurWorldConfig { public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1536,7 +1536,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1761,6 +1808,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1821,7 @@ public class PurpurWorldConfig { hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1544,7 +1544,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean horseRidableInWater = false; -@@ -1772,6 +1820,7 @@ public class PurpurWorldConfig { +@@ -1785,6 +1833,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1552,7 +1552,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1789,6 +1838,7 @@ public class PurpurWorldConfig { +@@ -1802,6 +1851,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1560,7 +1560,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean huskRidable = false; -@@ -1801,6 +1851,7 @@ public class PurpurWorldConfig { +@@ -1814,6 +1864,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1568,7 +1568,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1817,6 +1868,7 @@ public class PurpurWorldConfig { +@@ -1830,6 +1881,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1576,7 +1576,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean illusionerRidable = false; -@@ -1827,6 +1879,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1892,7 @@ public class PurpurWorldConfig { public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1584,7 +1584,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1845,6 +1898,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1911,7 @@ public class PurpurWorldConfig { illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1592,7 +1592,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean ironGolemRidable = false; -@@ -1856,6 +1910,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1923,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1600,7 +1600,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1871,6 +1926,7 @@ public class PurpurWorldConfig { +@@ -1884,6 +1939,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1608,7 +1608,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean llamaRidable = false; -@@ -1885,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1898,6 +1954,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1616,7 +1616,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1905,6 +1962,7 @@ public class PurpurWorldConfig { +@@ -1918,6 +1975,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1624,7 +1624,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean magmaCubeRidable = false; -@@ -1915,6 +1973,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +1986,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1632,7 +1632,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1929,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1942,6 +2001,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1640,7 +1640,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean mooshroomRidable = false; -@@ -1938,6 +1998,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2011,7 @@ public class PurpurWorldConfig { public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1648,7 +1648,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1951,6 +2012,7 @@ public class PurpurWorldConfig { +@@ -1964,6 +2025,7 @@ public class PurpurWorldConfig { mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1656,7 +1656,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean muleRidableInWater = false; -@@ -1962,6 +2024,7 @@ public class PurpurWorldConfig { +@@ -1975,6 +2037,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1664,7 +1664,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1979,6 +2042,7 @@ public class PurpurWorldConfig { +@@ -1992,6 +2055,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1672,7 +1672,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean ocelotRidable = false; -@@ -1988,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2065,7 @@ public class PurpurWorldConfig { public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1680,7 +1680,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2001,6 +2066,7 @@ public class PurpurWorldConfig { +@@ -2014,6 +2079,7 @@ public class PurpurWorldConfig { ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1688,7 +1688,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean pandaRidable = false; -@@ -2010,6 +2076,7 @@ public class PurpurWorldConfig { +@@ -2023,6 +2089,7 @@ public class PurpurWorldConfig { public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1696,7 +1696,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -2023,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -2036,6 +2103,7 @@ public class PurpurWorldConfig { pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1704,7 +1704,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean parrotRidable = false; -@@ -2033,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -2046,6 +2114,7 @@ public class PurpurWorldConfig { public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1712,7 +1712,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2047,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2060,6 +2129,7 @@ public class PurpurWorldConfig { parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1720,7 +1720,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean phantomRidable = false; -@@ -2074,6 +2144,7 @@ public class PurpurWorldConfig { +@@ -2087,6 +2157,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1728,7 +1728,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2109,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2122,6 +2193,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); @@ -1736,7 +1736,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean pigRidable = false; -@@ -2119,6 +2191,7 @@ public class PurpurWorldConfig { +@@ -2132,6 +2204,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1744,7 +1744,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2133,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2146,6 +2219,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); @@ -1752,7 +1752,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean piglinRidable = false; -@@ -2143,6 +2217,7 @@ public class PurpurWorldConfig { +@@ -2156,6 +2230,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1760,7 +1760,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2157,6 +2232,7 @@ public class PurpurWorldConfig { +@@ -2170,6 +2245,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); @@ -1768,7 +1768,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean piglinBruteRidable = false; -@@ -2165,6 +2241,7 @@ public class PurpurWorldConfig { +@@ -2178,6 +2254,7 @@ public class PurpurWorldConfig { public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2177,6 +2254,7 @@ public class PurpurWorldConfig { +@@ -2190,6 +2267,7 @@ public class PurpurWorldConfig { piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean pillagerRidable = false; -@@ -2186,6 +2264,7 @@ public class PurpurWorldConfig { +@@ -2199,6 +2277,7 @@ public class PurpurWorldConfig { public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2199,6 +2278,7 @@ public class PurpurWorldConfig { +@@ -2212,6 +2291,7 @@ public class PurpurWorldConfig { pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1800,7 +1800,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean polarBearRidable = false; -@@ -2210,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2223,6 +2303,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1808,7 +1808,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2226,6 +2307,7 @@ public class PurpurWorldConfig { +@@ -2239,6 +2320,7 @@ 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); @@ -1816,7 +1816,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean pufferfishRidable = false; -@@ -2233,6 +2315,7 @@ public class PurpurWorldConfig { +@@ -2246,6 +2328,7 @@ public class PurpurWorldConfig { public double pufferfishMaxHealth = 3.0D; public double pufferfishScale = 1.0D; public boolean pufferfishTakeDamageFromWater = false; @@ -1824,7 +1824,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2244,6 +2327,7 @@ public class PurpurWorldConfig { +@@ -2257,6 +2340,7 @@ public class PurpurWorldConfig { pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1832,7 +1832,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean rabbitRidable = false; -@@ -2256,6 +2340,7 @@ public class PurpurWorldConfig { +@@ -2269,6 +2353,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1840,7 +1840,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2272,6 +2357,7 @@ public class PurpurWorldConfig { +@@ -2285,6 +2370,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); @@ -1848,7 +1848,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean ravagerRidable = false; -@@ -2282,6 +2368,7 @@ public class PurpurWorldConfig { +@@ -2295,6 +2381,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1856,7 +1856,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2312,6 +2399,7 @@ public class PurpurWorldConfig { +@@ -2325,6 +2412,7 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1864,7 +1864,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean salmonRidable = false; -@@ -2319,6 +2407,7 @@ public class PurpurWorldConfig { +@@ -2332,6 +2420,7 @@ public class PurpurWorldConfig { public double salmonMaxHealth = 3.0D; public double salmonScale = 1.0D; public boolean salmonTakeDamageFromWater = false; @@ -1872,7 +1872,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2330,6 +2419,7 @@ public class PurpurWorldConfig { +@@ -2343,6 +2432,7 @@ public class PurpurWorldConfig { salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1880,7 +1880,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean sheepRidable = false; -@@ -2340,6 +2430,7 @@ public class PurpurWorldConfig { +@@ -2353,6 +2443,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1888,7 +1888,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2354,6 +2445,7 @@ public class PurpurWorldConfig { +@@ -2367,6 +2458,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); @@ -1896,7 +1896,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean shulkerRidable = false; -@@ -2368,6 +2460,7 @@ public class PurpurWorldConfig { +@@ -2381,6 +2473,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1904,7 +1904,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2386,6 +2479,7 @@ public class PurpurWorldConfig { +@@ -2399,6 +2492,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); @@ -1912,7 +1912,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean silverfishRidable = false; -@@ -2397,6 +2491,7 @@ public class PurpurWorldConfig { +@@ -2410,6 +2504,7 @@ public class PurpurWorldConfig { public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1920,7 +1920,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2412,6 +2507,7 @@ public class PurpurWorldConfig { +@@ -2425,6 +2520,7 @@ public class PurpurWorldConfig { silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1928,7 +1928,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean skeletonRidable = false; -@@ -2420,6 +2516,7 @@ public class PurpurWorldConfig { +@@ -2433,6 +2529,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1936,7 +1936,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2432,6 +2529,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2542,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1944,7 +1944,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean skeletonHorseRidable = false; -@@ -2444,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2457,6 +2555,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1952,7 +1952,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2461,6 +2560,7 @@ public class PurpurWorldConfig { +@@ -2474,6 +2573,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); @@ -1960,7 +1960,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean slimeRidable = false; -@@ -2471,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2484,6 +2584,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1968,7 +1968,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2485,6 +2586,7 @@ public class PurpurWorldConfig { +@@ -2498,6 +2599,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1976,7 +1976,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean snowGolemRidable = false; -@@ -2500,6 +2602,7 @@ public class PurpurWorldConfig { +@@ -2513,6 +2615,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1984,7 +1984,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2519,6 +2622,7 @@ public class PurpurWorldConfig { +@@ -2532,6 +2635,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); @@ -1992,7 +1992,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean snifferRidable = false; -@@ -2544,6 +2648,7 @@ public class PurpurWorldConfig { +@@ -2557,6 +2661,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -2000,7 +2000,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2558,6 +2663,7 @@ public class PurpurWorldConfig { +@@ -2571,6 +2676,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); @@ -2008,7 +2008,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean spiderRidable = false; -@@ -2566,6 +2672,7 @@ public class PurpurWorldConfig { +@@ -2579,6 +2685,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; public boolean spiderTakeDamageFromWater = false; @@ -2016,7 +2016,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2578,6 +2685,7 @@ public class PurpurWorldConfig { +@@ -2591,6 +2698,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2024,7 +2024,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean strayRidable = false; -@@ -2586,6 +2694,7 @@ public class PurpurWorldConfig { +@@ -2599,6 +2707,7 @@ public class PurpurWorldConfig { public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; public boolean strayTakeDamageFromWater = false; @@ -2032,7 +2032,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2598,6 +2707,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2720,7 @@ public class PurpurWorldConfig { strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2040,7 +2040,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean striderRidable = false; -@@ -2608,6 +2718,7 @@ public class PurpurWorldConfig { +@@ -2621,6 +2731,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2048,7 +2048,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2622,6 +2733,7 @@ public class PurpurWorldConfig { +@@ -2635,6 +2746,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); @@ -2056,7 +2056,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean tadpoleRidable = false; -@@ -2644,6 +2756,7 @@ public class PurpurWorldConfig { +@@ -2657,6 +2769,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2064,7 +2064,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2663,6 +2776,7 @@ public class PurpurWorldConfig { +@@ -2676,6 +2789,7 @@ 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 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean tropicalFishRidable = false; -@@ -2670,6 +2784,7 @@ public class PurpurWorldConfig { +@@ -2683,6 +2797,7 @@ public class PurpurWorldConfig { public double tropicalFishMaxHealth = 3.0D; public double tropicalFishScale = 1.0D; public boolean tropicalFishTakeDamageFromWater = false; @@ -2080,7 +2080,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2681,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2694,6 +2809,7 @@ public class PurpurWorldConfig { tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2088,7 +2088,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean turtleRidable = false; -@@ -2690,6 +2806,7 @@ public class PurpurWorldConfig { +@@ -2703,6 +2819,7 @@ public class PurpurWorldConfig { public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2096,7 +2096,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2703,6 +2820,7 @@ public class PurpurWorldConfig { +@@ -2716,6 +2833,7 @@ public class PurpurWorldConfig { turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2104,7 +2104,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean vexRidable = false; -@@ -2712,6 +2830,7 @@ public class PurpurWorldConfig { +@@ -2725,6 +2843,7 @@ public class PurpurWorldConfig { public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; public boolean vexTakeDamageFromWater = false; @@ -2112,7 +2112,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2725,6 +2844,7 @@ public class PurpurWorldConfig { +@@ -2738,6 +2857,7 @@ public class PurpurWorldConfig { vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2120,7 +2120,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean villagerRidable = false; -@@ -2742,6 +2862,7 @@ public class PurpurWorldConfig { +@@ -2755,6 +2875,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2128,7 +2128,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2763,6 +2884,7 @@ public class PurpurWorldConfig { +@@ -2776,6 +2897,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); @@ -2136,7 +2136,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean vindicatorRidable = false; -@@ -2772,6 +2894,7 @@ public class PurpurWorldConfig { +@@ -2785,6 +2907,7 @@ public class PurpurWorldConfig { public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2144,7 +2144,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2785,6 +2908,7 @@ public class PurpurWorldConfig { +@@ -2798,6 +2921,7 @@ public class PurpurWorldConfig { vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2152,7 +2152,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean wanderingTraderRidable = false; -@@ -2797,6 +2921,7 @@ public class PurpurWorldConfig { +@@ -2810,6 +2934,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2160,7 +2160,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2813,6 +2938,7 @@ public class PurpurWorldConfig { +@@ -2826,6 +2951,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); @@ -2168,7 +2168,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean wardenRidable = false; -@@ -2830,6 +2956,7 @@ public class PurpurWorldConfig { +@@ -2843,6 +2969,7 @@ public class PurpurWorldConfig { public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; public boolean witchTakeDamageFromWater = false; @@ -2176,7 +2176,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2842,6 +2969,7 @@ public class PurpurWorldConfig { +@@ -2855,6 +2982,7 @@ public class PurpurWorldConfig { witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2184,7 +2184,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean witherRidable = false; -@@ -2857,6 +2985,7 @@ public class PurpurWorldConfig { +@@ -2870,6 +2998,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2192,7 +2192,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2880,6 +3009,7 @@ public class PurpurWorldConfig { +@@ -2893,6 +3022,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); @@ -2200,7 +2200,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean witherSkeletonRidable = false; -@@ -2888,6 +3018,7 @@ public class PurpurWorldConfig { +@@ -2901,6 +3031,7 @@ public class PurpurWorldConfig { public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2208,7 +2208,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2900,6 +3031,7 @@ public class PurpurWorldConfig { +@@ -2913,6 +3044,7 @@ public class PurpurWorldConfig { witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2216,7 +2216,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean wolfRidable = false; -@@ -2912,6 +3044,7 @@ public class PurpurWorldConfig { +@@ -2925,6 +3057,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2224,7 +2224,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2932,6 +3065,7 @@ public class PurpurWorldConfig { +@@ -2945,6 +3078,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); @@ -2232,7 +2232,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean zoglinRidable = false; -@@ -2940,6 +3074,7 @@ public class PurpurWorldConfig { +@@ -2953,6 +3087,7 @@ public class PurpurWorldConfig { public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2240,7 +2240,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2952,6 +3087,7 @@ public class PurpurWorldConfig { +@@ -2965,6 +3100,7 @@ public class PurpurWorldConfig { zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2248,7 +2248,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean zombieRidable = false; -@@ -2966,6 +3102,7 @@ public class PurpurWorldConfig { +@@ -2979,6 +3115,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2256,7 +2256,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2984,6 +3121,7 @@ public class PurpurWorldConfig { +@@ -2997,6 +3134,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); @@ -2264,7 +2264,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean zombieHorseRidable = false; -@@ -2997,6 +3135,7 @@ public class PurpurWorldConfig { +@@ -3010,6 +3148,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2272,7 +2272,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -3015,6 +3154,7 @@ public class PurpurWorldConfig { +@@ -3028,6 +3167,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); @@ -2280,7 +2280,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean zombieVillagerRidable = false; -@@ -3030,6 +3170,7 @@ public class PurpurWorldConfig { +@@ -3043,6 +3183,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2288,7 +2288,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3049,6 +3190,7 @@ public class PurpurWorldConfig { +@@ -3062,6 +3203,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); @@ -2296,7 +2296,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a } public boolean zombifiedPiglinRidable = false; -@@ -3062,6 +3204,7 @@ public class PurpurWorldConfig { +@@ -3075,6 +3217,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2304,7 +2304,7 @@ index 74a5f52f912af3867c95e96eef70d4a4e7c38abf..af72feb3d1ac919eaf3e2a35aa78525a private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3079,6 +3222,7 @@ public class PurpurWorldConfig { +@@ -3092,6 +3235,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/0220-Mob-head-visibility-percent.patch b/patches/server/0220-Mob-head-visibility-percent.patch index 8da82da7d..bb98ce0ce 100644 --- a/patches/server/0220-Mob-head-visibility-percent.patch +++ b/patches/server/0220-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ 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 58be94a164c3413dad4b3a7bb1a1544edb88e9ba..b4dd7d602dc062cc96aff048688fd808db0e4b12 100644 +index d3adb23808c110862cd7090229c459deb6a34fa2..ccde673f203ca17f726c67d009ea4cf4eb9040ac 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1069,9 +1069,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index 58be94a164c3413dad4b3a7bb1a1544edb88e9ba..b4dd7d602dc062cc96aff048688fd808 // 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 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b746fe0930 100644 +index 535f310811ae11878d3a6c5bd90c5b1ffd1097ca..516d20e07dba216e82cbbba6aea67a8b758de512 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1379,6 +1379,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1392,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1397,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1410,6 +1411,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 } public boolean dolphinRidable = false; -@@ -2224,6 +2226,7 @@ public class PurpurWorldConfig { +@@ -2237,6 +2239,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2239,6 +2242,7 @@ public class PurpurWorldConfig { +@@ -2252,6 +2255,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 } public boolean piglinBruteRidable = false; -@@ -2523,6 +2527,7 @@ public class PurpurWorldConfig { +@@ -2536,6 +2540,7 @@ public class PurpurWorldConfig { public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2536,6 +2541,7 @@ public class PurpurWorldConfig { +@@ -2549,6 +2554,7 @@ public class PurpurWorldConfig { skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 } public boolean skeletonHorseRidable = false; -@@ -3109,6 +3115,7 @@ public class PurpurWorldConfig { +@@ -3122,6 +3128,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 72cc0f0164860e56ff90aeee3a0be6a9dd6f305d..670ace33d3016e94031517802ce9f5b7 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3128,6 +3135,7 @@ public class PurpurWorldConfig { +@@ -3141,6 +3148,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/0227-Configurable-phantom-size.patch b/patches/server/0227-Configurable-phantom-size.patch index 6266c65ec..1309f344b 100644 --- a/patches/server/0227-Configurable-phantom-size.patch +++ b/patches/server/0227-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 1aba4ebc1ea3d6782098f2c9aebfb38363e7ab95..cda6cb5b10b895bab48d2212f259ba4c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c25a42aba24d09423ced12da0b581de7b075bce..9882be8d2a0c235b61dabfd31d7680a934f3ce81 100644 +index c733010fba56772459651cfb89fc5ced231fb5ed..b16d7e3f76d05fd834a62c564b2b8688397c2832 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2161,6 +2161,8 @@ public class PurpurWorldConfig { +@@ -2174,6 +2174,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 6c25a42aba24d09423ced12da0b581de7b075bce..9882be8d2a0c235b61dabfd31d7680a9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2197,6 +2199,13 @@ public class PurpurWorldConfig { +@@ -2210,6 +2212,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/0229-Configurable-minimum-demand-for-trades.patch b/patches/server/0229-Configurable-minimum-demand-for-trades.patch index ad14e27e6..a258a0aec 100644 --- a/patches/server/0229-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0229-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ffd547eccd7356c29957a9621653ff04d5dc8b1b..97e8fc04a61f7c3844a74c99859c4f4b938b1810 100644 +index b16d7e3f76d05fd834a62c564b2b8688397c2832..c49e93d6afd7fe6c7c8397154a9580ab023ed529 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2892,6 +2892,7 @@ public class PurpurWorldConfig { +@@ -2905,6 +2905,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index ffd547eccd7356c29957a9621653ff04d5dc8b1b..97e8fc04a61f7c3844a74c99859c4f4b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2914,6 +2915,7 @@ public class PurpurWorldConfig { +@@ -2927,6 +2928,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/0230-Lobotomize-stuck-villagers.patch b/patches/server/0230-Lobotomize-stuck-villagers.patch index 9990ee0f0..d1991cc28 100644 --- a/patches/server/0230-Lobotomize-stuck-villagers.patch +++ b/patches/server/0230-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 8e895d6f84f7d84b219f2424909dd42e5f08dec4..53dcce0701d713c5dd097340a91b8be4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97e8fc04a61f7c3844a74c99859c4f4b938b1810..d5dc045f2ca66af0f484fd9ed15bf12db02baeef 100644 +index c49e93d6afd7fe6c7c8397154a9580ab023ed529..a1c3e7d57d716f785e9ba677c8f259ffe030a165 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2893,6 +2893,9 @@ public class PurpurWorldConfig { +@@ -2906,6 +2906,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 97e8fc04a61f7c3844a74c99859c4f4b938b1810..d5dc045f2ca66af0f484fd9ed15bf12d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2916,6 +2919,18 @@ public class PurpurWorldConfig { +@@ -2929,6 +2932,18 @@ 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/0231-Option-for-villager-display-trade-item.patch b/patches/server/0231-Option-for-villager-display-trade-item.patch index 7d3736192..d4b820b7d 100644 --- a/patches/server/0231-Option-for-villager-display-trade-item.patch +++ b/patches/server/0231-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5dc045f2ca66af0f484fd9ed15bf12db02baeef..08025b965142096d8b9c8a3cb1d6813f4fed91bb 100644 +index a1c3e7d57d716f785e9ba677c8f259ffe030a165..18874f9a5bc41d312059c553ae4d188c76b94936 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2896,6 +2896,7 @@ public class PurpurWorldConfig { +@@ -2909,6 +2909,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index d5dc045f2ca66af0f484fd9ed15bf12db02baeef..08025b965142096d8b9c8a3cb1d6813f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2931,6 +2932,7 @@ public class PurpurWorldConfig { +@@ -2944,6 +2945,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch index 3eca8fa8e..3d76570dd 100644 --- a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index f787aec8bfa291447b3bca297239f44a9fe342a7..38594d3f520b4d75db441cfdde121ac6 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 a81fdeb38abaf03eb7231ed2ba4e8b693e378a4f..d7789c4969e0c56322d411bfc5d0e9666e719fbc 100644 +index e1fb914b6569d3061321cfe9a42b873b9aee247c..c57b4ed2f136c290ee5a323bd343ddc04bd7e60a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2907,6 +2907,8 @@ public class PurpurWorldConfig { +@@ -2920,6 +2920,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index a81fdeb38abaf03eb7231ed2ba4e8b693e378a4f..d7789c4969e0c56322d411bfc5d0e966 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2943,6 +2945,8 @@ public class PurpurWorldConfig { +@@ -2956,6 +2958,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0242-Skeletons-eat-wither-roses.patch b/patches/server/0242-Skeletons-eat-wither-roses.patch index c7d62d94f..36f06db57 100644 --- a/patches/server/0242-Skeletons-eat-wither-roses.patch +++ b/patches/server/0242-Skeletons-eat-wither-roses.patch @@ -90,10 +90,10 @@ index 61b5f27c1125ed1b183dd3b86b44a10b7098f91c..3cbe4c1ed514936a00e0181cb1e647fb + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ac4f4f07fc6a7421706526d940ed22c28c2cf8d..9cc8e514663a35747d8e96786e8a338248b7a1df 100644 +index ec4ceb85458391697d348030ea7775f2cfa7caeb..61420c97c19eb7b72cb80d2b3c5170831f9c919a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2567,6 +2567,7 @@ public class PurpurWorldConfig { +@@ -2580,6 +2580,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index 7ac4f4f07fc6a7421706526d940ed22c28c2cf8d..9cc8e514663a35747d8e96786e8a3382 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2581,6 +2582,7 @@ public class PurpurWorldConfig { +@@ -2594,6 +2595,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/0243-Enchantment-Table-Persists-Lapis.patch b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch index d98f94d93..4b8b22884 100644 --- a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch @@ -136,10 +136,10 @@ index 39aac959775afeaeea211f21d498cb0ddf0a3fcb..6349a342c023f378af431a73a62fb017 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9cc8e514663a35747d8e96786e8a338248b7a1df..9b777b356044241951fed1990e166735100ff1fb 100644 +index 61420c97c19eb7b72cb80d2b3c5170831f9c919a..7cee836cbc33fcc604fbb864d38315be2e56ceb8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1543,6 +1543,11 @@ public class PurpurWorldConfig { +@@ -1556,6 +1556,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0253-Add-skeleton-bow-accuracy-option.patch b/patches/server/0253-Add-skeleton-bow-accuracy-option.patch index f58a51014..8ec4bac6d 100644 --- a/patches/server/0253-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0253-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 2cadbc0d56908ca978e1735eff07f5e634548606..39d02cf0e31832e30c4f034b0b5385e3 // CraftBukkit end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92b5eecbb2474f5dbb4a9eca55bde27abced5680..28fdb5aaf7cd27cab1e3d04283f512b6786b19f6 100644 +index 1a9fcd289a68c7f3d7d858eade65cc414880cd8d..f28ad02b026e25a560ed24f236627113a55066c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2587,6 +2587,8 @@ public class PurpurWorldConfig { +@@ -2600,6 +2600,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 92b5eecbb2474f5dbb4a9eca55bde27abced5680..28fdb5aaf7cd27cab1e3d04283f512b6 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2602,6 +2604,18 @@ public class PurpurWorldConfig { +@@ -2615,6 +2617,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/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 4149bfdf5..578c66492 100644 --- a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76ed4f11372088b8c3ad04f215d3f6dc0e50594e..1b948280b0d92ec607d4c9dee0d2f1749e9fe8b5 100644 +index 913efd04720e7321fafe75c0f9eceed03e91044e..d617a76d673370286c5a55e3a02f2ed4f5fdc9c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1426,6 +1426,7 @@ public class PurpurWorldConfig { +@@ -1439,6 +1439,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 76ed4f11372088b8c3ad04f215d3f6dc0e50594e..1b948280b0d92ec607d4c9dee0d2f174 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1445,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1458,6 +1459,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0277-Shears-can-defuse-TNT.patch b/patches/server/0277-Shears-can-defuse-TNT.patch index f936b5c68..34320e7f5 100644 --- a/patches/server/0277-Shears-can-defuse-TNT.patch +++ b/patches/server/0277-Shears-can-defuse-TNT.patch @@ -44,10 +44,10 @@ index de87483600e55d88176fe25db621bbd3e464729f..287ba483614e79e78022e703ef891f59 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cdb67f9e73865d0cefa9ce34e43a7d1daa642f89..bb434b12c7400e6129addd5d6672ea9847c00c79 100644 +index 869e6dc3dad0591af777762a4560c9b6e205feb4..9dc7eef416a0c97364d6db7f0a9e2fcadeb06a45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3401,4 +3401,11 @@ public class PurpurWorldConfig { +@@ -3414,4 +3414,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch index b8094de8a..d17f79ea6 100644 --- a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 14634de26c218a3d26afd3e7e6ca89c1a0595178..dee59cb4b87845c940ee089aa932aa69 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b78365741d0a6bcf6381debdf3f2e5896b4c679..ec20f5a874d51e0ceb82a865da235dec347c5d99 100644 +index 9dc7eef416a0c97364d6db7f0a9e2fcadeb06a45..14bcd0038c9d16e9de9c16d0edbdde0c0e614d97 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2137,6 +2137,7 @@ public class PurpurWorldConfig { +@@ -2150,6 +2150,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 7b78365741d0a6bcf6381debdf3f2e5896b4c679..ec20f5a874d51e0ceb82a865da235dec private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2151,6 +2152,7 @@ public class PurpurWorldConfig { +@@ -2164,6 +2165,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 917bf8802..8bf85a006 100644 --- a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index e283b1296c1e831376bfe9491cbf02ed4b3fffe4..27a6de70530c2a1cbe2f77a7fb493038 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec20f5a874d51e0ceb82a865da235dec347c5d99..80561650178b5cb3c49422fb2b0d30aeca55fdd0 100644 +index 14bcd0038c9d16e9de9c16d0edbdde0c0e614d97..14346bf253cf1f420e024eb119ea26e45a7c9a59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2314,6 +2314,7 @@ public class PurpurWorldConfig { +@@ -2327,6 +2327,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index ec20f5a874d51e0ceb82a865da235dec347c5d99..80561650178b5cb3c49422fb2b0d30ae private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2330,6 +2331,7 @@ public class PurpurWorldConfig { +@@ -2343,6 +2344,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0285-Configurable-villager-search-radius.patch b/patches/server/0285-Configurable-villager-search-radius.patch index d68aa1295..19b05c0ed 100644 --- a/patches/server/0285-Configurable-villager-search-radius.patch +++ b/patches/server/0285-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 83dcd2f078a8caffeff2f5d7458dc85631fbd1ff..ac893384c2d6daf81dcc057ea6ef3a671e15a080 100644 +index 77947debf981eb44cc116b6bb930a9f07ffaef16..e863b5cc35bbef332f430b6a7eaab53996b2d574 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2991,6 +2991,8 @@ public class PurpurWorldConfig { +@@ -3004,6 +3004,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 83dcd2f078a8caffeff2f5d7458dc85631fbd1ff..ac893384c2d6daf81dcc057ea6ef3a67 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -3029,6 +3031,8 @@ public class PurpurWorldConfig { +@@ -3042,6 +3044,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch index 6b1e525d4..a3744efb9 100644 --- a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch @@ -6,7 +6,7 @@ Subject: [PATCH] option to make ravagers afraid of rabbits https://github.com/PurpurMC/Purpur/discussions/713 diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 06aa58b0e036ce4e9615365d03060eb9d9a518b7..487f21c6e6ffc0dc9c0733241a8ded8c73a5ec8f 100644 +index 1c8cb19a8b25593d16518006247bdf0e71e16ab1..98c1934b4895a86cd8748edf906aaa721a87a123 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -122,6 +122,7 @@ public class Ravager extends Raider { @@ -18,10 +18,10 @@ index 06aa58b0e036ce4e9615365d03060eb9d9a518b7..487f21c6e6ffc0dc9c0733241a8ded8c this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e10c7273130d3c4cf5e42b71d78df2621b1bab83..d39a0d455f10189054ebc894c55188c5cbc000d2 100644 +index e863b5cc35bbef332f430b6a7eaab53996b2d574..b7743b7b37293fd458b56f5e17359d2383719c90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2472,6 +2472,7 @@ public class PurpurWorldConfig { +@@ -2485,6 +2485,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index e10c7273130d3c4cf5e42b71d78df2621b1bab83..d39a0d455f10189054ebc894c55188c5 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2503,6 +2504,7 @@ public class PurpurWorldConfig { +@@ -2516,6 +2517,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);