diff --git a/patches/server/0244-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0244-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch index b22c825da..69f935e7b 100644 --- a/patches/server/0244-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch +++ b/patches/server/0244-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch @@ -131,10 +131,10 @@ index 35b2bad76c45b5a94ba7f2e9c7a8cfeb8c3f498b..913818656f058990270ed1e4303da1c4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a6491f7a3f10a9a0eb0b369b8d1dc26067a0aba..8d5525c7b7b867360d6e0b4222e8c2452790d994 100644 +index 9a6491f7a3f10a9a0eb0b369b8d1dc26067a0aba..9938ec945282ec726f720abb140743f9bc1f1834 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -768,6 +768,26 @@ public class PurpurWorldConfig { +@@ -768,6 +768,41 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } @@ -146,16 +146,31 @@ index 9a6491f7a3f10a9a0eb0b369b8d1dc26067a0aba..8d5525c7b7b867360d6e0b4222e8c245 + public int kelpMaxGrowthAge = 25; + private void kelpSettings() { + kelpMaxGrowthAge = getInt("blocks.kelp.max-growth-age", kelpMaxGrowthAge); ++ if (kelpMaxGrowthAge > 25) { ++ kelpMaxGrowthAge = 25; ++ log(Level.WARNING, "blocks.kelp.max-growth-age is set to above maximum allowed value of 25"); ++ log(Level.WARNING, "Using value of 25 anyway to prevent issues"); ++ } + } + + public int twistingVinesMaxGrowthAge = 25; + private void twistingVinesSettings() { + twistingVinesMaxGrowthAge = getInt("blocks.twisting_vines.max-growth-age", twistingVinesMaxGrowthAge); ++ if (twistingVinesMaxGrowthAge > 25) { ++ twistingVinesMaxGrowthAge = 25; ++ log(Level.WARNING, "blocks.twisting_vines.max-growth-age is set to above maximum allowed value of 25"); ++ log(Level.WARNING, "Using value of 25 anyway to prevent issues"); ++ } + } + + public int weepingVinesMaxGrowthAge = 25; + private void weepingVinesSettings() { + weepingVinesMaxGrowthAge = getInt("blocks.weeping_vines.max-growth-age", weepingVinesMaxGrowthAge); ++ if (weepingVinesMaxGrowthAge > 25) { ++ weepingVinesMaxGrowthAge = 25; ++ log(Level.WARNING, "blocks.weeping_vines.max-growth-age is set to above maximum allowed value of 25"); ++ log(Level.WARNING, "Using value of 25 anyway to prevent issues"); ++ } + } + public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0245-Mobs-always-drop-experience.patch b/patches/server/0245-Mobs-always-drop-experience.patch index 15ef7c780..59825ae88 100644 --- a/patches/server/0245-Mobs-always-drop-experience.patch +++ b/patches/server/0245-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 1a8df13b06b1ac5e5a7d63033b4a53261c779eda..8be025b735cea47ab3ce6c6b2aef052e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b92ed86b3 100644 +index 9938ec945282ec726f720abb140743f9bc1f1834..3ab0c55db605c15ba3488b682b06ee8f7debdeb6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -999,11 +999,13 @@ public class PurpurWorldConfig { +@@ -1014,11 +1014,13 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1174,7 +1174,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean batRidable = false; -@@ -1018,6 +1020,7 @@ public class PurpurWorldConfig { +@@ -1033,6 +1035,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1182,7 +1182,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1029,6 +1032,7 @@ public class PurpurWorldConfig { +@@ -1044,6 +1047,7 @@ public class PurpurWorldConfig { } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1190,7 +1190,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean beeRidable = false; -@@ -1039,6 +1043,7 @@ public class PurpurWorldConfig { +@@ -1054,6 +1058,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1198,7 +1198,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1053,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1068,6 +1073,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1206,7 +1206,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean blazeRidable = false; -@@ -1060,6 +1066,7 @@ public class PurpurWorldConfig { +@@ -1075,6 +1081,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 256D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1214,7 +1214,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1071,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1086,6 +1093,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1222,7 +1222,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean catRidable = false; -@@ -1082,6 +1090,7 @@ public class PurpurWorldConfig { +@@ -1097,6 +1105,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public boolean catTakeDamageFromWater = false; @@ -1230,7 +1230,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1101,12 +1110,14 @@ public class PurpurWorldConfig { +@@ -1116,12 +1125,14 @@ public class PurpurWorldConfig { catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1245,7 +1245,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1117,6 +1128,7 @@ public class PurpurWorldConfig { +@@ -1132,6 +1143,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1253,7 +1253,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean chickenRidable = false; -@@ -1125,6 +1137,7 @@ public class PurpurWorldConfig { +@@ -1140,6 +1152,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1261,7 +1261,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1137,11 +1150,13 @@ public class PurpurWorldConfig { +@@ -1152,11 +1165,13 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1275,7 +1275,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); if (PurpurConfig.version < 10) { -@@ -1151,6 +1166,7 @@ public class PurpurWorldConfig { +@@ -1166,6 +1181,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1283,7 +1283,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean cowRidable = false; -@@ -1161,6 +1177,7 @@ public class PurpurWorldConfig { +@@ -1176,6 +1192,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1291,7 +1291,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1180,6 +1197,7 @@ public class PurpurWorldConfig { +@@ -1195,6 +1212,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1299,7 +1299,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean creeperRidable = false; -@@ -1191,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1224,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1307,7 +1307,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1206,6 +1225,7 @@ public class PurpurWorldConfig { +@@ -1221,6 +1240,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); @@ -1315,7 +1315,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean dolphinRidable = false; -@@ -1216,6 +1236,7 @@ public class PurpurWorldConfig { +@@ -1231,6 +1251,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1323,7 +1323,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -1230,6 +1251,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1266,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); @@ -1331,7 +1331,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean donkeyRidableInWater = false; -@@ -1241,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1256,6 +1278,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1339,7 +1339,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1258,6 +1281,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1296,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); @@ -1347,7 +1347,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean drownedRidable = false; -@@ -1269,6 +1293,7 @@ public class PurpurWorldConfig { +@@ -1284,6 +1308,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1355,7 +1355,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1284,11 +1309,13 @@ public class PurpurWorldConfig { +@@ -1299,11 +1324,13 @@ 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); @@ -1369,7 +1369,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); if (PurpurConfig.version < 10) { -@@ -1298,6 +1325,7 @@ public class PurpurWorldConfig { +@@ -1313,6 +1340,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1377,7 +1377,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean enderDragonRidable = false; -@@ -1340,6 +1368,7 @@ public class PurpurWorldConfig { +@@ -1355,6 +1383,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1385,7 +1385,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1362,12 +1391,14 @@ public class PurpurWorldConfig { +@@ -1377,12 +1406,14 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1400,7 +1400,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1378,6 +1409,7 @@ public class PurpurWorldConfig { +@@ -1393,6 +1424,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1408,7 +1408,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean evokerRidable = false; -@@ -1385,6 +1417,7 @@ public class PurpurWorldConfig { +@@ -1400,6 +1432,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1416,7 +1416,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1396,6 +1429,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1444,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1424,7 +1424,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean foxRidable = false; -@@ -1405,6 +1439,7 @@ public class PurpurWorldConfig { +@@ -1420,6 +1454,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1432,7 +1432,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1418,6 +1453,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1468,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); @@ -1440,7 +1440,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean ghastRidable = false; -@@ -1425,6 +1461,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1476,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 256D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1448,7 +1448,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1436,6 +1473,7 @@ public class PurpurWorldConfig { +@@ -1451,6 +1488,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1456,7 +1456,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean giantRidable = false; -@@ -1448,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1463,6 +1501,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1464,7 +1464,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1468,17 +1507,20 @@ public class PurpurWorldConfig { +@@ -1483,17 +1522,20 @@ 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); @@ -1485,7 +1485,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean goatRidable = false; -@@ -1486,17 +1528,20 @@ public class PurpurWorldConfig { +@@ -1501,17 +1543,20 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1506,7 +1506,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); if (PurpurConfig.version < 10) { -@@ -1506,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1521,6 +1566,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1514,7 +1514,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean forceHalloweenSeason = false; -@@ -1520,6 +1566,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1581,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1522,7 +1522,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1531,6 +1578,7 @@ public class PurpurWorldConfig { +@@ -1546,6 +1593,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1530,7 +1530,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean horseRidableInWater = false; -@@ -1543,6 +1591,7 @@ public class PurpurWorldConfig { +@@ -1558,6 +1606,7 @@ public class PurpurWorldConfig { public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; public boolean horseStandWithRider = true; @@ -1538,7 +1538,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1561,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1576,6 +1625,7 @@ public class PurpurWorldConfig { horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider); @@ -1546,7 +1546,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean huskRidable = false; -@@ -1571,6 +1621,7 @@ public class PurpurWorldConfig { +@@ -1586,6 +1636,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1554,7 +1554,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1585,6 +1636,7 @@ public class PurpurWorldConfig { +@@ -1600,6 +1651,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); @@ -1562,7 +1562,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean illusionerRidable = false; -@@ -1593,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1608,6 +1660,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1570,7 +1570,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1609,6 +1662,7 @@ public class PurpurWorldConfig { +@@ -1624,6 +1677,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1578,7 +1578,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean ironGolemRidable = false; -@@ -1617,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1686,7 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; @@ -1586,7 +1586,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1629,6 +1684,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1699,7 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); @@ -1594,7 +1594,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean llamaRidable = false; -@@ -1642,6 +1698,7 @@ public class PurpurWorldConfig { +@@ -1657,6 +1713,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1602,7 +1602,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1661,12 +1718,14 @@ public class PurpurWorldConfig { +@@ -1676,12 +1733,14 @@ 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); @@ -1617,7 +1617,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1677,6 +1736,7 @@ public class PurpurWorldConfig { +@@ -1692,6 +1751,7 @@ public class PurpurWorldConfig { } magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max_health", magmaCubeMaxHealth); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1625,7 +1625,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean mooshroomRidable = false; -@@ -1684,6 +1744,7 @@ public class PurpurWorldConfig { +@@ -1699,6 +1759,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1633,7 +1633,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1695,6 +1756,7 @@ public class PurpurWorldConfig { +@@ -1710,6 +1771,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1641,7 +1641,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean muleRidableInWater = false; -@@ -1706,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1783,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1649,7 +1649,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1723,6 +1786,7 @@ public class PurpurWorldConfig { +@@ -1738,6 +1801,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); @@ -1657,7 +1657,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean ocelotRidable = false; -@@ -1730,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1809,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1665,7 +1665,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1741,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1756,6 +1821,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1673,7 +1673,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean pandaRidable = false; -@@ -1748,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1763,6 +1829,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1681,7 +1681,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1759,6 +1826,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1841,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1689,7 +1689,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean parrotRidable = false; -@@ -1767,6 +1835,7 @@ public class PurpurWorldConfig { +@@ -1782,6 +1850,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1697,7 +1697,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1779,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1794,6 +1863,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1705,7 +1705,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean phantomRidable = false; -@@ -1808,6 +1878,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1893,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomTakeDamageFromWater = false; @@ -1713,7 +1713,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1841,6 +1912,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1927,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1721,7 +1721,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean pigRidable = false; -@@ -1849,6 +1921,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1936,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1729,7 +1729,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1861,6 +1934,7 @@ public class PurpurWorldConfig { +@@ -1876,6 +1949,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); @@ -1737,7 +1737,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean piglinRidable = false; -@@ -1869,6 +1943,7 @@ public class PurpurWorldConfig { +@@ -1884,6 +1958,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1745,7 +1745,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1881,12 +1956,14 @@ public class PurpurWorldConfig { +@@ -1896,12 +1971,14 @@ 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); @@ -1760,7 +1760,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1897,6 +1974,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +1989,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1768,7 +1768,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean pillagerRidable = false; -@@ -1904,6 +1982,7 @@ public class PurpurWorldConfig { +@@ -1919,6 +1997,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1915,6 +1994,7 @@ public class PurpurWorldConfig { +@@ -1930,6 +2009,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean polarBearRidable = false; -@@ -1924,6 +2004,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2019,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1938,11 +2019,13 @@ public class PurpurWorldConfig { +@@ -1953,11 +2034,13 @@ 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); @@ -1806,7 +1806,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); if (PurpurConfig.version < 10) { -@@ -1952,6 +2035,7 @@ public class PurpurWorldConfig { +@@ -1967,6 +2050,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1814,7 +1814,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean rabbitRidable = false; -@@ -1962,6 +2046,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2061,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1822,7 +1822,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1976,6 +2061,7 @@ public class PurpurWorldConfig { +@@ -1991,6 +2076,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); @@ -1830,7 +1830,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean ravagerRidable = false; -@@ -1984,6 +2070,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2085,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1838,7 +1838,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2012,11 +2099,13 @@ public class PurpurWorldConfig { +@@ -2027,11 +2114,13 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1852,7 +1852,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); if (PurpurConfig.version < 10) { -@@ -2026,6 +2115,7 @@ public class PurpurWorldConfig { +@@ -2041,6 +2130,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1860,7 +1860,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean sheepRidable = false; -@@ -2034,6 +2124,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2139,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1868,7 +1868,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2046,6 +2137,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2152,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); @@ -1876,7 +1876,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean shulkerRidable = false; -@@ -2058,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2073,6 +2165,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1884,7 +1884,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2074,6 +2167,7 @@ public class PurpurWorldConfig { +@@ -2089,6 +2182,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); @@ -1892,7 +1892,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean silverfishRidable = false; -@@ -2081,6 +2175,7 @@ public class PurpurWorldConfig { +@@ -2096,6 +2190,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1900,7 +1900,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2092,12 +2187,14 @@ public class PurpurWorldConfig { +@@ -2107,12 +2202,14 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1915,7 +1915,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2108,6 +2205,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2220,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1923,7 +1923,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean skeletonHorseRidableInWater = true; -@@ -2119,6 +2217,7 @@ public class PurpurWorldConfig { +@@ -2134,6 +2232,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1931,7 +1931,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2135,6 +2234,7 @@ public class PurpurWorldConfig { +@@ -2150,6 +2249,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); @@ -1939,7 +1939,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean slimeRidable = false; -@@ -2142,6 +2242,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2257,7 @@ public class PurpurWorldConfig { public String slimeMaxHealth = "size * size"; public Map slimeMaxHealthCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1947,7 +1947,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2153,6 +2254,7 @@ public class PurpurWorldConfig { +@@ -2168,6 +2269,7 @@ public class PurpurWorldConfig { slimeMaxHealth = getString("mobs.slime.attributes.max_health", slimeMaxHealth); slimeMaxHealthCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1955,7 +1955,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean snowGolemRidable = false; -@@ -2167,6 +2269,7 @@ public class PurpurWorldConfig { +@@ -2182,6 +2284,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1963,7 +1963,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2185,6 +2288,7 @@ public class PurpurWorldConfig { +@@ -2200,6 +2303,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); @@ -1971,7 +1971,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean squidRidable = false; -@@ -2193,6 +2297,7 @@ public class PurpurWorldConfig { +@@ -2208,6 +2312,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1979,7 +1979,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -2205,12 +2310,14 @@ public class PurpurWorldConfig { +@@ -2220,12 +2325,14 @@ 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); @@ -1994,7 +1994,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2221,12 +2328,14 @@ public class PurpurWorldConfig { +@@ -2236,12 +2343,14 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2009,7 +2009,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2237,6 +2346,7 @@ public class PurpurWorldConfig { +@@ -2252,6 +2361,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean striderRidable = false; -@@ -2245,6 +2355,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2370,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2025,7 +2025,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2257,6 +2368,7 @@ public class PurpurWorldConfig { +@@ -2272,6 +2383,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); @@ -2033,7 +2033,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean traderLlamaRidable = false; -@@ -2269,6 +2381,7 @@ public class PurpurWorldConfig { +@@ -2284,6 +2396,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2041,7 +2041,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2287,11 +2400,13 @@ public class PurpurWorldConfig { +@@ -2302,11 +2415,13 @@ 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); @@ -2055,7 +2055,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); if (PurpurConfig.version < 10) { -@@ -2301,6 +2416,7 @@ public class PurpurWorldConfig { +@@ -2316,6 +2431,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2063,7 +2063,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean turtleEggsBypassMobGriefing = false; -@@ -2316,6 +2432,7 @@ public class PurpurWorldConfig { +@@ -2331,6 +2447,7 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2071,7 +2071,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void turtleEggSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2330,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2345,6 +2462,7 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2079,7 +2079,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean vexRidable = false; -@@ -2337,6 +2455,7 @@ public class PurpurWorldConfig { +@@ -2352,6 +2470,7 @@ public class PurpurWorldConfig { public double vexMaxY = 256D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2087,7 +2087,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2348,6 +2467,7 @@ public class PurpurWorldConfig { +@@ -2363,6 +2482,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2095,7 +2095,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean villagerRidable = false; -@@ -2366,6 +2486,7 @@ public class PurpurWorldConfig { +@@ -2381,6 +2501,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2103,7 +2103,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2388,6 +2509,7 @@ public class PurpurWorldConfig { +@@ -2403,6 +2524,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); @@ -2111,7 +2111,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean vindicatorRidable = false; -@@ -2395,6 +2517,7 @@ public class PurpurWorldConfig { +@@ -2410,6 +2532,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2119,7 +2119,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2406,6 +2529,7 @@ public class PurpurWorldConfig { +@@ -2421,6 +2544,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2127,7 +2127,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean wanderingTraderRidable = false; -@@ -2415,6 +2539,7 @@ public class PurpurWorldConfig { +@@ -2430,6 +2554,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2135,7 +2135,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2428,12 +2553,14 @@ public class PurpurWorldConfig { +@@ -2443,12 +2568,14 @@ 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); @@ -2150,7 +2150,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2444,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2459,6 +2586,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2158,7 +2158,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean witherRidable = false; -@@ -2457,6 +2585,7 @@ public class PurpurWorldConfig { +@@ -2472,6 +2600,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2166,7 +2166,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2478,12 +2607,14 @@ public class PurpurWorldConfig { +@@ -2493,12 +2622,14 @@ 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); @@ -2181,7 +2181,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2494,6 +2625,7 @@ public class PurpurWorldConfig { +@@ -2509,6 +2640,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2189,7 +2189,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean wolfRidable = false; -@@ -2504,6 +2636,7 @@ public class PurpurWorldConfig { +@@ -2519,6 +2651,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2197,7 +2197,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2522,12 +2655,14 @@ public class PurpurWorldConfig { +@@ -2537,12 +2670,14 @@ 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); @@ -2212,7 +2212,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2538,6 +2673,7 @@ public class PurpurWorldConfig { +@@ -2553,6 +2688,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2220,7 +2220,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean zombieRidable = false; -@@ -2550,6 +2686,7 @@ public class PurpurWorldConfig { +@@ -2565,6 +2701,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2228,7 +2228,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2566,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2718,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); @@ -2236,7 +2236,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean zombieHorseRidableInWater = false; -@@ -2578,6 +2716,7 @@ public class PurpurWorldConfig { +@@ -2593,6 +2731,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2244,7 +2244,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2595,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2610,6 +2749,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); @@ -2252,7 +2252,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean zombieVillagerRidable = false; -@@ -2608,6 +2748,7 @@ public class PurpurWorldConfig { +@@ -2623,6 +2763,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2260,7 +2260,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2625,6 +2766,7 @@ public class PurpurWorldConfig { +@@ -2640,6 +2781,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); @@ -2268,7 +2268,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b } public boolean zombifiedPiglinRidable = false; -@@ -2636,6 +2778,7 @@ public class PurpurWorldConfig { +@@ -2651,6 +2793,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2276,7 +2276,7 @@ index 8d5525c7b7b867360d6e0b4222e8c2452790d994..f4dca5581c8d15963fd6d2cfa926737b private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2651,6 +2794,7 @@ public class PurpurWorldConfig { +@@ -2666,6 +2809,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);