diff --git a/patches/server/0186-Add-permission-bypass-for-portal-waiting.patch b/patches/server/0186-Add-permission-bypass-for-portal-waiting.patch deleted file mode 100644 index a1bcde2de..000000000 --- a/patches/server/0186-Add-permission-bypass-for-portal-waiting.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sat, 26 Jun 2021 23:05:12 -0500 -Subject: [PATCH] Add permission bypass for portal waiting - - -diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 75250719f8d10dd06471758b2848d132e5b1aa70..48d8198277720f17bd06e774746a96298ef3b164 100644 ---- a/src/main/java/net/minecraft/world/entity/player/Player.java -+++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity { - public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; - // Paper end - public int sixRowEnderchestSlotCount = -1; // Purpur -+ public boolean canPortalInstant = false; // Purpur - - // CraftBukkit start - public boolean fauxSleeping; -@@ -469,7 +470,7 @@ public abstract class Player extends LivingEntity { - - @Override - public int getPortalWaitTime() { -- return this.abilities.invulnerable ? 1 : 80; -+ return this.abilities.invulnerable || canPortalInstant ? 1 : 80; // Purpur - } - - @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 1b008e5217c5bbf566a213abb92e1c7c43a3a7c2..468023414b4a9119a3418b8e8a5e38375bbd2407 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { - @Override - public void recalculatePermissions() { - this.perm.recalculatePermissions(); -+ getHandle().canPortalInstant = hasPermission("purpur.portal.instant"); // Purpur - } - - @Override diff --git a/patches/server/0186-Add-portal-waiting-option-permission-bypass.patch b/patches/server/0186-Add-portal-waiting-option-permission-bypass.patch new file mode 100644 index 000000000..72d75ddb4 --- /dev/null +++ b/patches/server/0186-Add-portal-waiting-option-permission-bypass.patch @@ -0,0 +1,61 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 26 Jun 2021 23:05:12 -0500 +Subject: [PATCH] Add portal waiting option & permission bypass + + +diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java +index 75250719f8d10dd06471758b2848d132e5b1aa70..4557ae0ab9387c99f4f416205e16a2ab92dbaab5 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity { + public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; + // Paper end + public int sixRowEnderchestSlotCount = -1; // Purpur ++ public boolean canPortalInstant = false; // Purpur + + // CraftBukkit start + public boolean fauxSleeping; +@@ -469,7 +470,7 @@ public abstract class Player extends LivingEntity { + + @Override + public int getPortalWaitTime() { +- return this.abilities.invulnerable ? 1 : 80; ++ return canPortalInstant ? 1 : this.abilities.invulnerable ? this.level.purpurConfig.playerCreativePortalWaitTime : this.level.purpurConfig.playerPortalWaitTime; // Purpur + } + + @Override +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +index 1b008e5217c5bbf566a213abb92e1c7c43a3a7c2..468023414b4a9119a3418b8e8a5e38375bbd2407 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { + @Override + public void recalculatePermissions() { + this.perm.recalculatePermissions(); ++ getHandle().canPortalInstant = hasPermission("purpur.portal.instant"); // Purpur + } + + @Override +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 62f984a5bbfd50a2ad66bfcde4c1b461cb9c1e6a..09716be179c69cbab1561c2b36cbdf9d03269d7f 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -394,6 +394,8 @@ public class PurpurWorldConfig { + public double playerCriticalDamageMultiplier = 1.5D; + public int playerBurpDelay = 10; + public boolean playerBurpWhenFull = false; ++ public int playerPortalWaitTime = 80; ++ public int playerCreativePortalWaitTime = 1; + private void playerSettings() { + if (PurpurConfig.version < 19) { + boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); +@@ -418,6 +420,8 @@ public class PurpurWorldConfig { + playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); + playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); + playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); ++ playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); ++ playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); + } + + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0187-Shulker-spawn-from-bullet-options.patch b/patches/server/0187-Shulker-spawn-from-bullet-options.patch index 4f7ac16a8..111c069e6 100644 --- a/patches/server/0187-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0187-Shulker-spawn-from-bullet-options.patch @@ -67,10 +67,10 @@ index 2170715ed0e81a3055e4ab546c8b294c5ef7f142..beae4e2b9f61df83215de860d64c4ce2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 62f984a5bbfd50a2ad66bfcde4c1b461cb9c1e6a..80aa54f4e04009a044db29f0aa523777904bf6c3 100644 +index 09716be179c69cbab1561c2b36cbdf9d03269d7f..1ffa2a0336351162d09fd2cdd70aa9db5f344f41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1939,6 +1939,11 @@ public class PurpurWorldConfig { +@@ -1943,6 +1943,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -82,7 +82,7 @@ index 62f984a5bbfd50a2ad66bfcde4c1b461cb9c1e6a..80aa54f4e04009a044db29f0aa523777 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1950,6 +1955,11 @@ public class PurpurWorldConfig { +@@ -1954,6 +1959,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/0189-Option-to-make-drowned-break-doors.patch b/patches/server/0189-Option-to-make-drowned-break-doors.patch index 015b398a7..2c405dab5 100644 --- a/patches/server/0189-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0189-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 81646291540b07d6e1fa4ca06eda35f048a7a4fe..7a348d243f2a39c4e3faa1995eaf3f0c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ddb58e7703cc936f0b6b8765e82bc1be40044d3..0fd50512402abcae8be322491f853da68843dabb 100644 +index 443d32da515574765d2bfd7430110c119cdd2256..0234b1c52738bc8f831486fd4c4911d7ad8f3eb0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1085,6 +1085,7 @@ public class PurpurWorldConfig { +@@ -1089,6 +1089,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 2ddb58e7703cc936f0b6b8765e82bc1be40044d3..0fd50512402abcae8be322491f853da6 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1100,6 +1101,7 @@ public class PurpurWorldConfig { +@@ -1104,6 +1105,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0190-Configurable-hunger-starvation-damage.patch b/patches/server/0190-Configurable-hunger-starvation-damage.patch index ad0dd863d..424987ccc 100644 --- a/patches/server/0190-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0190-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 87f9e03fb5e095396e054a84be60ec455d3fbd35..3d2e3c7dd3bf5c8f483a933e9f686858 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0fd50512402abcae8be322491f853da68843dabb..6c912eed4ba23d06152d27c6f5e51780a6b525b2 100644 +index 0234b1c52738bc8f831486fd4c4911d7ad8f3eb0..4f864dd35bc5ecd1631b51080468b4c7d8b9af56 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2596,4 +2596,9 @@ public class PurpurWorldConfig { +@@ -2600,4 +2600,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/0193-Tool-actionable-options.patch b/patches/server/0193-Tool-actionable-options.patch index 2244aec35..7e2f3081e 100644 --- a/patches/server/0193-Tool-actionable-options.patch +++ b/patches/server/0193-Tool-actionable-options.patch @@ -122,10 +122,10 @@ index 180aec596110309aade13d2080f8824d152b07cb..c4aec1e5135a79837918b692e75a7b55 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c912eed4ba23d06152d27c6f5e51780a6b525b2..e7c6f73fecea09c0f26307a9d18a967652f6200a 100644 +index 4f864dd35bc5ecd1631b51080468b4c7d8b9af56..d5f3e9ebf5b068cbb95c7a27d674e9f9d4e05b59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -524,6 +524,167 @@ public class PurpurWorldConfig { +@@ -528,6 +528,167 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0198-Silk-touchable-budding-amethyst.patch b/patches/server/0198-Silk-touchable-budding-amethyst.patch index 36e61735c..dbc77f6a6 100644 --- a/patches/server/0198-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0198-Silk-touchable-budding-amethyst.patch @@ -24,10 +24,10 @@ index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a90 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a587f7c8eb8400caf37dc87fd305b960ba7cb577..e0597971dbf26d38d69909d50d39c260bc026fd4 100644 +index 55508e7df23be27a17e5ad320262ecd0b69ef11d..e2caaaa817fc458f500ca01af2e7061fe8f53088 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -726,6 +726,11 @@ public class PurpurWorldConfig { +@@ -730,6 +730,11 @@ public class PurpurWorldConfig { } } @@ -39,7 +39,7 @@ index a587f7c8eb8400caf37dc87fd305b960ba7cb577..e0597971dbf26d38d69909d50d39c260 public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2765,3 +2770,4 @@ public class PurpurWorldConfig { +@@ -2769,3 +2774,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0199-Big-dripleaf-tilt-delay.patch b/patches/server/0199-Big-dripleaf-tilt-delay.patch index 2b85a4a54..c27951cb4 100644 --- a/patches/server/0199-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0199-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8537581e7ca1f4efb492a2e734f46f947f36cffa..5f89229ff68d923c5cdee40e72e379ba if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e0597971dbf26d38d69909d50d39c260bc026fd4..c3fc9f7dab12b0dfd7041962191eb419b3199008 100644 +index e2caaaa817fc458f500ca01af2e7061fe8f53088..332721c3917d73f9d60445bc0013595faf1eb35a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -726,6 +726,22 @@ public class PurpurWorldConfig { +@@ -730,6 +730,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0200-Player-ridable-in-water-option.patch b/patches/server/0200-Player-ridable-in-water-option.patch index 71505a22a..2d7356017 100644 --- a/patches/server/0200-Player-ridable-in-water-option.patch +++ b/patches/server/0200-Player-ridable-in-water-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player ridable in water option diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 48d8198277720f17bd06e774746a96298ef3b164..74c660bcc77c18241c6ccc0450174a15b0ac4d1f 100644 +index 4557ae0ab9387c99f4f416205e16a2ab92dbaab5..d548510ab31185d8c4978b86834a2684fff90570 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -2078,6 +2078,11 @@ public abstract class Player extends LivingEntity { @@ -21,21 +21,21 @@ index 48d8198277720f17bd06e774746a96298ef3b164..74c660bcc77c18241c6ccc0450174a15 if (!this.isPassenger() && this.onGround && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 312f1a7cc9f15d0cd7627f32cfa9f86ae12eae7a..b368159f9e7cb5c048673d3330693f8b02c2a7c1 100644 +index 332721c3917d73f9d60445bc0013595faf1eb35a..52fbd22e5f19c38b3f53acd63c005644d411b0e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -398,6 +398,7 @@ public class PurpurWorldConfig { - public double playerCriticalDamageMultiplier = 1.5D; - public int playerBurpDelay = 10; +@@ -400,6 +400,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; + public int playerPortalWaitTime = 80; + public int playerCreativePortalWaitTime = 1; + public boolean playerRidableInWater = false; private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -422,6 +423,7 @@ public class PurpurWorldConfig { - playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); - playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); +@@ -426,6 +427,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); + playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); + playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); + playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); } diff --git a/patches/server/0201-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0201-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 87cc67a71..e6c0f56c4 100644 --- a/patches/server/0201-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0201-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index bfde674f2e5f88cfe9a4c760a9f8eb9038eaef21..0cb3a52990eb17339fbd61e1649a2774 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2613b962d13fecc6c6bb029b98ea47b338188b2f..6ea932028d3d429b23f3ed9e5f7fe852a0534ad4 100644 +index 52fbd22e5f19c38b3f53acd63c005644d411b0e6..3523fed89e2f42ef3e92c91a5f12c9aa92e3d32d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1348,6 +1348,7 @@ public class PurpurWorldConfig { +@@ -1352,6 +1352,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 2613b962d13fecc6c6bb029b98ea47b338188b2f..6ea932028d3d429b23f3ed9e5f7fe852 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1370,6 +1371,7 @@ public class PurpurWorldConfig { +@@ -1374,6 +1375,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0205-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0205-Customizeable-Zombie-Villager-curing-times.patch index e7b78a80d..2358e9ec9 100644 --- a/patches/server/0205-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0205-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 6e1caf05b5577fec82354b4c59e3f86b3c1c1dbc..a6d9354d8ddac808cc89c5fe70842fc2 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ddb672215761df5b19cde908ff2d31c933894b1..9c4a8fffcb992e7a1f7422ec1ac1535f795a053d 100644 +index 6758c34aea78d8633729c4269017605c8dbf2f7d..6bf505571f44af7d7bae7ee99f29dad81c6ff4ec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2749,6 +2749,8 @@ public class PurpurWorldConfig { +@@ -2753,6 +2753,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 5ddb672215761df5b19cde908ff2d31c933894b1..9c4a8fffcb992e7a1f7422ec1ac1535f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2764,6 +2766,8 @@ public class PurpurWorldConfig { +@@ -2768,6 +2770,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/0206-Option-for-sponges-to-work-on-lava.patch b/patches/server/0206-Option-for-sponges-to-work-on-lava.patch index 9da2de61b..c7e84c034 100644 --- a/patches/server/0206-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0206-Option-for-sponges-to-work-on-lava.patch @@ -18,10 +18,10 @@ index d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829..df04a571ebd3c04bc7b58c1ee5661a1f ++i; if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c4a8fffcb992e7a1f7422ec1ac1535f795a053d..92d1abe0854603bedfd6f38404d8716d57572be2 100644 +index 6bf505571f44af7d7bae7ee99f29dad81c6ff4ec..18e06df80a74203c2dd38c4d616ab90e448ee5c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -937,9 +937,11 @@ public class PurpurWorldConfig { +@@ -941,9 +941,11 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 64; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0207-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0207-Toggle-for-Wither-s-spawn-sound.patch index 5f536a2f0..d112b1145 100644 --- a/patches/server/0207-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0207-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index eeab4bb9727be75a4167aeb8ed1c80a2a2145be9..b746f793228560275e2a50bd2342f20d // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92d1abe0854603bedfd6f38404d8716d57572be2..f920f804b22b3fc03f03b66bfc8a382a1d89929f 100644 +index 18e06df80a74203c2dd38c4d616ab90e448ee5c3..5f8df9955293042ce98f8cc453fa618a18d9be0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2594,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2598,6 +2598,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 92d1abe0854603bedfd6f38404d8716d57572be2..f920f804b22b3fc03f03b66bfc8a382a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2615,6 +2616,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2620,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/0208-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0208-Cactus-breaks-from-solid-neighbors-config.patch index c81705b12..d3a001c35 100644 --- a/patches/server/0208-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0208-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index 7579946ce222b6ab3685a7fd9821bcd5a4babe33..2fffe4452d8f3fa5b9365dff1cfe5b5d return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f920f804b22b3fc03f03b66bfc8a382a1d89929f..32d2d06e70566bac1cced7e6358acc328e8d56b9 100644 +index 5f8df9955293042ce98f8cc453fa618a18d9be0f..80ba5482192e449ea67408340d6bba349b97fb0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -758,6 +758,11 @@ public class PurpurWorldConfig { +@@ -762,6 +762,11 @@ public class PurpurWorldConfig { buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch); } diff --git a/patches/server/0209-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0209-Config-to-remove-curse-of-binding-with-weakness.patch index 1f2cf29f9..ccb6e3583 100644 --- a/patches/server/0209-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0209-Config-to-remove-curse-of-binding-with-weakness.patch @@ -26,20 +26,20 @@ index da0f5c5e6ca7ce7b38792e6da52c5cdcdbae3b78..4136bcd49fe05d916ab65de0e8661451 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b0ed4fc2138f2a8f91cc90af334e4a502929d88..daf3c30dc7f8d40e6e71184b6e0a2f5305027849 100644 +index 80ba5482192e449ea67408340d6bba349b97fb0a..449f48e8447b820edc53db4cdff56b2cc0af99c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -408,6 +408,7 @@ public class PurpurWorldConfig { - public int playerBurpDelay = 10; - public boolean playerBurpWhenFull = false; +@@ -410,6 +410,7 @@ public class PurpurWorldConfig { + public int playerPortalWaitTime = 80; + public int playerCreativePortalWaitTime = 1; public boolean playerRidableInWater = false; + public boolean playerRemoveBindingWithWeakness = false; private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -433,6 +434,7 @@ public class PurpurWorldConfig { - playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); - playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); +@@ -437,6 +438,7 @@ public class PurpurWorldConfig { + playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); + playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); + playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); } diff --git a/patches/server/0210-Conduit-behavior-configuration.patch b/patches/server/0210-Conduit-behavior-configuration.patch index 54ee65d5c..5e9268c1f 100644 --- a/patches/server/0210-Conduit-behavior-configuration.patch +++ b/patches/server/0210-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 87b54db440a793f805cfa6abfe9d5c5b6f37aaae..944ea228713704695dfaf4c673178ceb73d08008 100644 +index 449f48e8447b820edc53db4cdff56b2cc0af99c1..9bed8e9875f270aeca4ef41ff15208a464a428a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2813,5 +2813,28 @@ public class PurpurWorldConfig { +@@ -2817,5 +2817,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0211-Cauldron-fill-chances.patch b/patches/server/0211-Cauldron-fill-chances.patch index a9754695f..0b33975fe 100644 --- a/patches/server/0211-Cauldron-fill-chances.patch +++ b/patches/server/0211-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index 6b909d41ccdf6c1ac3ac0c4e673ff52f0d14a238..b8f69063cec4d31c9d9525a04c46ed89 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 944ea228713704695dfaf4c673178ceb73d08008..711cc863c06731e347893c75fe84d9873859297e 100644 +index 9bed8e9875f270aeca4ef41ff15208a464a428a1..ed2b5652e814b035cef56b1e1fe2de63c5176521 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2836,5 +2836,16 @@ public class PurpurWorldConfig { +@@ -2840,5 +2840,16 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0213-Shulker-change-color-with-dye.patch b/patches/server/0213-Shulker-change-color-with-dye.patch index c0fcdf1f3..edd6ecb9c 100644 --- a/patches/server/0213-Shulker-change-color-with-dye.patch +++ b/patches/server/0213-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index a0d34af033130d88a19a078b628ea4fbce3d268e..8825407882bbfe1b92b4da384bc0f0a3 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5356508723b92fa608c86179d0de5850f240ecaf..ae41ff2cd534efaacf8ca1f108b7cdc079b2a1b5 100644 +index 260fec619fe389abac6a14c5190b2b9d7e6044af..d3a3f42e171d804cd4953cf1ca19a033759f8c61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2156,6 +2156,7 @@ public class PurpurWorldConfig { +@@ -2160,6 +2160,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 5356508723b92fa608c86179d0de5850f240ecaf..ae41ff2cd534efaacf8ca1f108b7cdc0 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2172,6 +2173,7 @@ public class PurpurWorldConfig { +@@ -2176,6 +2177,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/0217-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0217-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index b2d0bb823..f054315be 100644 --- a/patches/server/0217-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0217-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index 8584a65433555133cdcfc24a078fb0b53b9f83bc..4afc4670f9b00a4087410ec366fe45fe public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of(Material.PLANT).noCollission().sound(SoundType.PINK_PETALS).requiredFeatures(FeatureFlags.UPDATE_1_20))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c62c3b29fd9178952610f47d5fc30096cd2829da..b0b0f8b250a789e1e137305cbec4722e91b8047d 100644 +index 6edbc74030c264a042e1ae0a10059453cb42c009..2fb231490abb495e6fe8247d3eba4c7767efdc68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -713,6 +713,11 @@ public class PurpurWorldConfig { +@@ -717,6 +717,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -60,7 +60,7 @@ index c62c3b29fd9178952610f47d5fc30096cd2829da..b0b0f8b250a789e1e137305cbec4722e public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -855,6 +860,11 @@ public class PurpurWorldConfig { +@@ -859,6 +864,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0218-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0218-Shift-right-click-to-use-exp-for-mending.patch index adb9f1fd7..0aacce5c4 100644 --- a/patches/server/0218-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0218-Shift-right-click-to-use-exp-for-mending.patch @@ -48,19 +48,19 @@ index 4345b10d2aad2d82155fe50f31139917e9e0d315..d65e562202557019bc941552b15476c9 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b0b0f8b250a789e1e137305cbec4722e91b8047d..ec8ce58e11a31d5de4db55cd4030aa3526161d49 100644 +index 2fb231490abb495e6fe8247d3eba4c7767efdc68..bb18991cf6f987fe156a712dc3523d5b076e77bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -415,6 +415,7 @@ public class PurpurWorldConfig { - public boolean playerBurpWhenFull = false; +@@ -417,6 +417,7 @@ public class PurpurWorldConfig { + public int playerCreativePortalWaitTime = 1; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; + public int shiftRightClickRepairsMendingPoints = 0; private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -441,6 +442,7 @@ public class PurpurWorldConfig { - playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); +@@ -445,6 +446,7 @@ public class PurpurWorldConfig { + playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); + shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0219-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0219-Dolphins-naturally-aggressive-to-players-chance.patch index 3647e43de..15c1c7659 100644 --- a/patches/server/0219-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0219-Dolphins-naturally-aggressive-to-players-chance.patch @@ -47,10 +47,10 @@ index f8d3a5d2dc254501c7e4405444ed4439f9af915e..c038a23c4e19c5bf160792cf599acc8f public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec8ce58e11a31d5de4db55cd4030aa3526161d49..989347b0958fb096437d9c3fd7004b32dc335944 100644 +index bb18991cf6f987fe156a712dc3523d5b076e77bc..0815363cb21f5669d4a755d6a6549cc17e93a9f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1254,6 +1254,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1258,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index ec8ce58e11a31d5de4db55cd4030aa3526161d49..989347b0958fb096437d9c3fd7004b32 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1268,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1272,6 +1273,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0220-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0220-Cows-naturally-aggressive-to-players-chance.patch index 9228e236a..1b97450ed 100644 --- a/patches/server/0220-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0220-Cows-naturally-aggressive-to-players-chance.patch @@ -59,10 +59,10 @@ index d1966126950d086649c1e3c7cd140669c36d7e76..f6dc68ddea67e9573d2420c8f852b092 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 989347b0958fb096437d9c3fd7004b32dc335944..9394684fa1bf26954cb878d4a2b7066502979d38 100644 +index 0815363cb21f5669d4a755d6a6549cc17e93a9f0..fc9398cfa1fc4a48530714062d59d7ae92b08e2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1203,7 +1203,14 @@ public class PurpurWorldConfig { +@@ -1207,7 +1207,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -77,7 +77,7 @@ index 989347b0958fb096437d9c3fd7004b32dc335944..9394684fa1bf26954cb878d4a2b70665 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1216,6 +1223,8 @@ public class PurpurWorldConfig { +@@ -1220,6 +1227,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0221-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0221-Option-for-beds-to-explode-on-villager-sleep.patch index 15274b98c..3d0d5fd09 100644 --- a/patches/server/0221-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0221-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 401d0885852edbb30b12cfb58c86479d722143ff..2e759f0b3766377c65608deb3d1859c7 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level.getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9394684fa1bf26954cb878d4a2b7066502979d38..07a35c7b9b329e0967bb2ea78c6d060b40544eb6 100644 +index fc9398cfa1fc4a48530714062d59d7ae92b08e2c..69484ea2a23f80e694d75b26bb316a47b30765ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -732,6 +732,7 @@ public class PurpurWorldConfig { +@@ -736,6 +736,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 9394684fa1bf26954cb878d4a2b7066502979d38..07a35c7b9b329e0967bb2ea78c6d060b public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -742,6 +743,7 @@ public class PurpurWorldConfig { +@@ -746,6 +747,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0222-Halloween-options-and-optimizations.patch b/patches/server/0222-Halloween-options-and-optimizations.patch index fd2a32169..68dc75071 100644 --- a/patches/server/0222-Halloween-options-and-optimizations.patch +++ b/patches/server/0222-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 114093185454a428e0ef9f0877ea4efd9532c2f8..d2ab6c240bc45f1c19ade78a7c050930 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07a35c7b9b329e0967bb2ea78c6d060b40544eb6..695b480b3fbb0e0e8f9fc9e42abce32772f64c2e 100644 +index 69484ea2a23f80e694d75b26bb316a47b30765ba..3fa36ab54543be869b3979865c6c38a2392c98db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1596,6 +1596,13 @@ public class PurpurWorldConfig { +@@ -1600,6 +1600,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0225-Campfire-option-for-lit-when-placed.patch b/patches/server/0225-Campfire-option-for-lit-when-placed.patch index 01a6dda13..35ba64a40 100644 --- a/patches/server/0225-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0225-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 219c87dcf065e86512f330fbeec59e55f4675083..f8fd3b320494d1c1e8ee3d170f2feebd @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 695b480b3fbb0e0e8f9fc9e42abce32772f64c2e..128b18135799b7934818f3c8a7a864d04a8a417e 100644 +index 3fa36ab54543be869b3979865c6c38a2392c98db..0b8110d023cc3d54879baf59a4d7a17095b5addf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -780,6 +780,11 @@ public class PurpurWorldConfig { +@@ -784,6 +784,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0227-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0227-Add-option-to-disable-zombie-villagers-cure.patch index 0fc6b127c..cadf8e335 100644 --- a/patches/server/0227-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0227-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index a6d9354d8ddac808cc89c5fe70842fc2472ff6fa..87556ffdfb93eba9c84931b1f922b936 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ddb3b1a8da6c96d1e388e9d2022724d7606ba2a0..4abce335a3089c04572b3867c9a585600e58a96a 100644 +index 34367920931fc7c11defb331c84aea9c77f43fae..dd8ed07888e740ed95e4527b8c437412d625190e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2813,6 +2813,7 @@ public class PurpurWorldConfig { +@@ -2817,6 +2817,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index ddb3b1a8da6c96d1e388e9d2022724d7606ba2a0..4abce335a3089c04572b3867c9a58560 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2830,6 +2831,7 @@ public class PurpurWorldConfig { +@@ -2834,6 +2835,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/0229-Signs-allow-color-codes.patch b/patches/server/0229-Signs-allow-color-codes.patch index 221aba156..a02bcff34 100644 --- a/patches/server/0229-Signs-allow-color-codes.patch +++ b/patches/server/0229-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0ac5a879c9098ea37f23cf4a23046e82c27231f4..d6edd8501d044980900ac011e1c4938b7fc4e64d 100644 +index a7cd9d4f83a6e0df28818c55788cdc2db369dfac..dd21804bb62ad7ae2a086600d9cec7e6ca05f3e8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1529,6 +1529,7 @@ public class ServerPlayer extends Player { @@ -70,10 +70,10 @@ index 4da4edae517a0efec6e03a719ec47b700509dab1..9e760a8e8244b15daaf0abdfc5f8a51d public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6cc896727c698f196ca36fe5d3e431e2527e6816..0e0cc6bc1b32b64b9776d88cbcbf83913af20f33 100644 +index 0f16621231f97bb757edb59cc73169bccc60937a..b9346bfeaab87363f88738be6d6f35d9515c3186 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -961,8 +961,10 @@ public class PurpurWorldConfig { +@@ -965,8 +965,10 @@ public class PurpurWorldConfig { } public boolean signRightClickEdit = false; diff --git a/patches/server/0231-Mobs-always-drop-experience.patch b/patches/server/0231-Mobs-always-drop-experience.patch index 712e85eb0..e52a7358c 100644 --- a/patches/server/0231-Mobs-always-drop-experience.patch +++ b/patches/server/0231-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 6af1d1b3b40d91fd3e0ac269d0e4a60a104be7b8..fef9fd3e50bba3d0fffa3d61b60f3bb8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e18eb4bdc 100644 +index b9346bfeaab87363f88738be6d6f35d9515c3186..47ceab345b4cced11753dbed903c356b746089fd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1027,12 +1027,14 @@ public class PurpurWorldConfig { +@@ -1031,12 +1031,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean batRidable = false; -@@ -1048,6 +1050,7 @@ public class PurpurWorldConfig { +@@ -1052,6 +1054,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1060,6 +1063,7 @@ public class PurpurWorldConfig { +@@ -1064,6 +1067,7 @@ public class PurpurWorldConfig { } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean beeRidable = false; -@@ -1071,6 +1075,7 @@ public class PurpurWorldConfig { +@@ -1075,6 +1079,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1086,6 +1091,7 @@ public class PurpurWorldConfig { +@@ -1090,6 +1095,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); @@ -1207,7 +1207,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean blazeRidable = false; -@@ -1094,6 +1100,7 @@ public class PurpurWorldConfig { +@@ -1098,6 +1104,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1106,6 +1113,7 @@ public class PurpurWorldConfig { +@@ -1110,6 +1117,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public int camelBreedingTicks = 6000; -@@ -1135,6 +1143,7 @@ public class PurpurWorldConfig { +@@ -1139,6 +1147,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1155,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1159,6 +1168,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean caveSpiderRidable = false; -@@ -1162,6 +1172,7 @@ public class PurpurWorldConfig { +@@ -1166,6 +1176,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1173,6 +1184,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1188,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean chickenRidable = false; -@@ -1182,6 +1194,7 @@ public class PurpurWorldConfig { +@@ -1186,6 +1198,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1195,12 +1208,14 @@ public class PurpurWorldConfig { +@@ -1199,12 +1212,14 @@ 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); @@ -1278,7 +1278,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1211,6 +1226,7 @@ public class PurpurWorldConfig { +@@ -1215,6 +1230,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean cowRidable = false; -@@ -1222,6 +1238,7 @@ public class PurpurWorldConfig { +@@ -1226,6 +1242,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1242,6 +1259,7 @@ public class PurpurWorldConfig { +@@ -1246,6 +1263,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); @@ -1302,7 +1302,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean creeperRidable = false; -@@ -1254,6 +1272,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1276,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1270,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1274,6 +1293,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); @@ -1318,7 +1318,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean dolphinRidable = false; -@@ -1281,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1285,6 +1305,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1296,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1300,6 +1321,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); @@ -1334,7 +1334,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean donkeyRidableInWater = false; -@@ -1307,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1311,6 +1333,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1324,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1328,6 +1351,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); @@ -1350,7 +1350,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean drownedRidable = false; -@@ -1336,6 +1360,7 @@ public class PurpurWorldConfig { +@@ -1340,6 +1364,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1352,12 +1377,14 @@ public class PurpurWorldConfig { +@@ -1356,12 +1381,14 @@ 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); @@ -1373,7 +1373,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1368,6 +1395,7 @@ public class PurpurWorldConfig { +@@ -1372,6 +1399,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean enderDragonRidable = false; -@@ -1413,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1445,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1436,6 +1465,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1469,7 @@ 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); @@ -1397,7 +1397,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean endermiteRidable = false; -@@ -1443,6 +1473,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1477,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1454,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1458,6 +1489,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean evokerRidable = false; -@@ -1462,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1498,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1474,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1511,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); @@ -1429,7 +1429,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean foxRidable = false; -@@ -1484,6 +1518,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1522,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1498,6 +1533,7 @@ public class PurpurWorldConfig { +@@ -1502,6 +1537,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); @@ -1445,7 +1445,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean frogRidable = false; -@@ -1519,6 +1555,7 @@ public class PurpurWorldConfig { +@@ -1523,6 +1559,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1531,6 +1568,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1572,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean giantRidable = false; -@@ -1544,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1548,6 +1586,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1565,6 +1604,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1608,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean glowSquidRidable = false; -@@ -1572,12 +1612,14 @@ public class PurpurWorldConfig { +@@ -1576,12 +1616,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean goatRidable = false; -@@ -1586,6 +1628,7 @@ public class PurpurWorldConfig { +@@ -1590,6 +1632,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1593,12 +1636,14 @@ public class PurpurWorldConfig { +@@ -1597,12 +1640,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1609,6 +1654,7 @@ public class PurpurWorldConfig { +@@ -1613,6 +1658,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean forceHalloweenSeason = false; -@@ -1624,6 +1670,7 @@ public class PurpurWorldConfig { +@@ -1628,6 +1674,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1636,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1687,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); @@ -1539,7 +1539,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean horseRidableInWater = false; -@@ -1647,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1651,6 +1699,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1664,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1717,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean huskRidable = false; -@@ -1675,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1729,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1690,6 +1741,7 @@ public class PurpurWorldConfig { +@@ -1694,6 +1745,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); @@ -1571,7 +1571,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean illusionerRidable = false; -@@ -1699,6 +1751,7 @@ public class PurpurWorldConfig { +@@ -1703,6 +1755,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1716,6 +1769,7 @@ public class PurpurWorldConfig { +@@ -1720,6 +1773,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean ironGolemRidable = false; -@@ -1726,6 +1780,7 @@ public class PurpurWorldConfig { +@@ -1730,6 +1784,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1740,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1744,6 +1799,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); @@ -1603,7 +1603,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean llamaRidable = false; -@@ -1754,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1758,6 +1814,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1774,6 +1831,7 @@ public class PurpurWorldConfig { +@@ -1778,6 +1835,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean magmaCubeRidable = false; -@@ -1784,6 +1842,7 @@ public class PurpurWorldConfig { +@@ -1788,6 +1846,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1798,6 +1857,7 @@ public class PurpurWorldConfig { +@@ -1802,6 +1861,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean mooshroomRidable = false; -@@ -1806,6 +1866,7 @@ public class PurpurWorldConfig { +@@ -1810,6 +1870,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1818,6 +1879,7 @@ public class PurpurWorldConfig { +@@ -1822,6 +1883,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean muleRidableInWater = false; -@@ -1829,6 +1891,7 @@ public class PurpurWorldConfig { +@@ -1833,6 +1895,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1846,6 +1909,7 @@ public class PurpurWorldConfig { +@@ -1850,6 +1913,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean ocelotRidable = false; -@@ -1854,6 +1918,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1922,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1866,6 +1931,7 @@ public class PurpurWorldConfig { +@@ -1870,6 +1935,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean pandaRidable = false; -@@ -1874,6 +1940,7 @@ public class PurpurWorldConfig { +@@ -1878,6 +1944,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1886,6 +1953,7 @@ public class PurpurWorldConfig { +@@ -1890,6 +1957,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean parrotRidable = false; -@@ -1895,6 +1963,7 @@ public class PurpurWorldConfig { +@@ -1899,6 +1967,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1908,6 +1977,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +1981,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean phantomRidable = false; -@@ -1935,6 +2005,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2009,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1970,6 +2041,7 @@ public class PurpurWorldConfig { +@@ -1974,6 +2045,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean pigRidable = false; -@@ -1979,6 +2051,7 @@ public class PurpurWorldConfig { +@@ -1983,6 +2055,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1992,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -1996,6 +2069,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean piglinRidable = false; -@@ -2001,6 +2075,7 @@ public class PurpurWorldConfig { +@@ -2005,6 +2079,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2014,6 +2089,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2093,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean piglinBruteRidable = false; -@@ -2021,6 +2097,7 @@ public class PurpurWorldConfig { +@@ -2025,6 +2101,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2032,6 +2109,7 @@ public class PurpurWorldConfig { +@@ -2036,6 +2113,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean pillagerRidable = false; -@@ -2040,6 +2118,7 @@ public class PurpurWorldConfig { +@@ -2044,6 +2122,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2052,6 +2131,7 @@ public class PurpurWorldConfig { +@@ -2056,6 +2135,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean polarBearRidable = false; -@@ -2062,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2146,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2077,12 +2158,14 @@ public class PurpurWorldConfig { +@@ -2081,12 +2162,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2093,6 +2176,7 @@ public class PurpurWorldConfig { +@@ -2097,6 +2180,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean rabbitRidable = false; -@@ -2104,6 +2188,7 @@ public class PurpurWorldConfig { +@@ -2108,6 +2192,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2119,6 +2204,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2208,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean ravagerRidable = false; -@@ -2128,6 +2214,7 @@ public class PurpurWorldConfig { +@@ -2132,6 +2218,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2157,12 +2244,14 @@ public class PurpurWorldConfig { +@@ -2161,12 +2248,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2173,6 +2262,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2266,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean sheepRidable = false; -@@ -2182,6 +2272,7 @@ public class PurpurWorldConfig { +@@ -2186,6 +2276,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2195,6 +2286,7 @@ public class PurpurWorldConfig { +@@ -2199,6 +2290,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean shulkerRidable = false; -@@ -2208,6 +2300,7 @@ public class PurpurWorldConfig { +@@ -2212,6 +2304,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2225,6 +2318,7 @@ public class PurpurWorldConfig { +@@ -2229,6 +2322,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean silverfishRidable = false; -@@ -2233,6 +2327,7 @@ public class PurpurWorldConfig { +@@ -2237,6 +2331,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2245,6 +2340,7 @@ public class PurpurWorldConfig { +@@ -2249,6 +2344,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean skeletonRidable = false; -@@ -2252,6 +2348,7 @@ public class PurpurWorldConfig { +@@ -2256,6 +2352,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2263,6 +2360,7 @@ public class PurpurWorldConfig { +@@ -2267,6 +2364,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean skeletonHorseRidableInWater = true; -@@ -2274,6 +2372,7 @@ public class PurpurWorldConfig { +@@ -2278,6 +2376,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2290,6 +2389,7 @@ public class PurpurWorldConfig { +@@ -2294,6 +2393,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean slimeRidable = false; -@@ -2300,6 +2400,7 @@ public class PurpurWorldConfig { +@@ -2304,6 +2404,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2314,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2419,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean snowGolemRidable = false; -@@ -2329,6 +2431,7 @@ public class PurpurWorldConfig { +@@ -2333,6 +2435,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2348,6 +2451,7 @@ public class PurpurWorldConfig { +@@ -2352,6 +2455,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean snifferRidable = false; -@@ -2370,6 +2474,7 @@ public class PurpurWorldConfig { +@@ -2374,6 +2478,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2383,6 +2488,7 @@ public class PurpurWorldConfig { +@@ -2387,6 +2492,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean spiderRidable = false; -@@ -2390,6 +2496,7 @@ public class PurpurWorldConfig { +@@ -2394,6 +2500,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2401,6 +2508,7 @@ public class PurpurWorldConfig { +@@ -2405,6 +2512,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean strayRidable = false; -@@ -2408,6 +2516,7 @@ public class PurpurWorldConfig { +@@ -2412,6 +2520,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2419,6 +2528,7 @@ public class PurpurWorldConfig { +@@ -2423,6 +2532,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean striderRidable = false; -@@ -2428,6 +2538,7 @@ public class PurpurWorldConfig { +@@ -2432,6 +2542,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2441,6 +2552,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2556,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean tadpoleRidable = false; -@@ -2463,6 +2575,7 @@ public class PurpurWorldConfig { +@@ -2467,6 +2579,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2482,12 +2595,14 @@ public class PurpurWorldConfig { +@@ -2486,12 +2599,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2498,6 +2613,7 @@ public class PurpurWorldConfig { +@@ -2502,6 +2617,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean turtleRidable = false; -@@ -2506,6 +2622,7 @@ public class PurpurWorldConfig { +@@ -2510,6 +2626,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2518,6 +2635,7 @@ public class PurpurWorldConfig { +@@ -2522,6 +2639,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean vexRidable = false; -@@ -2526,6 +2644,7 @@ public class PurpurWorldConfig { +@@ -2530,6 +2648,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2538,6 +2657,7 @@ public class PurpurWorldConfig { +@@ -2542,6 +2661,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean villagerRidable = false; -@@ -2553,6 +2673,7 @@ public class PurpurWorldConfig { +@@ -2557,6 +2677,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2572,6 +2693,7 @@ public class PurpurWorldConfig { +@@ -2576,6 +2697,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean vindicatorRidable = false; -@@ -2580,6 +2702,7 @@ public class PurpurWorldConfig { +@@ -2584,6 +2706,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2592,6 +2715,7 @@ public class PurpurWorldConfig { +@@ -2596,6 +2719,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean wanderingTraderRidable = false; -@@ -2602,6 +2726,7 @@ public class PurpurWorldConfig { +@@ -2606,6 +2730,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2616,6 +2741,7 @@ public class PurpurWorldConfig { +@@ -2620,6 +2745,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean wardenRidable = false; -@@ -2632,6 +2758,7 @@ public class PurpurWorldConfig { +@@ -2636,6 +2762,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2643,6 +2770,7 @@ public class PurpurWorldConfig { +@@ -2647,6 +2774,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean witherRidable = false; -@@ -2657,6 +2785,7 @@ public class PurpurWorldConfig { +@@ -2661,6 +2789,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2679,6 +2808,7 @@ public class PurpurWorldConfig { +@@ -2683,6 +2812,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean witherSkeletonRidable = false; -@@ -2686,6 +2816,7 @@ public class PurpurWorldConfig { +@@ -2690,6 +2820,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2697,6 +2828,7 @@ public class PurpurWorldConfig { +@@ -2701,6 +2832,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean wolfRidable = false; -@@ -2708,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2712,6 +2844,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2727,6 +2860,7 @@ public class PurpurWorldConfig { +@@ -2731,6 +2864,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean zoglinRidable = false; -@@ -2734,6 +2868,7 @@ public class PurpurWorldConfig { +@@ -2738,6 +2872,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2745,6 +2880,7 @@ public class PurpurWorldConfig { +@@ -2749,6 +2884,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean zombieRidable = false; -@@ -2758,6 +2894,7 @@ public class PurpurWorldConfig { +@@ -2762,6 +2898,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2775,6 +2912,7 @@ public class PurpurWorldConfig { +@@ -2779,6 +2916,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean zombieHorseRidableInWater = false; -@@ -2787,6 +2925,7 @@ public class PurpurWorldConfig { +@@ -2791,6 +2929,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2804,6 +2943,7 @@ public class PurpurWorldConfig { +@@ -2808,6 +2947,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean zombieVillagerRidable = false; -@@ -2818,6 +2958,7 @@ public class PurpurWorldConfig { +@@ -2822,6 +2962,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2836,6 +2977,7 @@ public class PurpurWorldConfig { +@@ -2840,6 +2981,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 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e } public boolean zombifiedPiglinRidable = false; -@@ -2848,6 +2990,7 @@ public class PurpurWorldConfig { +@@ -2852,6 +2994,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 0e0cc6bc1b32b64b9776d88cbcbf83913af20f33..223a20d6aa5c1d7f50da1d1df237687e private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2864,6 +3007,7 @@ public class PurpurWorldConfig { +@@ -2868,6 +3011,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/0234-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0234-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index c9c0673e5..75fb582b3 100644 --- a/patches/server/0234-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0234-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index e55720c4d2fbdf6aae526910e87a67c29cf906fd..0e4026e9d39735b840f12e59f84469b9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 223a20d6aa5c1d7f50da1d1df237687e18eb4bdc..26f578f24f9a72e110bd4302fd49b2e38c08318a 100644 +index 47ceab345b4cced11753dbed903c356b746089fd..59b46e7de80f84987f2882a3e1cb26390f270aea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -559,6 +559,8 @@ public class PurpurWorldConfig { +@@ -563,6 +563,8 @@ public class PurpurWorldConfig { public Map axeWaxables = new HashMap<>(); public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); @@ -86,7 +86,7 @@ index 223a20d6aa5c1d7f50da1d1df237687e18eb4bdc..26f578f24f9a72e110bd4302fd49b2e3 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -714,6 +716,8 @@ public class PurpurWorldConfig { +@@ -718,6 +720,8 @@ public class PurpurWorldConfig { }); hoeTillables.put(block, new Tillable(condition, into, drops)); }); diff --git a/patches/server/0235-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0235-Shearing-jeb-produces-random-color-wool.patch index 16175f82d..f1a8fe9f7 100644 --- a/patches/server/0235-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0235-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index ecde7e3f3bbc511d152153082671ca67e0d960ba..86ac81efb31b59c37bca9b0c53755cb6 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26f578f24f9a72e110bd4302fd49b2e38c08318a..b3d2d126bbf7045b4e00f52c950a2e5d2c9b8660 100644 +index 59b46e7de80f84987f2882a3e1cb26390f270aea..531579d1b57d9bb2221d818e500649225f3b3b2b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2277,6 +2277,7 @@ public class PurpurWorldConfig { +@@ -2281,6 +2281,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 26f578f24f9a72e110bd4302fd49b2e38c08318a..b3d2d126bbf7045b4e00f52c950a2e5d private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2291,6 +2292,7 @@ public class PurpurWorldConfig { +@@ -2295,6 +2296,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/0236-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0236-Turtle-eggs-random-tick-crack-chance.patch index 219124190..31698360c 100644 --- a/patches/server/0236-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0236-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 7495e0e8beedad59fff24ebf189b58b307f7d796..70997b83fd7631ebf3c5bda67ef77bef @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b3d2d126bbf7045b4e00f52c950a2e5d2c9b8660..d8a5cf270e4af7daa71b2ac68d7da25bceefe44d 100644 +index 531579d1b57d9bb2221d818e500649225f3b3b2b..f2e6a0948530aa0830dc417cb56c7fb78a4cc483 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -994,11 +994,13 @@ public class PurpurWorldConfig { +@@ -998,11 +998,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0237-Mob-head-visibility-percent.patch b/patches/server/0237-Mob-head-visibility-percent.patch index e3f916a08..290d640de 100644 --- a/patches/server/0237-Mob-head-visibility-percent.patch +++ b/patches/server/0237-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index db6ee0ef067c42dd7f3a69cc796e2dd2c8fc059d..5718d70cdc4f5afb14320a20c3e72362 // 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 d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec21dee86e 100644 +index f2e6a0948530aa0830dc417cb56c7fb78a4cc483..f33621315bbf65c79917f766dea1896d55cd5322 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1279,6 +1279,7 @@ public class PurpurWorldConfig { +@@ -1283,6 +1283,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1296,6 +1297,7 @@ public class PurpurWorldConfig { +@@ -1300,6 +1301,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec } public boolean dolphinRidable = false; -@@ -2082,6 +2084,7 @@ public class PurpurWorldConfig { +@@ -2086,6 +2088,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2096,6 +2099,7 @@ public class PurpurWorldConfig { +@@ -2100,6 +2103,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec } public boolean piglinBruteRidable = false; -@@ -2357,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2361,6 +2365,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2369,6 +2374,7 @@ public class PurpurWorldConfig { +@@ -2373,6 +2378,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); @@ -83,7 +83,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec } public boolean skeletonHorseRidableInWater = true; -@@ -2903,6 +2909,7 @@ public class PurpurWorldConfig { +@@ -2907,6 +2913,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index d8a5cf270e4af7daa71b2ac68d7da25bceefe44d..df92283920356712464c31560a1c9eec private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2921,6 +2928,7 @@ public class PurpurWorldConfig { +@@ -2925,6 +2932,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/0240-Stop-bees-from-dying-after-stinging.patch b/patches/server/0240-Stop-bees-from-dying-after-stinging.patch index 5dd5c7374..4b3e3eefc 100644 --- a/patches/server/0240-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0240-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 86d49924f4fb5b38dfe7ec23a15e9bb5b2816543..e97731c58b86562827fb6b0a32a7a00e ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df92283920356712464c31560a1c9eec21dee86e..5ee59e2e25466d094a675471cc71aedf33afa808 100644 +index f33621315bbf65c79917f766dea1896d55cd5322..3968d2005ebdd4a8d953e5276fdc544a02da1441 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1082,6 +1082,7 @@ public class PurpurWorldConfig { +@@ -1086,6 +1086,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index df92283920356712464c31560a1c9eec21dee86e..5ee59e2e25466d094a675471cc71aedf private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1098,6 +1099,7 @@ public class PurpurWorldConfig { +@@ -1102,6 +1103,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0242-Configurable-farmland-trample-height.patch b/patches/server/0242-Configurable-farmland-trample-height.patch index d6c48181f..0aee46806 100644 --- a/patches/server/0242-Configurable-farmland-trample-height.patch +++ b/patches/server/0242-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index eed062c9cf1103d7ac96695e3620d4276edcd2aa..69cc276fecd4cac51d38bd3cc7de490a org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ee59e2e25466d094a675471cc71aedf33afa808..e4394fbe3d7ff9b9424772014c0b528407a13081 100644 +index 3968d2005ebdd4a8d953e5276fdc544a02da1441..fbaa54229ff7283bec4ff6e5bf8c3bf4343fcd68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -872,6 +872,7 @@ public class PurpurWorldConfig { +@@ -876,6 +876,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 5ee59e2e25466d094a675471cc71aedf33afa808..e4394fbe3d7ff9b9424772014c0b5284 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -879,6 +880,7 @@ public class PurpurWorldConfig { +@@ -883,6 +884,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0243-Configurable-player-pickup-exp-delay.patch b/patches/server/0243-Configurable-player-pickup-exp-delay.patch index 066062eff..9118daf4a 100644 --- a/patches/server/0243-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0243-Configurable-player-pickup-exp-delay.patch @@ -22,7 +22,7 @@ index 0813151ba9d1dcf1aa40fb4c7f259510adc326da..0c0f422ef0c20477295cea0b6b3c4b2d int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 74c660bcc77c18241c6ccc0450174a15b0ac4d1f..d055cfc257cc7282170ba67c848af3e6c5f2ec1f 100644 +index d548510ab31185d8c4978b86834a2684fff90570..7edcb5b86f27d05a0526229262e0d3a3e160362b 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -630,7 +630,7 @@ public abstract class Player extends LivingEntity { @@ -35,10 +35,10 @@ index 74c660bcc77c18241c6ccc0450174a15b0ac4d1f..d055cfc257cc7282170ba67c848af3e6 } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e4394fbe3d7ff9b9424772014c0b528407a13081..8abdc8df16a56988f9fe799773fc82bc7bffa16e 100644 +index fbaa54229ff7283bec4ff6e5bf8c3bf4343fcd68..20c51a26adbe30d4a0e335bdc588792a62f2f084 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -424,6 +424,7 @@ public class PurpurWorldConfig { +@@ -426,6 +426,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index e4394fbe3d7ff9b9424772014c0b528407a13081..8abdc8df16a56988f9fe799773fc82bc private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -451,6 +452,7 @@ public class PurpurWorldConfig { +@@ -455,6 +456,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0244-Allow-void-trading.patch b/patches/server/0244-Allow-void-trading.patch index f212a9b92..9ccb379d4 100644 --- a/patches/server/0244-Allow-void-trading.patch +++ b/patches/server/0244-Allow-void-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 169eb774eea589cab7daec9fe5764a639ecd8ed4..3bf150a5f9ce1d497bf80174b80eca82c5fe06b5 100644 +index ff9547262d4bbfb6da4d14e8aa5409020b1e8c62..a3c316997605e4e5747e60dba5e2337316779339 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2687,7 +2687,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18,10 +18,10 @@ index 169eb774eea589cab7daec9fe5764a639ecd8ed4..3bf150a5f9ce1d497bf80174b80eca82 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7f2ae2ff3f1ad928768851dc286687d28748bc3..915099ab343d1fd65ba779ef70ebc704612f246a 100644 +index 20c51a26adbe30d4a0e335bdc588792a62f2f084..ad48cb549025b0ceb1db39a263b44788c071878e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -425,6 +425,7 @@ public class PurpurWorldConfig { +@@ -427,6 +427,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index a7f2ae2ff3f1ad928768851dc286687d28748bc3..915099ab343d1fd65ba779ef70ebc704 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -453,6 +454,7 @@ public class PurpurWorldConfig { +@@ -457,6 +458,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0246-Configurable-phantom-size.patch b/patches/server/0246-Configurable-phantom-size.patch index 94fbb58a6..9e75d2370 100644 --- a/patches/server/0246-Configurable-phantom-size.patch +++ b/patches/server/0246-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index b4e13b4e02c37f5ff93164f01604e7e56580be72..2c00a9fdd3a6ea16ee765339857cf585 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c9c5c5f58204b95be55a84eabfcf027cc7d5d781..291ca4e81b0f8b18d0926099fd0c0c1f76cb3859 100644 +index ad48cb549025b0ceb1db39a263b44788c071878e..a470194347dd112ad68131345aa3aaab9f41a647 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2022,6 +2022,8 @@ public class PurpurWorldConfig { +@@ -2026,6 +2026,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index c9c5c5f58204b95be55a84eabfcf027cc7d5d781..291ca4e81b0f8b18d0926099fd0c0c1f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2058,6 +2060,13 @@ public class PurpurWorldConfig { +@@ -2062,6 +2064,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/0249-Configurable-minimum-demand-for-trades.patch b/patches/server/0249-Configurable-minimum-demand-for-trades.patch index 26ea210a1..189fcaa8d 100644 --- a/patches/server/0249-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0249-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index fd50d1c2435b82215bc5b3fdbe5044d426bc342e..68ffea572045634f1ad67a6954d480e6 public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 291ca4e81b0f8b18d0926099fd0c0c1f76cb3859..05d58b17c705e6a1d779bec497fab1c4299c477c 100644 +index a470194347dd112ad68131345aa3aaab9f41a647..9000cb06ceabbf2a0049b0ff0ef446933127e050 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2705,6 +2705,7 @@ public class PurpurWorldConfig { +@@ -2709,6 +2709,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 291ca4e81b0f8b18d0926099fd0c0c1f76cb3859..05d58b17c705e6a1d779bec497fab1c4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2725,6 +2726,7 @@ public class PurpurWorldConfig { +@@ -2729,6 +2730,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0250-Lobotomize-stuck-villagers.patch b/patches/server/0250-Lobotomize-stuck-villagers.patch index 4349f8c61..5b6c1161d 100644 --- a/patches/server/0250-Lobotomize-stuck-villagers.patch +++ b/patches/server/0250-Lobotomize-stuck-villagers.patch @@ -110,10 +110,10 @@ index 4e880409b06086568627f3e930159f1abb979984..48fb7302b54f8e7f5c424210b550c03d + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 05d58b17c705e6a1d779bec497fab1c4299c477c..c75fdb8d118b6b05b54693c99849440274700ecf 100644 +index 9000cb06ceabbf2a0049b0ff0ef446933127e050..3a85206129ecd9570bdfb5453c57dc8fac618587 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2706,6 +2706,8 @@ public class PurpurWorldConfig { +@@ -2710,6 +2710,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -122,7 +122,7 @@ index 05d58b17c705e6a1d779bec497fab1c4299c477c..c75fdb8d118b6b05b54693c998494402 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2727,6 +2729,17 @@ public class PurpurWorldConfig { +@@ -2731,6 +2733,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0251-Option-for-villager-display-trade-item.patch b/patches/server/0251-Option-for-villager-display-trade-item.patch index a6ad2440a..9b9c1fcd0 100644 --- a/patches/server/0251-Option-for-villager-display-trade-item.patch +++ b/patches/server/0251-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 98373e013748817209b811d4adbb40a8787242a6..567b501f4de7556e55e2418d2f5700b4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c75fdb8d118b6b05b54693c99849440274700ecf..24be313e32bd09acfd515c766117ed72860597a8 100644 +index 3a85206129ecd9570bdfb5453c57dc8fac618587..82d04c5f4705de059507c7633ab276a79152b6b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2708,6 +2708,7 @@ public class PurpurWorldConfig { +@@ -2712,6 +2712,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index c75fdb8d118b6b05b54693c99849440274700ecf..24be313e32bd09acfd515c766117ed72 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2740,6 +2741,7 @@ public class PurpurWorldConfig { +@@ -2744,6 +2745,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 4ac9fc6c3..873de73ff 100644 --- a/patches/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 35cfa366baf6747105faa93f1220bb9cc31a5bd5..ff3a6755d04f2280a36bd363ab1722e0 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 24be313e32bd09acfd515c766117ed72860597a8..30ef79eb2b77083be2a705558b65d563d00e8899 100644 +index 82d04c5f4705de059507c7633ab276a79152b6b5..f4fa610e93b5c74ca4c804bc13b5edca4019ce90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -983,8 +983,10 @@ public class PurpurWorldConfig { +@@ -987,8 +987,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0254-Anvil-repair-damage-options.patch b/patches/server/0254-Anvil-repair-damage-options.patch index 0a110b664..1b6a71785 100644 --- a/patches/server/0254-Anvil-repair-damage-options.patch +++ b/patches/server/0254-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548f return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1735589ef14d87b5f4f96a400ec8ca91936b0482..144e3e7a5d03acd51b846d0b75d0b32d414843c3 100644 +index 71b803f244ec392898db423652b35e8603507f2f..a060ca451f6c0b1df4f87cbc98b05a8dc3bb2c0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -728,9 +728,13 @@ public class PurpurWorldConfig { +@@ -732,9 +732,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 81c26d537..e92ec073c 100644 --- a/patches/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 70997b83fd7631ebf3c5bda67ef77bef605eb464..a8c227e2cb62cfa8225798329cde9078 return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 144e3e7a5d03acd51b846d0b75d0b32d414843c3..7e5f074a8a6f97bde0e18131d27d6187a232daec 100644 +index a060ca451f6c0b1df4f87cbc98b05a8dc3bb2c0f..77ec7bfd2b31d7346ddc56f8808904be624dc6ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1009,12 +1009,14 @@ public class PurpurWorldConfig { +@@ -1013,12 +1013,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0259-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0259-Implement-configurable-search-radius-for-villagers-t.patch index db689d579..c629b3539 100644 --- a/patches/server/0259-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0259-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 75df9d6d69ad5e979ab7b99435dbae1dcb901e30..6f47f6c785dc8da6b211ac87630a3d83 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e5f074a8a6f97bde0e18131d27d6187a232daec..701ba05acf86a9ca345a4673af906b6c47c8aea5 100644 +index 77ec7bfd2b31d7346ddc56f8808904be624dc6ef..dd39765b0b89126421834c1b9c79882347ae8a5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2719,6 +2719,8 @@ public class PurpurWorldConfig { +@@ -2723,6 +2723,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 7e5f074a8a6f97bde0e18131d27d6187a232daec..701ba05acf86a9ca345a4673af906b6c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2752,6 +2754,8 @@ public class PurpurWorldConfig { +@@ -2756,6 +2758,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0260-Stonecutter-damage.patch b/patches/server/0260-Stonecutter-damage.patch index 395e2fe83..f013f389d 100644 --- a/patches/server/0260-Stonecutter-damage.patch +++ b/patches/server/0260-Stonecutter-damage.patch @@ -48,7 +48,7 @@ index 17a7fab20b4174273354fdc2fc700b7f2d669a98..a7578e112e80ed2585a7eb4fff9542f6 return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8a098947e748e3abd798dcfffd360b9d65c41695..bab204904dd8e7bc949d83c59d075cc6f90ce60c 100644 +index 6160699f5d680b65a85bace844bd694153688b3c..431e81c64219412a5a0dca1ac0a6a1b1751567f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -205,8 +205,10 @@ public class PurpurConfig { @@ -63,10 +63,10 @@ index 8a098947e748e3abd798dcfffd360b9d65c41695..bab204904dd8e7bc949d83c59d075cc6 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 701ba05acf86a9ca345a4673af906b6c47c8aea5..657e22e8c774992212a43470a512487ea5e06906 100644 +index dd39765b0b89126421834c1b9c79882347ae8a5c..2b405b145c4369933f2aee5262bcee1a4c077978 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1004,6 +1004,11 @@ public class PurpurWorldConfig { +@@ -1008,6 +1008,11 @@ public class PurpurWorldConfig { spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava); } diff --git a/patches/server/0261-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0261-Configurable-damage-settings-for-magma-blocks.patch index d7056b4b3..b3d83f852 100644 --- a/patches/server/0261-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0261-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 12ffb5714f088f4aeafa1ad6a36f5b64a86c4c96..293aa5c8f91a997045f8d9f2951fe3a7 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 657e22e8c774992212a43470a512487ea5e06906..403295ff6871ae70bc2839d0bf74fe19de3fadaf 100644 +index 2b405b145c4369933f2aee5262bcee1a4c077978..2a1740fe8aab03c59427b01277068e6c87d6b241 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -935,6 +935,13 @@ public class PurpurWorldConfig { +@@ -939,6 +939,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0262-Add-config-for-snow-on-blue-ice.patch b/patches/server/0262-Add-config-for-snow-on-blue-ice.patch index d271451a5..1c5597277 100644 --- a/patches/server/0262-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0262-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 403295ff6871ae70bc2839d0bf74fe19de3fadaf..6c4d46c772f18cc230d980e7f8625942e7375dc9 100644 +index 2a1740fe8aab03c59427b01277068e6c87d6b241..aaeceeb1969c6c222a0d252d207e01762b7fb27c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -916,9 +916,11 @@ public class PurpurWorldConfig { +@@ -920,9 +920,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0263-Skeletons-eat-wither-roses.patch b/patches/server/0263-Skeletons-eat-wither-roses.patch index 1bf3a457b..8cc4614c6 100644 --- a/patches/server/0263-Skeletons-eat-wither-roses.patch +++ b/patches/server/0263-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 78fc17c45e566e0844ffbebb85044b9bfe64c6db..64a5e000adbfa5de2abc32ea9182847d + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c4d46c772f18cc230d980e7f8625942e7375dc9..c2d0e8259b34a5a4e0a5a047e1b504f6c7e4f19a 100644 +index aaeceeb1969c6c222a0d252d207e01762b7fb27c..2120da75446b48d58f16c187a01d73e4e1eb7a1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2403,6 +2403,7 @@ public class PurpurWorldConfig { +@@ -2407,6 +2407,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 6c4d46c772f18cc230d980e7f8625942e7375dc9..c2d0e8259b34a5a4e0a5a047e1b504f6 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2416,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2420,6 +2421,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0264-Enchantment-Table-Persists-Lapis.patch b/patches/server/0264-Enchantment-Table-Persists-Lapis.patch index 573266132..fddeb6312 100644 --- a/patches/server/0264-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0264-Enchantment-Table-Persists-Lapis.patch @@ -146,10 +146,10 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2d0e8259b34a5a4e0a5a047e1b504f6c7e4f19a..4a4eee4090b834104bdd428ad5d6aacdb1add6be 100644 +index 2120da75446b48d58f16c187a01d73e4e1eb7a1e..61081f7e117777174b064353aa6453cecbad275d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1438,6 +1438,11 @@ public class PurpurWorldConfig { +@@ -1442,6 +1442,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0267-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0267-Config-for-sculk-shrieker-can_summon-state.patch index 17cfc436f..d82e194a9 100644 --- a/patches/server/0267-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0267-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 437b44fb68bcbe81d1c431689431225b6a17a1a6..06d091b7c4df949c4abda16c4f73c194 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a4eee4090b834104bdd428ad5d6aacdb1add6be..c786e5b8fd74cd1ff9fab14f597dac87e92dea65 100644 +index 61081f7e117777174b064353aa6453cecbad275d..f31c457aa8bbccb4b9a6db9ab73eaeb2094140b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -980,6 +980,11 @@ public class PurpurWorldConfig { +@@ -984,6 +984,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0268-Config-to-not-let-coral-die.patch b/patches/server/0268-Config-to-not-let-coral-die.patch index 4623d672d..52ff8fc2a 100644 --- a/patches/server/0268-Config-to-not-let-coral-die.patch +++ b/patches/server/0268-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c786e5b8fd74cd1ff9fab14f597dac87e92dea65..523c69b4dfc8c2fb1a6a780f64ee848a8a2d8ead 100644 +index f31c457aa8bbccb4b9a6db9ab73eaeb2094140b7..2e1da0979b9672a4361dddf97bd8359a30c4d943 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -817,6 +817,11 @@ public class PurpurWorldConfig { +@@ -821,6 +821,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0281-Add-skeleton-bow-accuracy-option.patch b/patches/server/0281-Add-skeleton-bow-accuracy-option.patch index 01b7a719d..d96904afd 100644 --- a/patches/server/0281-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0281-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 32a303f9ac9768daf621e3aa561cd6b31e5f5dff..9c8713ef3aeb2ff203bd0328d15d80c2 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e210cfc6fb6556400c89d7f38ff8dd865168b2c..e856ec94168af165ec46eff34e7e20ddca73a6e8 100644 +index 890697f97c5eb91ced0e31069c64139b99a902f1..121f08d682afad6d30e72b32950f69db5dd8b646 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2423,6 +2423,8 @@ public class PurpurWorldConfig { +@@ -2427,6 +2427,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 7e210cfc6fb6556400c89d7f38ff8dd865168b2c..e856ec94168af165ec46eff34e7e20dd private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2437,6 +2439,18 @@ public class PurpurWorldConfig { +@@ -2441,6 +2443,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0282-Allay-respect-item-NBT.patch b/patches/server/0282-Allay-respect-item-NBT.patch index c640dc85a..3549ad758 100644 --- a/patches/server/0282-Allay-respect-item-NBT.patch +++ b/patches/server/0282-Allay-respect-item-NBT.patch @@ -44,10 +44,10 @@ index 1c136aa0d6dcad18b5e6e2084d2c166105d54a3a..e95540122ae6a486ce12a5f50fb4d2d0 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e856ec94168af165ec46eff34e7e20ddca73a6e8..43b34d77e5f2d2418c3ed8ca2b17f86722739f91 100644 +index 121f08d682afad6d30e72b32950f69db5dd8b646..1b5d3d214b7390cb960f5ee180a21a2bc54e8123 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1066,10 +1066,13 @@ public class PurpurWorldConfig { +@@ -1070,10 +1070,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch b/patches/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch index d8d7664a9..f0ff1766f 100644 --- a/patches/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch +++ b/patches/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch @@ -40,10 +40,10 @@ index c2309434b4d48a44587590623ac98dbf997b9578..6f723171fa71d74b351b5cf0cd167bb6 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 43b34d77e5f2d2418c3ed8ca2b17f86722739f91..e05110d98e82b2aa0d91f7579068f10ebdf350d5 100644 +index 1b5d3d214b7390cb960f5ee180a21a2bc54e8123..eb35509626914354af3b6a54387b5e9673766697 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1675,6 +1675,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1679,7 @@ public class PurpurWorldConfig { public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; public boolean glowSquidAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 43b34d77e5f2d2418c3ed8ca2b17f86722739f91..e05110d98e82b2aa0d91f7579068f10e private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1682,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1686,6 +1687,7 @@ public class PurpurWorldConfig { glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); glowSquidAlwaysDropExp = getBoolean("mobs.glow_squid.always-drop-exp", glowSquidAlwaysDropExp); diff --git a/patches/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 2695e90c7..bab5586b3 100644 --- a/patches/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc5 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f31dc0eae48b3ba51ec5db59ca1482da49caec5..9c364e2c687e9708b391cd319203636ebaacb3da 100644 +index 7e89940e9add24fcd13287dc1afe1089260bd718..6943202332bf20392afc63617584ce2a07faa0dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1331,6 +1331,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1335,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 5f31dc0eae48b3ba51ec5db59ca1482da49caec5..9c364e2c687e9708b391cd319203636e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1349,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1353,6 +1354,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 91e76dd76..b76adb827 100644 --- a/patches/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,7 +17,7 @@ index d18304939e062453cf8ca7d6c1b377930f69174e..f31f4ecf8fb07f6cf01eea0aa14f5d45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c364e2c687e9708b391cd319203636ebaacb3da..3b1e8d6e9b0a7fc5dddd2f033819c1bfe2410212 100644 +index 6943202332bf20392afc63617584ce2a07faa0dd..3bccb20fb131878c3bbbefa833a8b64a5dc599d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -421,6 +421,7 @@ public class PurpurWorldConfig { @@ -28,7 +28,7 @@ index 9c364e2c687e9708b391cd319203636ebaacb3da..3b1e8d6e9b0a7fc5dddd2f033819c1bf public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -450,6 +451,7 @@ public class PurpurWorldConfig { +@@ -452,6 +453,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0302-End-Crystal-Cramming.patch b/patches/server/0302-End-Crystal-Cramming.patch index 51a8e3d4a..968e3003d 100644 --- a/patches/server/0302-End-Crystal-Cramming.patch +++ b/patches/server/0302-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index a4fc0e9cb52bb5937effe5cd09f8bbefcf8dd531..e3fe5f18c77e36479eaeb7edfd2a3eb9 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b1e8d6e9b0a7fc5dddd2f033819c1bfe2410212..0578229216f0d2ede202f1ea6837f4d95a977c3b 100644 +index 3bccb20fb131878c3bbbefa833a8b64a5dc599d6..74e094982005e4f6044e063b1e168a96c7e7d976 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -860,6 +860,7 @@ public class PurpurWorldConfig { +@@ -864,6 +864,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 3b1e8d6e9b0a7fc5dddd2f033819c1bfe2410212..0578229216f0d2ede202f1ea6837f4d9 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -887,6 +888,7 @@ public class PurpurWorldConfig { +@@ -891,6 +892,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 9f03005c7..f50a1dad6 100644 --- a/patches/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index c787019b5cbadec81dd33ef4021708b9b423485a..8f82b0ce87afc8890c5b3386d5f6e22c BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0578229216f0d2ede202f1ea6837f4d95a977c3b..98cd8e066da2efe3e0192377c17171b66ef4377d 100644 +index 74e094982005e4f6044e063b1e168a96c7e7d976..820fe69d6eaa74c1d903770e56e7b436928a7fb4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -754,11 +754,13 @@ public class PurpurWorldConfig { +@@ -758,11 +758,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch index 186985b5c..9dde829d8 100644 --- a/patches/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index 6b400a4759c8c8612a3b5c96ca0d87ef9dc71435..992de1ab2c00a2545a857f1b5533926b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1e8bcfcfc044acc9752b575fb260228742d12aa..157c5ce26015cabd5a007cf7444c8255db1a0b0f 100644 +index 4018817ad32fa06befd4fd90f1f06d0231a78bbe..0db8a1a51c857a3930d0b20028964fb355d8e5b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -813,8 +813,20 @@ public class PurpurWorldConfig { +@@ -817,8 +817,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true;