diff --git a/patches/server/0178-Iron-golem-poppy-calms-anger.patch b/patches/server/0178-Iron-golem-calm-anger-options.patch similarity index 85% rename from patches/server/0178-Iron-golem-poppy-calms-anger.patch rename to patches/server/0178-Iron-golem-calm-anger-options.patch index 59cdd6d47..4cce3f2a6 100644 --- a/patches/server/0178-Iron-golem-poppy-calms-anger.patch +++ b/patches/server/0178-Iron-golem-calm-anger-options.patch @@ -1,11 +1,11 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 13 May 2021 21:22:51 -0500 -Subject: [PATCH] Iron golem poppy calms anger +Subject: [PATCH] Iron golem calm anger options diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 13cdc3a97c7707c9cb41e3da6395b0022fd661aa..7d181c78b22b7ad03674df6ab7288a2215aa3708 100644 +index 13cdc3a97c7707c9cb41e3da6395b0022fd661aa..1fcc7c27e905851871357423fc8185c882f838d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -101,6 +101,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -16,23 +16,34 @@ index 13cdc3a97c7707c9cb41e3da6395b0022fd661aa..7d181c78b22b7ad03674df6ab7288a22 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); +@@ -313,6 +314,8 @@ public class IronGolem extends AbstractGolem implements NeutralMob { + itemstack.shrink(1); + } + ++ if (this.level.purpurConfig.ironGolemHealCalm && isAngry() && getHealth() == getMaxHealth()) stopBeingAngry(); // Purpur ++ + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6dfba9bbc2c25044e8c5a676259f439a2a5348ef..de6fbcff60def3596a29352b0324d04af9630819 100644 +index 6dfba9bbc2c25044e8c5a676259f439a2a5348ef..55686e45f7d8a92c5363f411548157236543e36a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1344,6 +1344,7 @@ public class PurpurWorldConfig { +@@ -1344,6 +1344,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; + public boolean ironGolemPoppyCalm = false; ++ public boolean ironGolemHealCalm = false; private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1356,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1358,8 @@ 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); ++ ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); } public boolean llamaRidable = false; diff --git a/patches/server/0179-Breedable-parrots.patch b/patches/server/0179-Breedable-parrots.patch index 82be845cd..1b5c6186a 100644 --- a/patches/server/0179-Breedable-parrots.patch +++ b/patches/server/0179-Breedable-parrots.patch @@ -50,10 +50,10 @@ index ee52e83375521fa41369161356802c305deb605d..d68bb48cf703a3ed0bf843d5c0ab9caa @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index de6fbcff60def3596a29352b0324d04af9630819..b398535d5b84c2c17d66296dff4b311f3ea110f4 100644 +index 55686e45f7d8a92c5363f411548157236543e36a..90d0cbe43c6feffb3ab8d0c7be970a3a4219f869 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1512,6 +1512,7 @@ public class PurpurWorldConfig { +@@ -1514,6 +1514,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index de6fbcff60def3596a29352b0324d04af9630819..b398535d5b84c2c17d66296dff4b311f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1524,6 +1525,7 @@ public class PurpurWorldConfig { +@@ -1526,6 +1527,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0197-Shulker-spawn-from-bullet-options.patch b/patches/server/0197-Shulker-spawn-from-bullet-options.patch index 4e51ebc9a..4a0b5e8ea 100644 --- a/patches/server/0197-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0197-Shulker-spawn-from-bullet-options.patch @@ -61,10 +61,10 @@ index f812a75985d26785639491c9a980387a3f261f2d..b11fb39b69f5225ca7da72ca1a2200c7 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a970b7721dc0ff0303a80fe83c8342ed762153b1..bc4939abd4b3c2fe5c9866759963b79a4318ce92 100644 +index e6527157369e2babfbdfcf0cd3056ac0b450f4eb..7c4eac5536ee0577ff88bcf44c061448b7795a8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1888,6 +1888,11 @@ public class PurpurWorldConfig { +@@ -1890,6 +1890,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -76,7 +76,7 @@ index a970b7721dc0ff0303a80fe83c8342ed762153b1..bc4939abd4b3c2fe5c9866759963b79a private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1899,6 +1904,11 @@ public class PurpurWorldConfig { +@@ -1901,6 +1906,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0200-Configurable-hunger-starvation-damage.patch b/patches/server/0200-Configurable-hunger-starvation-damage.patch index 0bc2dc8d1..74cbd5aa4 100644 --- a/patches/server/0200-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0200-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 65421cfff05c0493f5fef1bdff03172c9e33f33e..63584faeec4e5013be7a377e3203ec16 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d3f73582dc2d732710ce6f6a2ca6a7f2353afe8e..cfda7bc71e1dc74636fdf57aa897c50bb0382535 100644 +index 1821bee2b071804016db70c180741839ecef9ca6..10dcb1623caa995922bba0a96f73907e05772e9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2522,4 +2522,9 @@ public class PurpurWorldConfig { +@@ -2524,4 +2524,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/0210-Silk-touchable-budding-amethyst.patch b/patches/server/0210-Silk-touchable-budding-amethyst.patch index e1a87a80f..dff22e4a5 100644 --- a/patches/server/0210-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0210-Silk-touchable-budding-amethyst.patch @@ -24,7 +24,7 @@ index 02fc3ede12eadbf72e26e31b1c475c7f5b2ad73a..2288e727929ffb3a3bca138fb0289408 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f8c3bb92cb1a43a2d74698c2801e8f79a0279f0..f31ea8c7e3354d890c593c2c1f10578d9b3748ed 100644 +index 0b14878546df0217fa83eabfc26f6ede84f8ebb2..a755dbab717e6899d57558c7c7f0b17d40ce09fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -691,6 +691,11 @@ public class PurpurWorldConfig { @@ -39,7 +39,7 @@ index 5f8c3bb92cb1a43a2d74698c2801e8f79a0279f0..f31ea8c7e3354d890c593c2c1f10578d public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2681,3 +2686,4 @@ public class PurpurWorldConfig { +@@ -2683,3 +2688,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch index 3e01ad25f..05a4d3d39 100644 --- a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 92d527081abd35acc646f66a0714f2dc01706dfe..02763379210a45a83b34c6acd6cb37c5 this.gameEvent(GameEvent.MOB_INTERACT, this.eyeBlockPosition()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51f82229af375f2cc9605fe33c912c2dec129ed7..f6657d08d19d8617b439097779b56c9f3c5c36c5 100644 +index 59cd244212822eea978625dcad475025dbff0c11..2b7d4eeda3244e32c19385dd81531cffc9b1a1d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2667,6 +2667,8 @@ public class PurpurWorldConfig { +@@ -2669,6 +2669,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 51f82229af375f2cc9605fe33c912c2dec129ed7..f6657d08d19d8617b439097779b56c9f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2682,6 +2684,8 @@ public class PurpurWorldConfig { +@@ -2684,6 +2686,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/0220-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch index c6b3b2b9c..0fc5c9daf 100644 --- a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 4778a33cef472b959aa645e6cd495204d3c8975f..e30d8bfb4269e872c20a9bf91348dd36 // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); //int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a49e363d975ac3a239e984c16f6a06250a1c3d40..fb68e14c61ce224453ddbf9d59dc676f001739f6 100644 +index 1bb12a3b52c997fa6d44f98ab73552ffaf87c595..3e14e9ca693cd1649514e84f32951bf70e18863a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2512,6 +2512,7 @@ public class PurpurWorldConfig { +@@ -2514,6 +2514,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index a49e363d975ac3a239e984c16f6a06250a1c3d40..fb68e14c61ce224453ddbf9d59dc676f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2533,6 +2534,7 @@ public class PurpurWorldConfig { +@@ -2535,6 +2536,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/0223-Conduit-behavior-configuration.patch b/patches/server/0223-Conduit-behavior-configuration.patch index 0ff3800cc..d63f2ff0d 100644 --- a/patches/server/0223-Conduit-behavior-configuration.patch +++ b/patches/server/0223-Conduit-behavior-configuration.patch @@ -44,10 +44,10 @@ index 96b6e914441ee1faa059aa5ddcf77ffb74e76ae9..31af7d8111e73169d3e02aa52799a018 } CraftEventFactory.blockDamage = null; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 02d090b33eae57d6c0996f61626acd7438ded7cb..4eb2347ecc0e4ed730a114ce75df860b493313a5 100644 +index 6e77bd28c293537bc7a76b242f01fbb63110b53b..4ca41612b59a003189d12e1062688a6ba920d287 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2731,5 +2731,28 @@ public class PurpurWorldConfig { +@@ -2733,5 +2733,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0224-Cauldron-fill-chances.patch b/patches/server/0224-Cauldron-fill-chances.patch index e69ea30ea..36de2a88a 100644 --- a/patches/server/0224-Cauldron-fill-chances.patch +++ b/patches/server/0224-Cauldron-fill-chances.patch @@ -18,10 +18,10 @@ index dbae4f3b56d0290c6d28b9beaaa3b459754d43e3..676184c48c3abd8e2fb9a04ae3e165dc @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4eb2347ecc0e4ed730a114ce75df860b493313a5..c71b53a9f9456f666c7ad73737a4adfd6da92da8 100644 +index 4ca41612b59a003189d12e1062688a6ba920d287..4c2b47abcb9f2f5d260cd5a07a01dac791462f69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2754,5 +2754,12 @@ public class PurpurWorldConfig { +@@ -2756,5 +2756,12 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0226-Shulker-change-color-with-dye.patch b/patches/server/0226-Shulker-change-color-with-dye.patch index e8a0119b9..bbcde4a0c 100644 --- a/patches/server/0226-Shulker-change-color-with-dye.patch +++ b/patches/server/0226-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index edaa34c6c2c65df77c696b4654e64bcf37a3ff20..e63a27abef4b9aab0c2afbb92da994e8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c9fb5443821fd7f3ae7a8a4fc8352ab8d998f40..cc8d3cb84a0b5a852845b75467d64861721b7ae4 100644 +index bf9a4047175bd22a25545d1e5feac6e475b8c436..24f78e964f39104be5f5eb6c961a7d98bfbeb362 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2097,6 +2097,7 @@ public class PurpurWorldConfig { +@@ -2099,6 +2099,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index 6c9fb5443821fd7f3ae7a8a4fc8352ab8d998f40..cc8d3cb84a0b5a852845b75467d64861 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2113,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2115,6 +2116,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/0240-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch index b247345f0..de94d783b 100644 --- a/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 02763379210a45a83b34c6acd6cb37c536e5ba36..1e3969d0a462e5e8270128dbc22a4d09 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1a823bb8c6740d9a37c42eb49dc618c62414505..4cf4e592436ffb8b2f984ea5d3908056261b063e 100644 +index 21a4f4e4ddf8d9b27df012192db11344dfd44752..f1d8ddc36abfd278cc7d956f5fe980e0d1bcafeb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2731,6 +2731,7 @@ public class PurpurWorldConfig { +@@ -2733,6 +2733,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index b1a823bb8c6740d9a37c42eb49dc618c62414505..4cf4e592436ffb8b2f984ea5d3908056 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2748,6 +2749,7 @@ public class PurpurWorldConfig { +@@ -2750,6 +2751,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/0244-Mobs-always-drop-experience.patch b/patches/server/0244-Mobs-always-drop-experience.patch index e2971414e..c1ca2dec1 100644 --- a/patches/server/0244-Mobs-always-drop-experience.patch +++ b/patches/server/0244-Mobs-always-drop-experience.patch @@ -149,7 +149,7 @@ index 8cdae4fb31b517015e6b154a68b2c37fe76fa127..0d3528f24b4184f7553bd1b91279f3a0 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 849a2aec719c8755409668fd6a7c4899eff4f882..2deccf88c56fc9cccc9abaabe1a516cc8f4eb2eb 100644 +index c7ac716958900ccbd03fda080147de5332596a64..add29f2da31ff2fe6f531e78a0b49a9aa1ae8452 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -105,6 +105,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -1157,7 +1157,7 @@ index f3994e53af79a4c3bb327e43cf133a12c20662bf..2acf9de429b75acfe5953628ca503260 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649e048bc00 100644 +index bc9acfdb90b6ee2fbb948df98fb0ececfc8fa980..c528e2b9f9bb2879f54658bd459722890b1a215d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1021,12 +1021,14 @@ public class PurpurWorldConfig { @@ -1587,23 +1587,23 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean ironGolemRidable = false; -@@ -1691,6 +1745,7 @@ public class PurpurWorldConfig { - public double ironGolemMaxHealth = 100.0D; +@@ -1692,6 +1746,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; + public boolean ironGolemHealCalm = false; + public boolean ironGolemAlwaysDropExp = false; private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1704,6 +1759,7 @@ public class PurpurWorldConfig { - ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); +@@ -1706,6 +1761,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); + ironGolemAlwaysDropExp = getBoolean("mobs.iron_golem.always-drop-exp", ironGolemAlwaysDropExp); } public boolean llamaRidable = false; -@@ -1718,6 +1774,7 @@ public class PurpurWorldConfig { +@@ -1720,6 +1776,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1738,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1740,6 +1797,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); @@ -1619,7 +1619,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean magmaCubeRidable = false; -@@ -1748,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1808,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1762,6 +1821,7 @@ public class PurpurWorldConfig { +@@ -1764,6 +1823,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean mooshroomRidable = false; -@@ -1770,6 +1830,7 @@ public class PurpurWorldConfig { +@@ -1772,6 +1832,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1782,6 +1843,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1845,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); @@ -1651,7 +1651,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean muleRidableInWater = false; -@@ -1793,6 +1855,7 @@ public class PurpurWorldConfig { +@@ -1795,6 +1857,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1810,6 +1873,7 @@ public class PurpurWorldConfig { +@@ -1812,6 +1875,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); @@ -1667,7 +1667,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean ocelotRidable = false; -@@ -1818,6 +1882,7 @@ public class PurpurWorldConfig { +@@ -1820,6 +1884,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1830,6 +1895,7 @@ public class PurpurWorldConfig { +@@ -1832,6 +1897,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); @@ -1683,7 +1683,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean pandaRidable = false; -@@ -1838,6 +1904,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1906,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1850,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1919,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); @@ -1699,7 +1699,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean parrotRidable = false; -@@ -1859,6 +1927,7 @@ public class PurpurWorldConfig { +@@ -1861,6 +1929,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1872,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +1943,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); @@ -1715,7 +1715,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean phantomRidable = false; -@@ -1905,6 +1975,7 @@ public class PurpurWorldConfig { +@@ -1907,6 +1977,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1946,6 +2017,7 @@ public class PurpurWorldConfig { +@@ -1948,6 +2019,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean pigRidable = false; -@@ -1955,6 +2027,7 @@ public class PurpurWorldConfig { +@@ -1957,6 +2029,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1968,6 +2041,7 @@ public class PurpurWorldConfig { +@@ -1970,6 +2043,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean piglinRidable = false; -@@ -1977,6 +2051,7 @@ public class PurpurWorldConfig { +@@ -1979,6 +2053,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1990,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -1992,6 +2067,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean piglinBruteRidable = false; -@@ -1997,6 +2073,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2075,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2008,6 +2085,7 @@ public class PurpurWorldConfig { +@@ -2010,6 +2087,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean pillagerRidable = false; -@@ -2016,6 +2094,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2096,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2028,6 +2107,7 @@ public class PurpurWorldConfig { +@@ -2030,6 +2109,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean polarBearRidable = false; -@@ -2038,6 +2118,7 @@ public class PurpurWorldConfig { +@@ -2040,6 +2120,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2053,12 +2134,14 @@ public class PurpurWorldConfig { +@@ -2055,12 +2136,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2069,6 +2152,7 @@ public class PurpurWorldConfig { +@@ -2071,6 +2154,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean rabbitRidable = false; -@@ -2080,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2166,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2095,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2097,6 +2182,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean ravagerRidable = false; -@@ -2104,6 +2190,7 @@ public class PurpurWorldConfig { +@@ -2106,6 +2192,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2133,12 +2220,14 @@ public class PurpurWorldConfig { +@@ -2135,12 +2222,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2149,6 +2238,7 @@ public class PurpurWorldConfig { +@@ -2151,6 +2240,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean sheepRidable = false; -@@ -2158,6 +2248,7 @@ public class PurpurWorldConfig { +@@ -2160,6 +2250,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2171,6 +2262,7 @@ public class PurpurWorldConfig { +@@ -2173,6 +2264,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean shulkerRidable = false; -@@ -2184,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2186,6 +2278,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2201,6 +2294,7 @@ public class PurpurWorldConfig { +@@ -2203,6 +2296,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean silverfishRidable = false; -@@ -2209,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2211,6 +2305,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2221,6 +2316,7 @@ public class PurpurWorldConfig { +@@ -2223,6 +2318,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean skeletonRidable = false; -@@ -2228,6 +2324,7 @@ public class PurpurWorldConfig { +@@ -2230,6 +2326,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2239,6 +2336,7 @@ public class PurpurWorldConfig { +@@ -2241,6 +2338,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean skeletonHorseRidableInWater = true; -@@ -2250,6 +2348,7 @@ public class PurpurWorldConfig { +@@ -2252,6 +2350,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2266,6 +2365,7 @@ public class PurpurWorldConfig { +@@ -2268,6 +2367,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean slimeRidable = false; -@@ -2276,6 +2376,7 @@ public class PurpurWorldConfig { +@@ -2278,6 +2378,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2290,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2393,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean snowGolemRidable = false; -@@ -2305,6 +2407,7 @@ public class PurpurWorldConfig { +@@ -2307,6 +2409,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2324,6 +2427,7 @@ public class PurpurWorldConfig { +@@ -2326,6 +2429,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean squidRidable = false; -@@ -2333,6 +2437,7 @@ public class PurpurWorldConfig { +@@ -2335,6 +2439,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2346,6 +2451,7 @@ public class PurpurWorldConfig { +@@ -2348,6 +2453,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean spiderRidable = false; -@@ -2353,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2355,6 +2461,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2364,6 +2471,7 @@ public class PurpurWorldConfig { +@@ -2366,6 +2473,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean strayRidable = false; -@@ -2371,6 +2479,7 @@ public class PurpurWorldConfig { +@@ -2373,6 +2481,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2382,6 +2491,7 @@ public class PurpurWorldConfig { +@@ -2384,6 +2493,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean striderRidable = false; -@@ -2391,6 +2501,7 @@ public class PurpurWorldConfig { +@@ -2393,6 +2503,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2404,6 +2515,7 @@ public class PurpurWorldConfig { +@@ -2406,6 +2517,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean traderLlamaRidable = false; -@@ -2417,6 +2529,7 @@ public class PurpurWorldConfig { +@@ -2419,6 +2531,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2436,12 +2549,14 @@ public class PurpurWorldConfig { +@@ -2438,12 +2551,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2452,6 +2567,7 @@ public class PurpurWorldConfig { +@@ -2454,6 +2569,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean turtleRidable = false; -@@ -2460,6 +2576,7 @@ public class PurpurWorldConfig { +@@ -2462,6 +2578,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2472,6 +2589,7 @@ public class PurpurWorldConfig { +@@ -2474,6 +2591,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean vexRidable = false; -@@ -2480,6 +2598,7 @@ public class PurpurWorldConfig { +@@ -2482,6 +2600,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2492,6 +2611,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2613,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean villagerRidable = false; -@@ -2511,6 +2631,7 @@ public class PurpurWorldConfig { +@@ -2513,6 +2633,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2534,6 +2655,7 @@ public class PurpurWorldConfig { +@@ -2536,6 +2657,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean vindicatorRidable = false; -@@ -2542,6 +2664,7 @@ public class PurpurWorldConfig { +@@ -2544,6 +2666,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2554,6 +2677,7 @@ public class PurpurWorldConfig { +@@ -2556,6 +2679,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean wanderingTraderRidable = false; -@@ -2564,6 +2688,7 @@ public class PurpurWorldConfig { +@@ -2566,6 +2690,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2578,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2580,6 +2705,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean witchRidable = false; -@@ -2585,6 +2711,7 @@ public class PurpurWorldConfig { +@@ -2587,6 +2713,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2596,6 +2723,7 @@ public class PurpurWorldConfig { +@@ -2598,6 +2725,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean witherRidable = false; -@@ -2610,6 +2738,7 @@ public class PurpurWorldConfig { +@@ -2612,6 +2740,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2632,6 +2761,7 @@ public class PurpurWorldConfig { +@@ -2634,6 +2763,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean witherSkeletonRidable = false; -@@ -2639,6 +2769,7 @@ public class PurpurWorldConfig { +@@ -2641,6 +2771,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2650,6 +2781,7 @@ public class PurpurWorldConfig { +@@ -2652,6 +2783,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean wolfRidable = false; -@@ -2661,6 +2793,7 @@ public class PurpurWorldConfig { +@@ -2663,6 +2795,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2680,6 +2813,7 @@ public class PurpurWorldConfig { +@@ -2682,6 +2815,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean zoglinRidable = false; -@@ -2687,6 +2821,7 @@ public class PurpurWorldConfig { +@@ -2689,6 +2823,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2698,6 +2833,7 @@ public class PurpurWorldConfig { +@@ -2700,6 +2835,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean zombieRidable = false; -@@ -2711,6 +2847,7 @@ public class PurpurWorldConfig { +@@ -2713,6 +2849,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2728,6 +2865,7 @@ public class PurpurWorldConfig { +@@ -2730,6 +2867,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean zombieHorseRidableInWater = false; -@@ -2740,6 +2878,7 @@ public class PurpurWorldConfig { +@@ -2742,6 +2880,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2757,6 +2896,7 @@ public class PurpurWorldConfig { +@@ -2759,6 +2898,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean zombieVillagerRidable = false; -@@ -2771,6 +2911,7 @@ public class PurpurWorldConfig { +@@ -2773,6 +2913,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2789,6 +2930,7 @@ public class PurpurWorldConfig { +@@ -2791,6 +2932,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 } public boolean zombifiedPiglinRidable = false; -@@ -2801,6 +2943,7 @@ public class PurpurWorldConfig { +@@ -2803,6 +2945,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index d609aa408d7b72af9fbef74072844652b8b01d20..ec72a6f07685d5401aa2a10618ec9649 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2817,6 +2960,7 @@ public class PurpurWorldConfig { +@@ -2819,6 +2962,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/0247-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch index 78b95f6fb..efe5b0529 100644 --- a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -39,10 +39,10 @@ index 177f9fe0d0a10e5d3644805751f2050fe984fde7..07dc3b10a275895f23fcf50720ef25fa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec72a6f07685d5401aa2a10618ec9649e048bc00..e38c94ce88ba0d2803b4b0146844746c3302a3cb 100644 +index c528e2b9f9bb2879f54658bd459722890b1a215d..c684f8e65ae8e32c85d511030358c5b1cd56c003 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2460,6 +2460,7 @@ public class PurpurWorldConfig { +@@ -2462,6 +2462,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; public boolean spiderAlwaysDropExp = false; @@ -50,7 +50,7 @@ index ec72a6f07685d5401aa2a10618ec9649e048bc00..e38c94ce88ba0d2803b4b0146844746c private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2472,6 +2473,7 @@ public class PurpurWorldConfig { +@@ -2474,6 +2475,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp); diff --git a/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch index 9da37b127..dd9075330 100644 --- a/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index 17d1a0b43b2d155535cf2483af4ba9dd09700c83..fbe71ed86553965aa9fc20b7d8e6fdef if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 483a6e1c05b8a103f639d37daeb4ee805e9dba96..638ec0b7d026f0164a73f03fed36c25ba17f53a3 100644 +index 19873560257005a4039454f53352f1817b79a520..ce431461ea8b55e5b3bf87c3a1a338a63acc578e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2253,6 +2253,7 @@ public class PurpurWorldConfig { +@@ -2255,6 +2255,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 483a6e1c05b8a103f639d37daeb4ee805e9dba96..638ec0b7d026f0164a73f03fed36c25b private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2267,6 +2268,7 @@ public class PurpurWorldConfig { +@@ -2269,6 +2270,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0251-Mob-head-visibility-percent.patch b/patches/server/0251-Mob-head-visibility-percent.patch index b59c7310c..0f864475b 100644 --- a/patches/server/0251-Mob-head-visibility-percent.patch +++ b/patches/server/0251-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 0f36cf3ab761d4f920b461054dba8e1dcf55ffc1..6e3cd8c1e0aa87de00824bfc5a06a6bf9cbc907c 100644 +index 35bc51479814a293d5ebed62e0ed0d2e178bab2f..78c999b20a312b576095a745d89229cbc110c3cd 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -989,9 +989,17 @@ public abstract class LivingEntity extends Entity { @@ -29,7 +29,7 @@ index 0f36cf3ab761d4f920b461054dba8e1dcf55ffc1..6e3cd8c1e0aa87de00824bfc5a06a6bf // 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 c7bdfa210836be7a5f5c9956a24f4b791a590f4b..a2b645a13cda2719b361e2cc0473e75e3cfb2383 100644 +index 7017a397dc2a3e27376c95983cedcd6313ca8ebd..978be4f1f14a8fe647ea31ff2002a16010210a33 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1256,6 +1256,7 @@ public class PurpurWorldConfig { @@ -48,7 +48,7 @@ index c7bdfa210836be7a5f5c9956a24f4b791a590f4b..a2b645a13cda2719b361e2cc0473e75e } public boolean dolphinRidable = false; -@@ -2333,6 +2335,7 @@ public class PurpurWorldConfig { +@@ -2335,6 +2337,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -56,7 +56,7 @@ index c7bdfa210836be7a5f5c9956a24f4b791a590f4b..a2b645a13cda2719b361e2cc0473e75e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2345,6 +2348,7 @@ public class PurpurWorldConfig { +@@ -2347,6 +2350,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -64,7 +64,7 @@ index c7bdfa210836be7a5f5c9956a24f4b791a590f4b..a2b645a13cda2719b361e2cc0473e75e } public boolean skeletonHorseRidableInWater = true; -@@ -2858,6 +2862,7 @@ public class PurpurWorldConfig { +@@ -2860,6 +2864,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -72,7 +72,7 @@ index c7bdfa210836be7a5f5c9956a24f4b791a590f4b..a2b645a13cda2719b361e2cc0473e75e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2876,6 +2881,7 @@ public class PurpurWorldConfig { +@@ -2878,6 +2883,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/0260-Configurable-phantom-size.patch b/patches/server/0260-Configurable-phantom-size.patch index cba9368e4..617e0bec2 100644 --- a/patches/server/0260-Configurable-phantom-size.patch +++ b/patches/server/0260-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 9d83b50d43edc7bfd857daab7be90558d86ca334..c12fbc6a8ba9fd6807a5d43c49881ea4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6cb51605e560b9e4a57cb87b9b731575f4c1cd8c..2de131b31d8c80ca9be130b8755db9bec379cf6c 100644 +index e9b1fccdde19d543dd02a08889dd37c6a8ebcb60..1fd070e037b8bbd358ce162a011cddc1a565385c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1992,6 +1992,8 @@ public class PurpurWorldConfig { +@@ -1994,6 +1994,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 6cb51605e560b9e4a57cb87b9b731575f4c1cd8c..2de131b31d8c80ca9be130b8755db9be private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2034,6 +2036,13 @@ public class PurpurWorldConfig { +@@ -2036,6 +2038,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/0263-Configurable-minimum-demand-for-trades.patch b/patches/server/0263-Configurable-minimum-demand-for-trades.patch index 742a3f0bc..1bc2d9415 100644 --- a/patches/server/0263-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0263-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index c9cb0717c2793acd5b5870a6cc4d672d69a40026..9a402505375af2051673245ec0a1daf9 public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a2ecb3a3728cc603017a1d5f06be1d5fb3d47a8..287941dc162c47303ec12c18c0ea4747169ffcd6 100644 +index 1fd070e037b8bbd358ce162a011cddc1a565385c..e4e75914042b6e1024662ef59b2190865a879759 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2663,6 +2663,7 @@ public class PurpurWorldConfig { +@@ -2665,6 +2665,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 8a2ecb3a3728cc603017a1d5f06be1d5fb3d47a8..287941dc162c47303ec12c18c0ea4747 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2687,6 +2688,7 @@ public class PurpurWorldConfig { +@@ -2689,6 +2690,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);