diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index 8058af27a..bce2aad55 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -1171,13 +1171,14 @@ index 4db19589d19d1a0e488ddd0b691e81152ac236e4..6250d2bd682ce3c421aeea598cf8ec90 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index c74db4080ad3d726c4b5cb374e20e6df2a262d2f..91321bd00771cc70665a3e28eeba273b791eaa11 100644 +index c74db4080ad3d726c4b5cb374e20e6df2a262d2f..c46406a46f05d275eefd548420fce1dab716c765 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -106,6 +106,37 @@ public class Slime extends Mob implements Enemy { +@@ -104,6 +104,37 @@ public class Slime extends Mob implements Enemy { + } + return true; // do not jump() in wasd controller, let vanilla controller handle } - // Purpur end - ++ + protected String getMaxHealthEquation() { + return level().purpurConfig.slimeMaxHealth; + } @@ -1208,10 +1209,9 @@ index c74db4080ad3d726c4b5cb374e20e6df2a262d2f..91321bd00771cc70665a3e28eeba273b + } + return value; + } -+ + // Purpur end + @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -133,9 +164,9 @@ public class Slime extends Mob implements Enemy { this.entityData.set(Slime.ID_SIZE, j); this.reapplyPosition(); diff --git a/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch index b16a51e7e..3fffc0a45 100644 --- a/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch @@ -53,25 +53,10 @@ index 110503062b3043cffa082a1cda6b8d57152869aa..3e7e06bd5e9e4ed45c9e3452eb04e946 if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { new Exception().printStackTrace(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2e210ec03710180a7a4af0a3180b6ced7d4744b7..9db231480f0763c2b6514a956ec9398b98b7d1bc 100644 +index 2e210ec03710180a7a4af0a3180b6ced7d4744b7..c875d0351a32fa5bd75f4f440d6623830febf86b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -173,12 +173,14 @@ public class PurpurConfig { - return builder.build(); - } - -+ public static String cannotRideMob = "You cannot mount that mob"; - public static String afkBroadcastAway = "%s is now AFK"; - public static String afkBroadcastBack = "%s is no longer AFK"; - public static boolean afkBroadcastUseDisplayName = false; - public static String afkTabListPrefix = "[AFK] "; - public static String afkTabListSuffix = ""; - private static void messages() { -+ cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); - afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); - afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); - afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); -@@ -236,8 +238,14 @@ public class PurpurConfig { +@@ -236,8 +236,14 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0045-Configurable-TPS-Catchup.patch b/patches/server/0045-Configurable-TPS-Catchup.patch index 85b530b1f..275983f07 100644 --- a/patches/server/0045-Configurable-TPS-Catchup.patch +++ b/patches/server/0045-Configurable-TPS-Catchup.patch @@ -24,10 +24,10 @@ index 75d15b7c157fea129a730a0f48ae9ea71f13d533..d9f3613381cf7166e0b504a4370420e1 this.profiler.pop(); this.endMetricsRecordingTick(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9db231480f0763c2b6514a956ec9398b98b7d1bc..4905358e2a1939bfba963bda3fcf914721dfac45 100644 +index c875d0351a32fa5bd75f4f440d6623830febf86b..8c2bbafaef3469b90efa966a5eb1af3fada2a812 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -248,4 +248,9 @@ public class PurpurConfig { +@@ -246,4 +246,9 @@ public class PurpurConfig { loggerSuppressUnrecognizedRecipeErrors = getBoolean("settings.logger.suppress-unrecognized-recipe-errors", loggerSuppressUnrecognizedRecipeErrors); loggerSuppressSetBlockFarChunk = getBoolean("settings.logger.suppress-setblock-in-far-chunk-errors", loggerSuppressSetBlockFarChunk); } diff --git a/patches/server/0050-Implement-infinite-liquids.patch b/patches/server/0050-Implement-infinite-liquids.patch index 6c5303949..4ce536b5c 100644 --- a/patches/server/0050-Implement-infinite-liquids.patch +++ b/patches/server/0050-Implement-infinite-liquids.patch @@ -67,7 +67,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82 @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 47b1152efa1f5ab2f1a0a4d34be3c8e6644457fb..0124b074f936a4e68b539deb9625d153a076d999 100644 +index 807dfd6f54a12e299c53762e835144cd2a3d9858..db2e4c5e0ca177daa09188b481f3ad99c7a9d5c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -227,6 +227,11 @@ public class PurpurWorldConfig { @@ -82,3 +82,15 @@ index 47b1152efa1f5ab2f1a0a4d34be3c8e6644457fb..0124b074f936a4e68b539deb9625d153 public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; +@@ -236,6 +241,11 @@ public class PurpurWorldConfig { + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); + } + ++ public int waterInfiniteRequiredSources = 2; ++ private void waterSources() { ++ waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); ++ } ++ + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0061-Add-ping-command.patch b/patches/server/0061-Add-ping-command.patch index 80e22aa9f..4f3cc359b 100644 --- a/patches/server/0061-Add-ping-command.patch +++ b/patches/server/0061-Add-ping-command.patch @@ -17,18 +17,17 @@ index 147fcbdd784f06fe23138b20aef82f92ba154998..aadc9fc53b0f495664d90c40f30f9a12 if (environment.includeIntegrated) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4905358e2a1939bfba963bda3fcf914721dfac45..a74932163207506e779c941c819eb663b98bd18c 100644 +index 8c2bbafaef3469b90efa966a5eb1af3fada2a812..ce2a7f193c9faa4578b2447348c5d29864f5d634 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -179,6 +179,7 @@ public class PurpurConfig { +@@ -178,12 +178,14 @@ public class PurpurConfig { public static boolean afkBroadcastUseDisplayName = false; public static String afkTabListPrefix = "[AFK] "; public static String afkTabListSuffix = ""; + public static String pingCommandOutput = "%s's ping is %sms"; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -186,6 +187,7 @@ public class PurpurConfig { + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); diff --git a/patches/server/0062-Add-demo-command.patch b/patches/server/0062-Add-demo-command.patch index 3941c6443..c385e0745 100644 --- a/patches/server/0062-Add-demo-command.patch +++ b/patches/server/0062-Add-demo-command.patch @@ -17,18 +17,18 @@ index aadc9fc53b0f495664d90c40f30f9a128c3b4c95..54f9dd8d666b2b45190681f4362fce45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a74932163207506e779c941c819eb663b98bd18c..235db276a07017bf89e6311a0b84291e8a0af06b 100644 +index ce2a7f193c9faa4578b2447348c5d29864f5d634..c78d76deb4b1c1a5bf3f2e7c4566f5cc6603dc52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -179,6 +179,7 @@ public class PurpurConfig { +@@ -178,6 +178,7 @@ public class PurpurConfig { public static boolean afkBroadcastUseDisplayName = false; public static String afkTabListPrefix = "[AFK] "; public static String afkTabListSuffix = ""; + public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); -@@ -187,6 +188,7 @@ public class PurpurConfig { + afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); +@@ -185,6 +186,7 @@ public class PurpurConfig { afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); diff --git a/patches/server/0063-Add-credits-command.patch b/patches/server/0063-Add-credits-command.patch index edc67a907..3963594dc 100644 --- a/patches/server/0063-Add-credits-command.patch +++ b/patches/server/0063-Add-credits-command.patch @@ -17,10 +17,10 @@ index 54f9dd8d666b2b45190681f4362fce457e8e8ef2..e5b1b6ad32c48a4ba13b4930954fad18 org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 235db276a07017bf89e6311a0b84291e8a0af06b..8e99128759e555cdef0efe9cea1b3b36f2c3fda9 100644 +index c78d76deb4b1c1a5bf3f2e7c4566f5cc6603dc52..106b2abc4f7070ec4d1c6790f78c05392df43eff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -179,6 +179,7 @@ public class PurpurConfig { +@@ -178,6 +178,7 @@ public class PurpurConfig { public static boolean afkBroadcastUseDisplayName = false; public static String afkTabListPrefix = "[AFK] "; public static String afkTabListSuffix = ""; @@ -28,7 +28,7 @@ index 235db276a07017bf89e6311a0b84291e8a0af06b..8e99128759e555cdef0efe9cea1b3b36 public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; private static void messages() { -@@ -188,6 +189,7 @@ public class PurpurConfig { +@@ -186,6 +187,7 @@ public class PurpurConfig { afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); diff --git a/patches/server/0064-Configurable-jockey-options.patch b/patches/server/0064-Configurable-jockey-options.patch index b632bf26d..4df6cf5e1 100644 --- a/patches/server/0064-Configurable-jockey-options.patch +++ b/patches/server/0064-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index 8f22bfcde4bb8ad73794f2b98b156113e5a2a6c9..3d61b27c23d90e87fdfc8c170eafc116 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277ea4a36c3 100644 +index 2a64f26cd8db56bf522b1a9f6201164d188bd0b9..9d3c5867a8d54200e4a6e90ead9d003411a802c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -587,6 +587,9 @@ public class PurpurWorldConfig { +@@ -592,6 +592,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -598,6 +601,9 @@ public class PurpurWorldConfig { +@@ -603,6 +606,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 } public boolean elderGuardianRidable = false; -@@ -846,6 +852,9 @@ public class PurpurWorldConfig { +@@ -851,6 +857,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -857,6 +866,9 @@ public class PurpurWorldConfig { +@@ -862,6 +871,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 } public boolean illusionerRidable = false; -@@ -1673,6 +1685,9 @@ public class PurpurWorldConfig { +@@ -1678,6 +1690,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1684,6 +1699,9 @@ public class PurpurWorldConfig { +@@ -1689,6 +1704,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 } public boolean zombieHorseRidableInWater = false; -@@ -1718,6 +1736,9 @@ public class PurpurWorldConfig { +@@ -1723,6 +1741,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1729,6 +1750,9 @@ public class PurpurWorldConfig { +@@ -1734,6 +1755,9 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -250,7 +250,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 } public boolean zombifiedPiglinRidable = false; -@@ -1736,6 +1760,9 @@ public class PurpurWorldConfig { +@@ -1741,6 +1765,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index f69b94022b78cd9dad74858a90eb61904944e17e..1d9c99f3740cec7fb41602835cda3277 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1747,5 +1774,8 @@ public class PurpurWorldConfig { +@@ -1752,5 +1779,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0065-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0065-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 226e2dbc3..71c8483e9 100644 --- a/patches/server/0065-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0065-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -258,10 +258,10 @@ index 2189058a752986179165fb904513796e7220438e..b0aad0632ed2c6004222a4715c2643ef private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d9c99f3740cec7fb41602835cda3277ea4a36c3..7b7140769db9ca063d64fcc2295bacba178ae705 100644 +index 9d3c5867a8d54200e4a6e90ead9d003411a802c1..713c41552f6ad40ab60fa771069771cca85293e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1064,6 +1064,9 @@ public class PurpurWorldConfig { +@@ -1069,6 +1069,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -271,7 +271,7 @@ index 1d9c99f3740cec7fb41602835cda3277ea4a36c3..7b7140769db9ca063d64fcc2295bacba private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1085,6 +1088,9 @@ public class PurpurWorldConfig { +@@ -1090,6 +1093,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0066-Add-phantom-spawning-options.patch b/patches/server/0066-Add-phantom-spawning-options.patch index 26092f230..4e4fe2553 100644 --- a/patches/server/0066-Add-phantom-spawning-options.patch +++ b/patches/server/0066-Add-phantom-spawning-options.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: granny -Date: Fri, 9 Jun 2023 03:21:11 -0700 +From: William Blake Galbreath +Date: Fri, 3 Jul 2020 00:03:52 -0500 Subject: [PATCH] Add phantom spawning options @@ -40,10 +40,10 @@ index bc7648dbc132551dc6591ab49a1919a623c30f60..5b880677c895d0e747a1ed6a380ae356 for (int l = 0; l < k; ++l) { // Paper start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b7140769db9ca063d64fcc2295bacba178ae705..b786dd8e852fec75165d3a699028730cf6594d82 100644 +index 713c41552f6ad40ab60fa771069771cca85293e5..f207be407429ddb864b00c2ed139a1927e286b65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1067,6 +1067,12 @@ public class PurpurWorldConfig { +@@ -1072,6 +1072,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index 7b7140769db9ca063d64fcc2295bacba178ae705..b786dd8e852fec75165d3a699028730c private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1091,6 +1097,12 @@ public class PurpurWorldConfig { +@@ -1096,6 +1102,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0069-Add-allow-water-in-end-world-option.patch b/patches/server/0069-Add-allow-water-in-end-world-option.patch index 3c6b94c23..3f15651ef 100644 --- a/patches/server/0069-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0069-Add-allow-water-in-end-world-option.patch @@ -68,10 +68,10 @@ index 5fbdc96f29e29dfc092b9e84a988032db0fa36ab..1352168db8f3062943cc05396cbd9b53 } else { world.setBlockAndUpdate(pos, IceBlock.meltsInto()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8e99128759e555cdef0efe9cea1b3b36f2c3fda9..8575753af39d19e485f915e3e12e377c325b4751 100644 +index 106b2abc4f7070ec4d1c6790f78c05392df43eff..8a1fb43120da98c0c48d557125e59e43335bdb9e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -244,6 +244,11 @@ public class PurpurConfig { +@@ -242,6 +242,11 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0073-Squid-EAR-immunity.patch b/patches/server/0073-Squid-EAR-immunity.patch index 9362b7a95..b18361efd 100644 --- a/patches/server/0073-Squid-EAR-immunity.patch +++ b/patches/server/0073-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff68169ac99096373789d5af790db3697b73a17b..0eead11fc1e6a2c93b4ac0410fd8b4209398310d 100644 +index e8bf33d0731a41f16e4321cdd119c7787292cde3..227d7ffff8d9a605656a8b85f094d32af712c9d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1452,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1457,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index ff68169ac99096373789d5af790db3697b73a17b..0eead11fc1e6a2c93b4ac0410fd8b420 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1461,6 +1462,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1467,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0074-Phantoms-burn-in-light.patch b/patches/server/0074-Phantoms-burn-in-light.patch index 1a8fd6cfb..9010d57ec 100644 --- a/patches/server/0074-Phantoms-burn-in-light.patch +++ b/patches/server/0074-Phantoms-burn-in-light.patch @@ -52,10 +52,10 @@ index b0aad0632ed2c6004222a4715c2643eff13f030c..776602b545f5ee3b566787befb0f4307 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0eead11fc1e6a2c93b4ac0410fd8b4209398310d..61864baa60313dcff327720adb3a316079430306 100644 +index 227d7ffff8d9a605656a8b85f094d32af712c9d9..5a834dee8903db6062bcb6c9c73def6e1c1cf831 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1122,6 +1122,9 @@ public class PurpurWorldConfig { +@@ -1127,6 +1127,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -65,7 +65,7 @@ index 0eead11fc1e6a2c93b4ac0410fd8b4209398310d..61864baa60313dcff327720adb3a3160 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1152,6 +1155,9 @@ public class PurpurWorldConfig { +@@ -1157,6 +1160,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0075-Configurable-villager-breeding.patch b/patches/server/0075-Configurable-villager-breeding.patch index c0eff7553..51a57728e 100644 --- a/patches/server/0075-Configurable-villager-breeding.patch +++ b/patches/server/0075-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 813b9708d218589afaaa2d0578affcc78f0c075f..52a84f354cc51b3ca875756514588b2e private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61864baa60313dcff327720adb3a316079430306..883489dc77c0d157045f443345df8063af61a15f 100644 +index 5a834dee8903db6062bcb6c9c73def6e1c1cf831..03f32bd89a72a9549e5d9313595ad163b56d4fbd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1610,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1615,6 +1615,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index 61864baa60313dcff327720adb3a316079430306..883489dc77c0d157045f443345df8063 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1622,6 +1623,7 @@ public class PurpurWorldConfig { +@@ -1627,6 +1628,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0078-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0078-Add-vindicator-johnny-spawn-chance.patch index e636e9a47..5e87e52a7 100644 --- a/patches/server/0078-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0078-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,10 @@ index 40858ac2a9b58108472748d0ef2c2fd5ef5cfd98..2a5b6b94b15bf066b5722e7a4f782bc8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 577d45bc6bbd2a119a2f77c7d5651875fbb7ea87..5aea1f5b50493ee2d5752442007c5979c2f2ddc8 100644 +index 1895ec42d033c148bd79a04fee4a28bc2be117bb..3ee48df518c1a05ccd12f239231e5f50dce5be44 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1637,6 +1637,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1642,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index 577d45bc6bbd2a119a2f77c7d5651875fbb7ea87..5aea1f5b50493ee2d5752442007c5979 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1647,6 +1648,7 @@ public class PurpurWorldConfig { +@@ -1652,6 +1653,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0079-Add-option-to-disable-certain-block-updates.patch b/patches/server/0079-Add-option-to-disable-certain-block-updates.patch index a839d723b..b77822c26 100644 --- a/patches/server/0079-Add-option-to-disable-certain-block-updates.patch +++ b/patches/server/0079-Add-option-to-disable-certain-block-updates.patch @@ -125,10 +125,10 @@ index 910864cfeac085648e6c671b0f9480417324d36e..6bc29eeb5771a3dc9aa23c7d184c8957 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8575753af39d19e485f915e3e12e377c325b4751..e829e215d1fe80cdaf9162268011912081f4c5ee 100644 +index 8a1fb43120da98c0c48d557125e59e43335bdb9e..118eae57b4a63bb50ffb34c632122234ce0d2d43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -249,6 +249,15 @@ public class PurpurConfig { +@@ -247,6 +247,15 @@ public class PurpurConfig { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); } diff --git a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch index 44bd814f0..a1c6e86bc 100644 --- a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 08e9fd3581578195e5df079b086811c5964fd17a..7b2674233d0b8582243448c49d1c4727 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 63d27e2ee263fdc8b165526f04781a1cf3e60894..a82912b348921f55962b48d052a4e492c7fbb224 100644 +index 47e425967c120fa0abec8dacf4385ce3ad47f21e..9b398a73d093f83e437867119bbd77229080cfc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -609,6 +609,7 @@ public class PurpurWorldConfig { +@@ -614,6 +614,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 63d27e2ee263fdc8b165526f04781a1cf3e60894..a82912b348921f55962b48d052a4e492 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -621,6 +622,7 @@ public class PurpurWorldConfig { +@@ -626,6 +627,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0083-Short-enderman-height.patch b/patches/server/0083-Short-enderman-height.patch index aa38dd85d..a8e732b3b 100644 --- a/patches/server/0083-Short-enderman-height.patch +++ b/patches/server/0083-Short-enderman-height.patch @@ -31,10 +31,10 @@ index 54b59b7faf69d54c05bdfee9b1bd2f137a5dd958..15eb4c93ddd4ea06640ff45e11c54b5c Vec3 vec3d = player.getViewVector(1.0F).normalize(); Vec3 vec3d1 = new Vec3(this.getX() - player.getX(), this.getEyeY() - player.getEyeY(), this.getZ() - player.getZ()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e829e215d1fe80cdaf9162268011912081f4c5ee..db4c85cae58805cfa2a460e33a13e85abc8e593d 100644 +index 118eae57b4a63bb50ffb34c632122234ce0d2d43..763b3753fd77766475114226db593b7ce941336a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -244,6 +244,12 @@ public class PurpurConfig { +@@ -242,6 +242,12 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index 5cf8832e4..429f9f7ba 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index ffc76354ead6937daf366c3d87bcb51d3e4c47f5..5b98d42b5d6bc07265fbb017e51a6281 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a07a7e650aaf980348e55e3556e880cbb0773f84..5749edd65f332773716202e8ec2e92ecb9eff0ed 100644 +index 9b398a73d093f83e437867119bbd77229080cfc3..99ce124edf3cb3e747785675c17bd831bf68fc74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1477,6 +1477,7 @@ public class PurpurWorldConfig { +@@ -1482,6 +1482,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index a07a7e650aaf980348e55e3556e880cbb0773f84..5749edd65f332773716202e8ec2e92ec private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1487,6 +1488,7 @@ public class PurpurWorldConfig { +@@ -1492,6 +1493,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch index 68002cd70..75f005b5c 100644 --- a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch @@ -18,10 +18,10 @@ index c461e0d04047db9c0c5ecc04063cebd38bf96ec2..e7554ec800f321e4e34c926c53f2375a private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index db4c85cae58805cfa2a460e33a13e85abc8e593d..ba4dc732327e7661d39929dfa330a5b29cce9269 100644 +index 763b3753fd77766475114226db593b7ce941336a..a5d8ed8cc7b28d3fb88d04ff7f7995483f60c0a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -212,6 +212,7 @@ public class PurpurConfig { +@@ -210,6 +210,7 @@ public class PurpurConfig { public static int barrelRows = 3; public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; @@ -29,7 +29,7 @@ index db4c85cae58805cfa2a460e33a13e85abc8e593d..ba4dc732327e7661d39929dfa330a5b2 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -242,6 +243,7 @@ public class PurpurConfig { +@@ -240,6 +241,7 @@ public class PurpurConfig { enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows); org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/patches/server/0088-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch index f6fb41d44..4ae43bcd7 100644 --- a/patches/server/0088-Customizable-wither-health-and-healing.patch +++ b/patches/server/0088-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index a20017a6086421061ee13df9cf37e08eeb515a5b..c2f4ae412684cc2f8d3cc2206003be5c this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b83b293a9c017f4e4da9944fe4c928909030628e..76c1d65e1df2c98c22669c1e3d4328aaede58fb0 100644 +index a36f35990fe315dbb87c453b501892009acaa342..af5bc07bf5598dc4ecb88b05e36d0ce232441b1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1716,6 +1716,8 @@ public class PurpurWorldConfig { +@@ -1721,6 +1721,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index b83b293a9c017f4e4da9944fe4c928909030628e..76c1d65e1df2c98c22669c1e3d4328aa private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1731,6 +1733,8 @@ public class PurpurWorldConfig { +@@ -1736,6 +1738,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 13b30cae7..5fb5244a8 100644 --- a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,10 +70,10 @@ index b2b04d7b7bbc400fb66cac385fa754d4fb47c7d9..bd75aa78a7dd437d6fce79a6cb182981 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c386c03ff153b72570c667af1b35677bb47f898..7e42867fb666d8f4de17b2b50924eba6382be100 100644 +index c9b51a213e32c62f42b5ee1adc9d57ea930ff59d..f08ce3435d293fbd39c6e6fa89607157d33f9812 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1849,6 +1849,7 @@ public class PurpurWorldConfig { +@@ -1854,6 +1854,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 8c386c03ff153b72570c667af1b35677bb47f898..7e42867fb666d8f4de17b2b50924eba6 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1863,6 +1864,7 @@ public class PurpurWorldConfig { +@@ -1868,6 +1869,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0094-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch index af4ba9080..a6d833e2b 100644 --- a/patches/server/0094-Flying-squids-Oh-my.patch +++ b/patches/server/0094-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index de0a015cc944c36358fc34a3142ecbf9d2a332b5..1431d7f295614641c1a5a5197f4bac3f float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e42867fb666d8f4de17b2b50924eba6382be100..35a4cf5fd61beeed1f62fa6e1854492377b7569c 100644 +index f08ce3435d293fbd39c6e6fa89607157d33f9812..37a7ceb49a00a086dadd27168726d690da3dc7c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -901,10 +901,12 @@ public class PurpurWorldConfig { +@@ -906,10 +906,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index 7e42867fb666d8f4de17b2b50924eba6382be100..35a4cf5fd61beeed1f62fa6e18544923 } public boolean goatRidable = false; -@@ -1536,6 +1538,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1543,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 7e42867fb666d8f4de17b2b50924eba6382be100..35a4cf5fd61beeed1f62fa6e18544923 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1547,6 +1550,7 @@ public class PurpurWorldConfig { +@@ -1552,6 +1555,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch index fb2f28353..529e1d3fb 100644 --- a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch +++ b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch @@ -17,10 +17,10 @@ index 518d85a13c37a2f7d32ca0718323181048559986..2c4ce164ab3011f372ff1719c8d4a333 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ba4dc732327e7661d39929dfa330a5b29cce9269..4e303fc793bef67426308204d704b02960fc75b8 100644 +index a5d8ed8cc7b28d3fb88d04ff7f7995483f60c0a2..cac902dae062d706c6ba255f74fc0f82378df241 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -246,6 +246,16 @@ public class PurpurConfig { +@@ -244,6 +244,16 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); } diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 77d2a857f..3dbd744ba 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -525,10 +525,10 @@ index 853fe631a7d665e2379296c89e433e761495a814..ae4d404b837da202e52d246dabfc00c8 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7c25454a8 100644 +index 79f951f6275612234a26bff758ef3b0a67be9e52..510ab470e6d3c49f209277732e78c2ebe20d8f5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -502,10 +502,12 @@ public class PurpurWorldConfig { +@@ -507,10 +507,12 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; @@ -541,7 +541,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean batRidable = false; -@@ -545,6 +547,7 @@ public class PurpurWorldConfig { +@@ -550,6 +552,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -549,7 +549,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -556,6 +559,7 @@ public class PurpurWorldConfig { +@@ -561,6 +564,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -557,7 +557,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean blazeRidable = false; -@@ -576,6 +580,7 @@ public class PurpurWorldConfig { +@@ -581,6 +585,7 @@ public class PurpurWorldConfig { blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); } @@ -565,7 +565,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 public double camelMaxHealthMin = 32.0D; public double camelMaxHealthMax = 32.0D; public double camelJumpStrengthMin = 0.42D; -@@ -589,6 +594,7 @@ public class PurpurWorldConfig { +@@ -594,6 +599,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -573,7 +573,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean catRidable = false; -@@ -598,6 +604,7 @@ public class PurpurWorldConfig { +@@ -603,6 +609,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -581,7 +581,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -611,6 +618,7 @@ public class PurpurWorldConfig { +@@ -616,6 +623,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -589,7 +589,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean caveSpiderRidable = false; -@@ -634,6 +642,7 @@ public class PurpurWorldConfig { +@@ -639,6 +647,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -597,7 +597,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -645,6 +654,7 @@ public class PurpurWorldConfig { +@@ -650,6 +659,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -605,7 +605,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean codRidable = false; -@@ -666,6 +676,7 @@ public class PurpurWorldConfig { +@@ -671,6 +681,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -613,7 +613,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -677,6 +688,7 @@ public class PurpurWorldConfig { +@@ -682,6 +693,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -621,7 +621,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean creeperRidable = false; -@@ -728,6 +740,7 @@ public class PurpurWorldConfig { +@@ -733,6 +745,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -629,7 +629,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -743,6 +756,7 @@ public class PurpurWorldConfig { +@@ -748,6 +761,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -637,7 +637,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean drownedRidable = false; -@@ -862,6 +876,7 @@ public class PurpurWorldConfig { +@@ -867,6 +881,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -645,7 +645,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -873,17 +888,20 @@ public class PurpurWorldConfig { +@@ -878,17 +893,20 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -666,7 +666,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean ghastRidable = false; -@@ -951,11 +969,13 @@ public class PurpurWorldConfig { +@@ -956,11 +974,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = true; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -680,7 +680,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean guardianRidable = false; -@@ -976,6 +996,7 @@ public class PurpurWorldConfig { +@@ -981,6 +1001,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = true; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -688,7 +688,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -986,6 +1007,7 @@ public class PurpurWorldConfig { +@@ -991,6 +1012,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -696,7 +696,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean horseRidableInWater = false; -@@ -995,6 +1017,7 @@ public class PurpurWorldConfig { +@@ -1000,6 +1022,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -704,7 +704,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1010,6 +1033,7 @@ public class PurpurWorldConfig { +@@ -1015,6 +1038,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -712,7 +712,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean huskRidable = false; -@@ -1087,6 +1111,7 @@ public class PurpurWorldConfig { +@@ -1092,6 +1116,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -720,7 +720,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1104,6 +1129,7 @@ public class PurpurWorldConfig { +@@ -1109,6 +1134,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -728,7 +728,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean magmaCubeRidable = false; -@@ -1132,6 +1158,7 @@ public class PurpurWorldConfig { +@@ -1137,6 +1163,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = true; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -736,7 +736,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1142,6 +1169,7 @@ public class PurpurWorldConfig { +@@ -1147,6 +1174,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -744,7 +744,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean muleRidableInWater = false; -@@ -1151,6 +1179,7 @@ public class PurpurWorldConfig { +@@ -1156,6 +1184,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -752,7 +752,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1166,12 +1195,14 @@ public class PurpurWorldConfig { +@@ -1171,12 +1200,14 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -767,7 +767,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1182,12 +1213,14 @@ public class PurpurWorldConfig { +@@ -1187,12 +1218,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -782,7 +782,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1198,6 +1231,7 @@ public class PurpurWorldConfig { +@@ -1203,6 +1236,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -790,7 +790,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean parrotRidable = false; -@@ -1281,6 +1315,7 @@ public class PurpurWorldConfig { +@@ -1286,6 +1320,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -798,7 +798,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1292,6 +1327,7 @@ public class PurpurWorldConfig { +@@ -1297,6 +1332,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -806,7 +806,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean piglinRidable = false; -@@ -1348,6 +1384,7 @@ public class PurpurWorldConfig { +@@ -1353,6 +1389,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -814,7 +814,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1361,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1366,6 +1403,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -822,7 +822,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean pufferfishRidable = false; -@@ -1383,6 +1421,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1426,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -830,7 +830,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1395,6 +1434,7 @@ public class PurpurWorldConfig { +@@ -1400,6 +1439,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -838,7 +838,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean ravagerRidable = false; -@@ -1431,6 +1471,7 @@ public class PurpurWorldConfig { +@@ -1436,6 +1476,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = true; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -846,7 +846,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1441,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1446,6 +1487,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -854,7 +854,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean shulkerRidable = false; -@@ -1564,11 +1606,13 @@ public class PurpurWorldConfig { +@@ -1569,11 +1611,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -868,7 +868,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean squidRidable = false; -@@ -1627,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1676,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -876,7 +876,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1637,6 +1682,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1687,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -884,7 +884,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean tadpoleRidable = false; -@@ -1657,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1708,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -892,7 +892,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1674,6 +1721,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1726,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -900,7 +900,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean tropicalFishRidable = false; -@@ -1694,6 +1742,7 @@ public class PurpurWorldConfig { +@@ -1699,6 +1747,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -908,7 +908,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1704,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1709,6 +1758,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -916,7 +916,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean vexRidable = false; -@@ -1731,6 +1781,7 @@ public class PurpurWorldConfig { +@@ -1736,6 +1786,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -924,7 +924,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1744,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1800,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -932,7 +932,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 } public boolean vindicatorRidable = false; -@@ -1855,6 +1907,7 @@ public class PurpurWorldConfig { +@@ -1860,6 +1912,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -940,7 +940,7 @@ index a3a6f6fc0e74586c476d28793bbf1ec51d6cfbe4..702e31b206c430d5b055eecd93bce0a7 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1865,6 +1918,7 @@ public class PurpurWorldConfig { +@@ -1870,6 +1923,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index bf6d0dcae..b5513367b 100644 --- a/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 15eb4c93ddd4ea06640ff45e11c54b5c761ca89a..47b82549b401acca5e9a5702d4167465 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db4c2f00e8e1121426166ec0bf45d01e93fc3fa2..448eaab8347dd66cf060d45783e5d4b0442a6774 100644 +index 6aebb6d2f2837117424aa1f47fc3334323bfe061..3740e5223b6d4c42b2e7e8001c0c875bc56bc445 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -832,6 +832,7 @@ public class PurpurWorldConfig { +@@ -837,6 +837,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index db4c2f00e8e1121426166ec0bf45d01e93fc3fa2..448eaab8347dd66cf060d45783e5d4b0 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -843,6 +844,7 @@ public class PurpurWorldConfig { +@@ -848,6 +849,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch index c54e42200..8f1fcf335 100644 --- a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 2a5ffaf5614e19305f4e08e15752364919e68a49..ecc0f221fca332b6f4d8feb72dbafc52 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d7da9c83923f01e83ab6b8d50369d8281c6d6a63..64d7d6578d30c85792ac7b382907f1652af61b7d 100644 +index 5852c31513548a42a644e58e6ba5080b2baa76c4..b1823acc4f02d86d839f45d00efd289e4f734e3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1604,6 +1604,10 @@ public class PurpurWorldConfig { +@@ -1609,6 +1609,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index d7da9c83923f01e83ab6b8d50369d8281c6d6a63..64d7d6578d30c85792ac7b382907f165 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1617,6 +1621,10 @@ public class PurpurWorldConfig { +@@ -1622,6 +1626,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0110-EMC-Configurable-disable-give-dropping.patch b/patches/server/0110-EMC-Configurable-disable-give-dropping.patch index 07d280b6c..9c3c8cc1d 100644 --- a/patches/server/0110-EMC-Configurable-disable-give-dropping.patch +++ b/patches/server/0110-EMC-Configurable-disable-give-dropping.patch @@ -20,10 +20,10 @@ index d601d287e94a59ff93b8a83a44dac02544d211df..0ff3b06a98b2f4514b2d861b92dd70fe itemstack1.setCount(1); entityitem = entityplayer.drop(itemstack1, false, false, false); // SPIGOT-2942: Add boolean to call event diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4e303fc793bef67426308204d704b02960fc75b8..b1757cd2f828304ca7376eed6eea01f816b26550 100644 +index cac902dae062d706c6ba255f74fc0f82378df241..22e9972b95824d5ef695af65a927a08c3bacd4fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -209,6 +209,11 @@ public class PurpurConfig { +@@ -207,6 +207,11 @@ public class PurpurConfig { useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive); } diff --git a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 6ad735677..79c50187c 100644 --- a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -176,10 +176,10 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 64d7d6578d30c85792ac7b382907f1652af61b7d..441fc2eeb3695b690734e7767f71c9091e29aa58 100644 +index b1823acc4f02d86d839f45d00efd289e4f734e3e..2fbc0385254828548ac42e0b9cc4f0d1b4a829a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1807,6 +1807,8 @@ public class PurpurWorldConfig { +@@ -1812,6 +1812,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -188,7 +188,7 @@ index 64d7d6578d30c85792ac7b382907f1652af61b7d..441fc2eeb3695b690734e7767f71c909 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1821,6 +1823,8 @@ public class PurpurWorldConfig { +@@ -1826,6 +1828,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 131f35187..17a8748d4 100644 --- a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 3d61b27c23d90e87fdfc8c170eafc116716ac047..67fd554cfd6b848ca1f2cf804ad4543a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 441fc2eeb3695b690734e7767f71c9091e29aa58..a6bead57f322850192534cdb798c2f946a447647 100644 +index 2fbc0385254828548ac42e0b9cc4f0d1b4a829a9..4c9fb0baae787ee7563b2e721f7b6367b0691d2d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2051,6 +2051,7 @@ public class PurpurWorldConfig { +@@ -2056,6 +2056,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 441fc2eeb3695b690734e7767f71c9091e29aa58..a6bead57f322850192534cdb798c2f94 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2065,5 +2066,6 @@ public class PurpurWorldConfig { +@@ -2070,5 +2071,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch index 0260244fa..125b83053 100644 --- a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -221,10 +221,10 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a6bead57f322850192534cdb798c2f946a447647..eedb9ddaf04de55f5a5b42adc032be63c5f7a8b5 100644 +index 4c9fb0baae787ee7563b2e721f7b6367b0691d2d..ead17ced10d157231fcc5648512a18f603354fbf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1936,6 +1936,8 @@ public class PurpurWorldConfig { +@@ -1941,6 +1941,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -233,7 +233,7 @@ index a6bead57f322850192534cdb798c2f946a447647..eedb9ddaf04de55f5a5b42adc032be63 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1947,6 +1949,8 @@ public class PurpurWorldConfig { +@@ -1952,6 +1954,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0114-Configurable-default-collar-color.patch b/patches/server/0114-Configurable-default-collar-color.patch index 230678bb3..28a5238d7 100644 --- a/patches/server/0114-Configurable-default-collar-color.patch +++ b/patches/server/0114-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index aa484d03ed31f6c60c0b4456a4047bc38a40ea4a..89627025c0b5464900a5ea818c7aaf5d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eedb9ddaf04de55f5a5b42adc032be63c5f7a8b5..48272adb3d1d2ecbc68926605b92b85644f67fd9 100644 +index ead17ced10d157231fcc5648512a18f603354fbf..52a17b09fb33255b0fb883c76aa0541ddc2e071b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -620,6 +620,7 @@ public class PurpurWorldConfig { +@@ -625,6 +625,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index eedb9ddaf04de55f5a5b42adc032be63c5f7a8b5..48272adb3d1d2ecbc68926605b92b856 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -634,6 +635,11 @@ public class PurpurWorldConfig { +@@ -639,6 +640,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index eedb9ddaf04de55f5a5b42adc032be63c5f7a8b5..48272adb3d1d2ecbc68926605b92b856 } public boolean caveSpiderRidable = false; -@@ -1936,6 +1942,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +1947,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index eedb9ddaf04de55f5a5b42adc032be63c5f7a8b5..48272adb3d1d2ecbc68926605b92b856 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1949,6 +1956,11 @@ public class PurpurWorldConfig { +@@ -1954,6 +1961,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0115-Phantom-flames-on-swoop.patch b/patches/server/0115-Phantom-flames-on-swoop.patch index b72536f62..38133d092 100644 --- a/patches/server/0115-Phantom-flames-on-swoop.patch +++ b/patches/server/0115-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 776602b545f5ee3b566787befb0f43075ce02a29..29167ec21bc68e43c6505b6b1ee376d7 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48272adb3d1d2ecbc68926605b92b85644f67fd9..8c5c8cab455fe134538c3af1eaeffbdb67472be9 100644 +index 52a17b09fb33255b0fb883c76aa0541ddc2e071b..a02c5dce24e1a2d74e718fbf1eb6aaa2e104f19d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1298,6 +1298,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1303,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 48272adb3d1d2ecbc68926605b92b85644f67fd9..8c5c8cab455fe134538c3af1eaeffbdb private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1331,6 +1332,7 @@ public class PurpurWorldConfig { +@@ -1336,6 +1337,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch index 6f8b489a3..51708c718 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -104,18 +104,18 @@ index 39d476994b452a7d04659023ffe58ea23a29b8fe..3e40080c6b1e74c80e762b385a7534bb entityplayer.awardStat(Stats.LEAVE_GAME); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b1757cd2f828304ca7376eed6eea01f816b26550..70db296b80b98b378917f68037420ae150e14adb 100644 +index 22e9972b95824d5ef695af65a927a08c3bacd4fa..fdfb1f6bd59f5b9e193aac61b2ddc1b1e4f20d6c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -182,6 +182,7 @@ public class PurpurConfig { +@@ -181,6 +181,7 @@ public class PurpurConfig { public static String creditsCommandOutput = "%s has been shown the end credits"; public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; + public static String tpsbarCommandOutput = "Tpsbar toggled for "; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -192,6 +193,7 @@ public class PurpurConfig { + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); +@@ -190,6 +191,7 @@ public class PurpurConfig { creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput); demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); @@ -123,7 +123,7 @@ index b1757cd2f828304ca7376eed6eea01f816b26550..70db296b80b98b378917f68037420ae1 } public static String serverModName = "Purpur"; -@@ -214,6 +216,29 @@ public class PurpurConfig { +@@ -212,6 +214,29 @@ public class PurpurConfig { disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops); } diff --git a/patches/server/0118-Striders-give-saddle-back.patch b/patches/server/0118-Striders-give-saddle-back.patch index 6451a26b4..0d9c3c451 100644 --- a/patches/server/0118-Striders-give-saddle-back.patch +++ b/patches/server/0118-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 93dca4758ed995373fe1585930f225604a4153fa..4c077c94b654f54465ece2aa45c5ead0 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e5c40ade6c26a5b6e2d8b1272cb8dcf15ab3d87..7da81baadd9159e6a72c39065a126e5958f9afd8 100644 +index 7220bcb158ea7706bb3554a457c0ee3d32af1cf5..2de252b735d8430e776e755996a1dbb3a65fd754 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1710,6 +1710,7 @@ public class PurpurWorldConfig { +@@ -1715,6 +1715,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 7e5c40ade6c26a5b6e2d8b1272cb8dcf15ab3d87..7da81baadd9159e6a72c39065a126e59 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1721,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1727,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index a5ed88ef4..78dae23c3 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c366eb863 100644 +index 787116225cc5a21576a3854c481f963b19c63cc4..2d358654a518d3dfa663d079fc522f8bafd2b456 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,8 +117,11 @@ public class PurpurWorldConfig { @@ -437,8 +437,8 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c + turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); } - public boolean babiesAreRidable = true; -@@ -736,6 +751,7 @@ public class PurpurWorldConfig { + public int waterInfiniteRequiredSources = 2; +@@ -741,6 +756,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -446,7 +446,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -748,6 +764,7 @@ public class PurpurWorldConfig { +@@ -753,6 +769,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -454,7 +454,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean dolphinRidable = false; -@@ -842,6 +859,7 @@ public class PurpurWorldConfig { +@@ -847,6 +864,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -462,7 +462,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -858,6 +876,7 @@ public class PurpurWorldConfig { +@@ -863,6 +881,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -470,7 +470,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean endermanRidable = false; -@@ -866,6 +885,7 @@ public class PurpurWorldConfig { +@@ -871,6 +890,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -478,7 +478,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -878,6 +898,7 @@ public class PurpurWorldConfig { +@@ -883,6 +903,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -486,7 +486,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean endermiteRidable = false; -@@ -900,6 +921,7 @@ public class PurpurWorldConfig { +@@ -905,6 +926,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = true; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -494,7 +494,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -910,6 +932,7 @@ public class PurpurWorldConfig { +@@ -915,6 +937,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -502,7 +502,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean foxRidable = false; -@@ -918,6 +941,7 @@ public class PurpurWorldConfig { +@@ -923,6 +946,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -510,7 +510,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -930,6 +954,7 @@ public class PurpurWorldConfig { +@@ -935,6 +959,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -518,7 +518,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean frogRidable = false; -@@ -1377,6 +1402,7 @@ public class PurpurWorldConfig { +@@ -1382,6 +1407,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = true; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -526,7 +526,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1387,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1418,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -534,7 +534,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean piglinBruteRidable = false; -@@ -1409,6 +1436,7 @@ public class PurpurWorldConfig { +@@ -1414,6 +1441,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = true; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -542,7 +542,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1419,6 +1447,7 @@ public class PurpurWorldConfig { +@@ -1424,6 +1452,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -550,7 +550,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean polarBearRidable = false; -@@ -1465,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1499,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -558,7 +558,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1478,12 +1508,14 @@ public class PurpurWorldConfig { +@@ -1483,12 +1513,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -573,7 +573,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1494,6 +1526,7 @@ public class PurpurWorldConfig { +@@ -1499,6 +1531,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -581,7 +581,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean salmonRidable = false; -@@ -1515,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1520,6 +1553,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -589,7 +589,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1526,6 +1560,7 @@ public class PurpurWorldConfig { +@@ -1531,6 +1565,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -597,7 +597,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean shulkerRidable = false; -@@ -1548,6 +1583,7 @@ public class PurpurWorldConfig { +@@ -1553,6 +1588,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = true; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -605,7 +605,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1558,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1563,6 +1599,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -613,7 +613,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean skeletonRidable = false; -@@ -1634,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1639,6 +1676,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -621,7 +621,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1651,6 +1689,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1694,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -629,7 +629,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean snifferRidable = false; -@@ -1837,6 +1876,7 @@ public class PurpurWorldConfig { +@@ -1842,6 +1881,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -637,7 +637,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1853,6 +1893,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1898,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -645,7 +645,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean vindicatorRidable = false; -@@ -1925,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1930,6 +1971,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -653,7 +653,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1942,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1947,6 +1989,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -661,7 +661,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c } public boolean witherSkeletonRidable = false; -@@ -2013,6 +2056,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2061,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -669,7 +669,7 @@ index 170df9668cb7efc61988f89a271b60c2fa268965..837f15b2435ad4a0824fd1ff2f71ed5c private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2028,6 +2072,7 @@ public class PurpurWorldConfig { +@@ -2033,6 +2077,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch index 15d3270f2..40b29e79d 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch @@ -919,7 +919,7 @@ index 6250d2bd682ce3c421aeea598cf8ec9032ac9785..1c7cd82540aa9566b04142c741d26b4f protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 91321bd00771cc70665a3e28eeba273b791eaa11..525f1bd0c5a4f19d4c7df9dd8dba35a15ecbb0b6 100644 +index c46406a46f05d275eefd548420fce1dab716c765..0f073a22fdb1cfa4504872eed2b7aeef46582ad3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -78,6 +78,11 @@ public class Slime extends Mob implements Enemy { @@ -1197,10 +1197,10 @@ index 41ddf073ecb8ea97cca8021390500d65866488a5..e2a9179bb7a5ecbc31d98a2410a09f5e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df72a02d562 100644 +index 1cb4be76d5903cf85103a248c0ff0720c75aaef5..d29226c0e285b4ea786dac500526a9c3ffeae0c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -569,11 +569,13 @@ public class PurpurWorldConfig { +@@ -574,11 +574,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1214,7 +1214,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean batRidable = false; -@@ -588,6 +590,7 @@ public class PurpurWorldConfig { +@@ -593,6 +595,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1222,7 +1222,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -606,6 +609,7 @@ public class PurpurWorldConfig { +@@ -611,6 +614,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1230,7 +1230,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean beeRidable = false; -@@ -614,6 +618,7 @@ public class PurpurWorldConfig { +@@ -619,6 +623,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1238,7 +1238,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -626,6 +631,7 @@ public class PurpurWorldConfig { +@@ -631,6 +636,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1246,7 +1246,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean blazeRidable = false; -@@ -633,6 +639,7 @@ public class PurpurWorldConfig { +@@ -638,6 +644,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1254,7 +1254,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -644,6 +651,7 @@ public class PurpurWorldConfig { +@@ -649,6 +656,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1262,7 +1262,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public int camelBreedingTicks = 6000; -@@ -672,6 +680,7 @@ public class PurpurWorldConfig { +@@ -677,6 +685,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1270,7 +1270,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -691,12 +700,14 @@ public class PurpurWorldConfig { +@@ -696,12 +705,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1285,7 +1285,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -707,6 +718,7 @@ public class PurpurWorldConfig { +@@ -712,6 +723,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1293,7 +1293,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean chickenRidable = false; -@@ -715,6 +727,7 @@ public class PurpurWorldConfig { +@@ -720,6 +732,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1301,7 +1301,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -727,11 +740,13 @@ public class PurpurWorldConfig { +@@ -732,11 +745,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1315,7 +1315,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -741,6 +756,7 @@ public class PurpurWorldConfig { +@@ -746,6 +761,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1323,7 +1323,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean cowRidable = false; -@@ -749,6 +765,7 @@ public class PurpurWorldConfig { +@@ -754,6 +770,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1331,7 +1331,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -761,6 +778,7 @@ public class PurpurWorldConfig { +@@ -766,6 +783,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1339,7 +1339,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean creeperRidable = false; -@@ -770,6 +788,7 @@ public class PurpurWorldConfig { +@@ -775,6 +793,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1347,7 +1347,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -783,6 +802,7 @@ public class PurpurWorldConfig { +@@ -788,6 +807,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1355,7 +1355,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean dolphinRidable = false; -@@ -792,6 +812,7 @@ public class PurpurWorldConfig { +@@ -797,6 +817,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1363,7 +1363,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -805,6 +826,7 @@ public class PurpurWorldConfig { +@@ -810,6 +831,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1371,7 +1371,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean donkeyRidableInWater = false; -@@ -815,6 +837,7 @@ public class PurpurWorldConfig { +@@ -820,6 +842,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1379,7 +1379,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -831,6 +854,7 @@ public class PurpurWorldConfig { +@@ -836,6 +859,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1387,7 +1387,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean drownedRidable = false; -@@ -841,6 +865,7 @@ public class PurpurWorldConfig { +@@ -846,6 +870,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1395,7 +1395,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -855,11 +880,13 @@ public class PurpurWorldConfig { +@@ -860,11 +885,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1409,7 +1409,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -869,6 +896,7 @@ public class PurpurWorldConfig { +@@ -874,6 +901,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1417,7 +1417,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean enderDragonRidable = false; -@@ -878,6 +906,7 @@ public class PurpurWorldConfig { +@@ -883,6 +911,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1425,7 +1425,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -895,6 +924,7 @@ public class PurpurWorldConfig { +@@ -900,6 +929,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1433,7 +1433,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean endermanRidable = false; -@@ -904,6 +934,7 @@ public class PurpurWorldConfig { +@@ -909,6 +939,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1441,7 +1441,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -917,12 +948,14 @@ public class PurpurWorldConfig { +@@ -922,12 +953,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1456,7 +1456,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -933,6 +966,7 @@ public class PurpurWorldConfig { +@@ -938,6 +971,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1464,7 +1464,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean evokerRidable = false; -@@ -940,6 +974,7 @@ public class PurpurWorldConfig { +@@ -945,6 +979,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1472,7 +1472,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -951,6 +986,7 @@ public class PurpurWorldConfig { +@@ -956,6 +991,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1480,7 +1480,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean foxRidable = false; -@@ -960,6 +996,7 @@ public class PurpurWorldConfig { +@@ -965,6 +1001,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1488,7 +1488,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -973,6 +1010,7 @@ public class PurpurWorldConfig { +@@ -978,6 +1015,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1496,7 +1496,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean frogRidable = false; -@@ -993,6 +1031,7 @@ public class PurpurWorldConfig { +@@ -998,6 +1036,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1504,7 +1504,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1004,6 +1043,7 @@ public class PurpurWorldConfig { +@@ -1009,6 +1048,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1512,7 +1512,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean giantRidable = false; -@@ -1016,6 +1056,7 @@ public class PurpurWorldConfig { +@@ -1021,6 +1061,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1520,7 +1520,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1036,17 +1077,20 @@ public class PurpurWorldConfig { +@@ -1041,17 +1082,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1541,7 +1541,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean goatRidable = false; -@@ -1054,17 +1098,20 @@ public class PurpurWorldConfig { +@@ -1059,17 +1103,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1562,7 +1562,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1074,6 +1121,7 @@ public class PurpurWorldConfig { +@@ -1079,6 +1126,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1570,7 +1570,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean hoglinRidable = false; -@@ -1081,6 +1129,7 @@ public class PurpurWorldConfig { +@@ -1086,6 +1134,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1578,7 +1578,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1092,6 +1141,7 @@ public class PurpurWorldConfig { +@@ -1097,6 +1146,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1586,7 +1586,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean horseRidableInWater = false; -@@ -1102,6 +1152,7 @@ public class PurpurWorldConfig { +@@ -1107,6 +1157,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1594,7 +1594,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1118,6 +1169,7 @@ public class PurpurWorldConfig { +@@ -1123,6 +1174,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1602,7 +1602,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean huskRidable = false; -@@ -1128,6 +1180,7 @@ public class PurpurWorldConfig { +@@ -1133,6 +1185,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1610,7 +1610,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1142,6 +1195,7 @@ public class PurpurWorldConfig { +@@ -1147,6 +1200,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1618,7 +1618,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean illusionerRidable = false; -@@ -1150,6 +1204,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1209,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1626,7 +1626,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1166,6 +1221,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1226,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1634,7 +1634,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean ironGolemRidable = false; -@@ -1173,6 +1229,7 @@ public class PurpurWorldConfig { +@@ -1178,6 +1234,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1642,7 +1642,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1184,6 +1241,7 @@ public class PurpurWorldConfig { +@@ -1189,6 +1246,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1650,7 +1650,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean llamaRidable = false; -@@ -1196,6 +1254,7 @@ public class PurpurWorldConfig { +@@ -1201,6 +1259,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1658,7 +1658,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1214,6 +1273,7 @@ public class PurpurWorldConfig { +@@ -1219,6 +1278,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1666,7 +1666,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean magmaCubeRidable = false; -@@ -1223,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1228,6 +1288,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1674,7 +1674,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1236,6 +1297,7 @@ public class PurpurWorldConfig { +@@ -1241,6 +1302,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1682,7 +1682,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean mooshroomRidable = false; -@@ -1243,6 +1305,7 @@ public class PurpurWorldConfig { +@@ -1248,6 +1310,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1690,7 +1690,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1254,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1322,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1698,7 +1698,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean muleRidableInWater = false; -@@ -1264,6 +1328,7 @@ public class PurpurWorldConfig { +@@ -1269,6 +1333,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1706,7 +1706,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1280,6 +1345,7 @@ public class PurpurWorldConfig { +@@ -1285,6 +1350,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1714,7 +1714,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean ocelotRidable = false; -@@ -1287,6 +1353,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1358,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1722,7 +1722,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1298,6 +1365,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1370,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1730,7 +1730,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean pandaRidable = false; -@@ -1305,6 +1373,7 @@ public class PurpurWorldConfig { +@@ -1310,6 +1378,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1738,7 +1738,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1316,6 +1385,7 @@ public class PurpurWorldConfig { +@@ -1321,6 +1390,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1746,7 +1746,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean parrotRidable = false; -@@ -1323,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1328,6 +1398,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1754,7 +1754,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1334,6 +1405,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1410,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1762,7 +1762,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean phantomRidable = false; -@@ -1360,6 +1432,7 @@ public class PurpurWorldConfig { +@@ -1365,6 +1437,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1770,7 +1770,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1394,6 +1467,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1472,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1778,7 +1778,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean pigRidable = false; -@@ -1402,6 +1476,7 @@ public class PurpurWorldConfig { +@@ -1407,6 +1481,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1786,7 +1786,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1414,6 +1489,7 @@ public class PurpurWorldConfig { +@@ -1419,6 +1494,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1794,7 +1794,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean piglinRidable = false; -@@ -1421,6 +1497,7 @@ public class PurpurWorldConfig { +@@ -1426,6 +1502,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1802,7 +1802,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1432,12 +1509,14 @@ public class PurpurWorldConfig { +@@ -1437,12 +1514,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1817,7 +1817,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1448,6 +1527,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1532,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1825,7 +1825,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean pillagerRidable = false; -@@ -1455,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1460,6 +1540,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1833,7 +1833,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1466,6 +1547,7 @@ public class PurpurWorldConfig { +@@ -1471,6 +1552,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1841,7 +1841,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean polarBearRidable = false; -@@ -1475,6 +1557,7 @@ public class PurpurWorldConfig { +@@ -1480,6 +1562,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1849,7 +1849,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1489,11 +1572,13 @@ public class PurpurWorldConfig { +@@ -1494,11 +1577,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1863,7 +1863,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1503,6 +1588,7 @@ public class PurpurWorldConfig { +@@ -1508,6 +1593,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1871,7 +1871,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean rabbitRidable = false; -@@ -1513,6 +1599,7 @@ public class PurpurWorldConfig { +@@ -1518,6 +1604,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1879,7 +1879,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1527,6 +1614,7 @@ public class PurpurWorldConfig { +@@ -1532,6 +1619,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1887,7 +1887,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean ravagerRidable = false; -@@ -1534,6 +1622,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1627,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1895,7 +1895,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1545,11 +1634,13 @@ public class PurpurWorldConfig { +@@ -1550,11 +1639,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1909,7 +1909,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1559,6 +1650,7 @@ public class PurpurWorldConfig { +@@ -1564,6 +1655,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1917,7 +1917,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean sheepRidable = false; -@@ -1567,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1572,6 +1664,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1925,7 +1925,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1579,12 +1672,14 @@ public class PurpurWorldConfig { +@@ -1584,12 +1677,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1940,7 +1940,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1595,6 +1690,7 @@ public class PurpurWorldConfig { +@@ -1600,6 +1695,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1948,7 +1948,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean silverfishRidable = false; -@@ -1602,6 +1698,7 @@ public class PurpurWorldConfig { +@@ -1607,6 +1703,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1956,7 +1956,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1613,12 +1710,14 @@ public class PurpurWorldConfig { +@@ -1618,12 +1715,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1971,7 +1971,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1629,6 +1728,7 @@ public class PurpurWorldConfig { +@@ -1634,6 +1733,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1979,7 +1979,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean skeletonHorseRidableInWater = true; -@@ -1639,6 +1739,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1744,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1987,7 +1987,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1654,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1659,6 +1760,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean slimeRidable = false; -@@ -1663,6 +1765,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1770,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1676,6 +1779,7 @@ public class PurpurWorldConfig { +@@ -1681,6 +1784,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean snowGolemRidable = false; -@@ -1690,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1695,6 +1799,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1708,6 +1813,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1818,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean snifferRidable = false; -@@ -1729,6 +1835,7 @@ public class PurpurWorldConfig { +@@ -1734,6 +1840,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1741,12 +1848,14 @@ public class PurpurWorldConfig { +@@ -1746,12 +1853,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1757,12 +1866,14 @@ public class PurpurWorldConfig { +@@ -1762,12 +1871,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1773,6 +1884,7 @@ public class PurpurWorldConfig { +@@ -1778,6 +1889,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean striderRidable = false; -@@ -1781,6 +1893,7 @@ public class PurpurWorldConfig { +@@ -1786,6 +1898,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1793,6 +1906,7 @@ public class PurpurWorldConfig { +@@ -1798,6 +1911,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean tadpoleRidable = false; -@@ -1814,6 +1928,7 @@ public class PurpurWorldConfig { +@@ -1819,6 +1933,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1832,11 +1947,13 @@ public class PurpurWorldConfig { +@@ -1837,11 +1952,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1846,6 +1963,7 @@ public class PurpurWorldConfig { +@@ -1851,6 +1968,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean turtleRidable = false; -@@ -1853,6 +1971,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1976,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1864,6 +1983,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1988,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean vexRidable = false; -@@ -1871,6 +1991,7 @@ public class PurpurWorldConfig { +@@ -1876,6 +1996,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1882,6 +2003,7 @@ public class PurpurWorldConfig { +@@ -1887,6 +2008,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean villagerRidable = false; -@@ -1895,6 +2017,7 @@ public class PurpurWorldConfig { +@@ -1900,6 +2022,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1912,6 +2035,7 @@ public class PurpurWorldConfig { +@@ -1917,6 +2040,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean vindicatorRidable = false; -@@ -1919,6 +2043,7 @@ public class PurpurWorldConfig { +@@ -1924,6 +2048,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1930,6 +2055,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +2060,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean wanderingTraderRidable = false; -@@ -1938,6 +2064,7 @@ public class PurpurWorldConfig { +@@ -1943,6 +2069,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1950,6 +2077,7 @@ public class PurpurWorldConfig { +@@ -1955,6 +2082,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean wardenRidable = false; -@@ -1965,6 +2093,7 @@ public class PurpurWorldConfig { +@@ -1970,6 +2098,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1975,6 +2104,7 @@ public class PurpurWorldConfig { +@@ -1980,6 +2109,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean witherRidable = false; -@@ -1985,6 +2115,7 @@ public class PurpurWorldConfig { +@@ -1990,6 +2120,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2003,12 +2134,14 @@ public class PurpurWorldConfig { +@@ -2008,12 +2139,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2019,6 +2152,7 @@ public class PurpurWorldConfig { +@@ -2024,6 +2157,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean wolfRidable = false; -@@ -2029,6 +2163,7 @@ public class PurpurWorldConfig { +@@ -2034,6 +2168,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2047,12 +2182,14 @@ public class PurpurWorldConfig { +@@ -2052,12 +2187,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2063,6 +2200,7 @@ public class PurpurWorldConfig { +@@ -2068,6 +2205,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean zombieRidable = false; -@@ -2075,6 +2213,7 @@ public class PurpurWorldConfig { +@@ -2080,6 +2218,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,7 +2285,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2091,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2096,6 +2235,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2293,7 +2293,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean zombieHorseRidableInWater = false; -@@ -2102,6 +2242,7 @@ public class PurpurWorldConfig { +@@ -2107,6 +2247,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2301,7 +2301,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2118,6 +2259,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2264,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean zombieVillagerRidable = false; -@@ -2128,6 +2270,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2275,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2142,6 +2285,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2290,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 } public boolean zombifiedPiglinRidable = false; -@@ -2153,6 +2297,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2302,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 3b0ca461865113dfb8b033091ab9aeff2a2b9089..9ef200a75e65ce6813172e5426380df7 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2168,5 +2313,6 @@ public class PurpurWorldConfig { +@@ -2173,5 +2318,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 3a0ccc126..f532c5d90 100644 --- a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 94027ef3f833c7170a99a8437740b7f99f30ab81..1f9a57c4fd251e2969b49a883ee12d3c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c513307cb020ef6edefe3da16c00a5569b6d6624..260ff2fc3f3c0c22f41add4efa39bcebf8f256e1 100644 +index ac588fffe20588255a4131e12f9cd74747639ed3..620a96042a6ac67e551f096f6a454a9876915b86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -946,6 +946,7 @@ public class PurpurWorldConfig { +@@ -951,6 +951,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index c513307cb020ef6edefe3da16c00a5569b6d6624..260ff2fc3f3c0c22f41add4efa39bceb private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -964,6 +965,7 @@ public class PurpurWorldConfig { +@@ -969,6 +970,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index c513307cb020ef6edefe3da16c00a5569b6d6624..260ff2fc3f3c0c22f41add4efa39bceb } public boolean endermanRidable = false; -@@ -2155,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2160,6 +2162,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index c513307cb020ef6edefe3da16c00a5569b6d6624..260ff2fc3f3c0c22f41add4efa39bceb private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2174,6 +2177,7 @@ public class PurpurWorldConfig { +@@ -2179,6 +2182,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index 177cb8c20..4967d735d 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -37,18 +37,18 @@ index 85c9a892dd15e8bafc65146e1dcb33e508e9fc05..4ac0941974e6e8aeaea88ce0fc589381 AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ()); Iterable iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 70db296b80b98b378917f68037420ae150e14adb..3fc967279daaf6eb2b2d80fcad57b5b6a11cec43 100644 +index fdfb1f6bd59f5b9e193aac61b2ddc1b1e4f20d6c..0c3ae4eb17641d31b77a36db2210bef24632e2a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -183,6 +183,7 @@ public class PurpurConfig { +@@ -182,6 +182,7 @@ public class PurpurConfig { public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; public static String tpsbarCommandOutput = "Tpsbar toggled for "; + public static String dontRunWithScissors = "Don't run with scissors!"; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -194,6 +195,12 @@ public class PurpurConfig { + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); +@@ -192,6 +193,12 @@ public class PurpurConfig { demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); @@ -62,7 +62,7 @@ index 70db296b80b98b378917f68037420ae150e14adb..3fc967279daaf6eb2b2d80fcad57b5b6 public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0f08bd9028bdc1720a3bc47e82a1fd8103f2ffe..b2bbf47108df2d1cefa888674ae62d59dd1df6c1 100644 +index 620a96042a6ac67e551f096f6a454a9876915b86..85415a9dbe4fb1c9a0bad0b16fc3cab8ceb0dfa7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -199,6 +199,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch index ec6f0b74c..8bae8303d 100644 --- a/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 002ea677568e4d4a13509bb5c880341a742dac83..1e544c8fa21d028f7c3ac66d66c2362c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5829cd48c964ead93500a31b145ddf0370287ee4..387ffc7265eb312a938f9ea5a8bd34048da9985b 100644 +index ea13c885b9dd48590d32d2bd41aa0cba21b406a0..d8c011df48dea4aa70614c60ff544b21b790582e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -996,6 +996,8 @@ public class PurpurWorldConfig { +@@ -1001,6 +1001,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 5829cd48c964ead93500a31b145ddf0370287ee4..387ffc7265eb312a938f9ea5a8bd3404 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1005,11 +1007,17 @@ public class PurpurWorldConfig { +@@ -1010,11 +1012,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index dbc309a84..78e26fe11 100644 --- a/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index 1e544c8fa21d028f7c3ac66d66c2362c01326a54..6f7dc1f55d52a0957dc0f3b19644e3dc } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 387ffc7265eb312a938f9ea5a8bd34048da9985b..ef805260ea5ea8e4ada93be50abc43b8f6ab277c 100644 +index d8c011df48dea4aa70614c60ff544b21b790582e..06234cbb2a947fd6b98fad1ec4e457cac6e050c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -998,6 +998,8 @@ public class PurpurWorldConfig { +@@ -1003,6 +1003,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 387ffc7265eb312a938f9ea5a8bd34048da9985b..ef805260ea5ea8e4ada93be50abc43b8 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1018,6 +1020,8 @@ public class PurpurWorldConfig { +@@ -1023,6 +1025,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0140-Config-to-disable-Llama-caravans.patch b/patches/server/0140-Config-to-disable-Llama-caravans.patch index 707f0db23..160352009 100644 --- a/patches/server/0140-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0140-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 2c5f4ead1141269a029176140c4df848c75b9620..26ed1eef3b38e643dfc6738e4b7880c9 this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e87dfc7d4966e2f24c6aeeb638cbe4452e6b4445..256a3fc6f65a4a31dcad512615e9224116ee035f 100644 +index cf3ed3017aeda398475df8eda20d99d42cc0c852..59f09c8fb3b138a7b14f0c897788469076588b16 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1330,6 +1330,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1335,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index e87dfc7d4966e2f24c6aeeb638cbe4452e6b4445..256a3fc6f65a4a31dcad512615e92241 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1349,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1355,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch index c6629f6fa..ec360833e 100644 --- a/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch @@ -6,17 +6,17 @@ Subject: [PATCH] Config to make Creepers explode on death Creepers exploded after being killed in the alpha days. This brings that back. diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 6e80ea775596c5804b674234b7d59f4c941a49dc..56aaf99a94944de42f437e18806381e3978c305a 100644 +index 6e80ea775596c5804b674234b7d59f4c941a49dc..ed5b0ec4c9616691c383067f8d949e63cb7c4497 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -60,6 +60,7 @@ public class Creeper extends Monster implements PowerableMob { - public int explosionRadius = 3; - private int droppedSkulls; - // Purpur start -+ private boolean exploding = false; +@@ -63,6 +63,7 @@ public class Creeper extends Monster implements PowerableMob { private int spacebarCharge = 0; private int prevSpacebarCharge = 0; private int powerToggleDelay = 0; ++ private boolean exploding = false; + // Purpur end + + public Creeper(EntityType type, Level world) { @@ -268,6 +269,14 @@ public class Creeper extends Monster implements PowerableMob { return this.level().purpurConfig.creeperTakeDamageFromWater; } @@ -50,10 +50,10 @@ index 6e80ea775596c5804b674234b7d59f4c941a49dc..56aaf99a94944de42f437e18806381e3 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 40f19ca373028a84e46d4ad9bc2b836968d677d5..f6f374858a16135347da30d86ba051569062c7d4 100644 +index 59f09c8fb3b138a7b14f0c897788469076588b16..ac2f0bcbc80bc10ddf51a74e68436f9dd4693119 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -850,6 +850,7 @@ public class PurpurWorldConfig { +@@ -855,6 +855,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 40f19ca373028a84e46d4ad9bc2b836968d677d5..f6f374858a16135347da30d86ba05156 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -864,6 +865,7 @@ public class PurpurWorldConfig { +@@ -869,6 +870,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch index 81466fe5d..f708fd052 100644 --- a/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index cf7007cabe4ba7505f2728e79e4c56e2d1bc878b..c431ec19212821ba7722c073e5ee6ad7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd953c9814560855f5e2c1bafb3df7f08065354c..ffb2cbd940ec795c680e3254161dafb57fa35fef 100644 +index ac2f0bcbc80bc10ddf51a74e68436f9dd4693119..be9dcd118cc5a7f105589e5dc2f0fb5e2b80b2bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1702,6 +1702,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1707,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index dd953c9814560855f5e2c1bafb3df7f08065354c..ffb2cbd940ec795c680e3254161dafb5 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1714,6 +1715,23 @@ public class PurpurWorldConfig { +@@ -1719,6 +1720,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0145-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch index 9820d2647..9186aee86 100644 --- a/patches/server/0145-Add-config-for-villager-trading.patch +++ b/patches/server/0145-Add-config-for-villager-trading.patch @@ -31,10 +31,10 @@ index e2a9179bb7a5ecbc31d98a2410a09f5e2107234b..8fd8778e918566504666213a102a7ee2 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 564b9165f226a0973eb64a0f867b1a16e6861b12..7ab515dd4278aec16b3c7fc6cb5f820e12c3e710 100644 +index 2c83ed4bec42d5d463c152a03213517615e6d622..c1b28f0a964b83a3f887c78c7f0b75c3c79e8734 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2122,6 +2122,7 @@ public class PurpurWorldConfig { +@@ -2127,6 +2127,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 564b9165f226a0973eb64a0f867b1a16e6861b12..7ab515dd4278aec16b3c7fc6cb5f820e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2140,6 +2141,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2146,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 564b9165f226a0973eb64a0f867b1a16e6861b12..7ab515dd4278aec16b3c7fc6cb5f820e } public boolean vindicatorRidable = false; -@@ -2169,6 +2171,7 @@ public class PurpurWorldConfig { +@@ -2174,6 +2176,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 564b9165f226a0973eb64a0f867b1a16e6861b12..7ab515dd4278aec16b3c7fc6cb5f820e private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2182,6 +2185,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2190,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0146-Allow-infinity-on-crossbows.patch b/patches/server/0146-Allow-infinity-on-crossbows.patch index 62898eba1..6af5cdeaa 100644 --- a/patches/server/0146-Allow-infinity-on-crossbows.patch +++ b/patches/server/0146-Allow-infinity-on-crossbows.patch @@ -77,10 +77,10 @@ index 3d0ce0803e1da8a2681a3cb41096ac942ece54a1..bcd075a771c7f43c6d1549aeec2ccb20 return null; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3fc967279daaf6eb2b2d80fcad57b5b6a11cec43..a191d631e4c5401e1fafc0d9a4a4d5eed4f300af 100644 +index 0c3ae4eb17641d31b77a36db2210bef24632e2a2..b6db2919825ef04ec4aadd5129cac24d39de5d30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -284,6 +284,7 @@ public class PurpurConfig { +@@ -282,6 +282,7 @@ public class PurpurConfig { } public static boolean allowInfinityMending = false; @@ -88,7 +88,7 @@ index 3fc967279daaf6eb2b2d80fcad57b5b6a11cec43..a191d631e4c5401e1fafc0d9a4a4d5ee private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -291,6 +292,7 @@ public class PurpurConfig { +@@ -289,6 +290,7 @@ public class PurpurConfig { set("settings.enchantment.allow-infinite-and-mending-together", null); } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); diff --git a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch index 365c52cd7..cfb2e59e4 100644 --- a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch @@ -87,10 +87,10 @@ index 961aca57888de6fe7ea249c2a7596c9863c1effe..4f8fa99211257930adb2ae13505ba5d3 this.getOrCreateTag().put(key, element); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a191d631e4c5401e1fafc0d9a4a4d5eed4f300af..80f47a113b48670695a5ffe67dd6e0f800970e1e 100644 +index b6db2919825ef04ec4aadd5129cac24d39de5d30..79a0d4e5570fccc95c271263e0caebbc777a8b71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -285,14 +285,32 @@ public class PurpurConfig { +@@ -283,14 +283,32 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; diff --git a/patches/server/0156-Piglin-portal-spawn-modifier.patch b/patches/server/0156-Piglin-portal-spawn-modifier.patch index 98430340f..68d77eb4c 100644 --- a/patches/server/0156-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0156-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03035b639d70e82e777d01f0c0bfeb097febc18f..df6650f918309c8da89409a691aa088266a204a3 100644 +index 0c9f89ec15a6c4d6109b5f302732dbecdfdd200b..800c4ebc66397f6ddf523d122c106660e1b8495b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1646,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1651,6 +1651,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 03035b639d70e82e777d01f0c0bfeb097febc18f..df6650f918309c8da89409a691aa0882 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1658,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1663,6 +1664,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0157-Config-to-change-max-number-of-bees.patch b/patches/server/0157-Config-to-change-max-number-of-bees.patch index e9f135702..182e3d9f8 100644 --- a/patches/server/0157-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0157-Config-to-change-max-number-of-bees.patch @@ -18,10 +18,10 @@ index 41c9f074203915c31c1ae7a160ce509c13383f84..a16a1df28258d605cf5908dbe19bda5d public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 80f47a113b48670695a5ffe67dd6e0f800970e1e..606b5842888a0089103a36367664533fbfedd8f9 100644 +index 79a0d4e5570fccc95c271263e0caebbc777a8b71..941c9add3e689528fe8306d291748d576d6a97b1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -250,6 +250,7 @@ public class PurpurConfig { +@@ -248,6 +248,7 @@ public class PurpurConfig { public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; @@ -29,7 +29,7 @@ index 80f47a113b48670695a5ffe67dd6e0f800970e1e..606b5842888a0089103a36367664533f private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -281,6 +282,7 @@ public class PurpurConfig { +@@ -279,6 +280,7 @@ public class PurpurConfig { org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch index 5911233cc..f62c674ae 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0158-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..7847915fb90e45e44ba514957193fa7b if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df6650f918309c8da89409a691aa088266a204a3..23d463f2c2c37576a11bb79605943513bc86a9b6 100644 +index 800c4ebc66397f6ddf523d122c106660e1b8495b..9b13e03c2f4e627c48b673cde25e486f28bb7e57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2289,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2294,6 +2294,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index df6650f918309c8da89409a691aa088266a204a3..23d463f2c2c37576a11bb79605943513 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2309,6 +2310,7 @@ public class PurpurWorldConfig { +@@ -2314,6 +2315,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0159-Gamemode-extra-permissions.patch b/patches/server/0159-Gamemode-extra-permissions.patch index 7cd56e0cc..0401b06da 100644 --- a/patches/server/0159-Gamemode-extra-permissions.patch +++ b/patches/server/0159-Gamemode-extra-permissions.patch @@ -75,10 +75,10 @@ index ec771c480156db393c326fa2fbdc2d432fb76f53..71940bf3a4162d12a422a5b3100ad8de DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 606b5842888a0089103a36367664533fbfedd8f9..dd741a961e3cfdbe81aa087ef983d1fb4dc94cc2 100644 +index 941c9add3e689528fe8306d291748d576d6a97b1..e7467803f8087a5a785cb8afb42185173090c160 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -233,6 +233,7 @@ public class PurpurConfig { +@@ -231,6 +231,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -86,7 +86,7 @@ index 606b5842888a0089103a36367664533fbfedd8f9..dd741a961e3cfdbe81aa087ef983d1fb private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -244,6 +245,7 @@ public class PurpurConfig { +@@ -242,6 +243,7 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); diff --git a/patches/server/0162-Configurable-broadcast-settings.patch b/patches/server/0162-Configurable-broadcast-settings.patch index 77e689836..209f03d74 100644 --- a/patches/server/0162-Configurable-broadcast-settings.patch +++ b/patches/server/0162-Configurable-broadcast-settings.patch @@ -29,10 +29,10 @@ index 0c22824240c260c86237a47680c1c2492a2201e2..2f7edbf425ebf2985fdcd3f347cdf211 if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index dd741a961e3cfdbe81aa087ef983d1fb4dc94cc2..0139da5fcac438530f023a32a75ef454879fe6c1 100644 +index e7467803f8087a5a785cb8afb42185173090c160..bc263c360f1e02f53d8203ed1564fbc120a645ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -203,6 +203,18 @@ public class PurpurConfig { +@@ -201,6 +201,18 @@ public class PurpurConfig { deathMsgRunWithScissors = getString("settings.messages.death-message.run-with-scissors", deathMsgRunWithScissors); } diff --git a/patches/server/0164-Hide-hidden-players-from-entity-selector.patch b/patches/server/0164-Hide-hidden-players-from-entity-selector.patch index e234ce8c8..adc1a1a1f 100644 --- a/patches/server/0164-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0164-Hide-hidden-players-from-entity-selector.patch @@ -59,10 +59,10 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0139da5fcac438530f023a32a75ef454879fe6c1..f3ddb65684a2cf7776c6e0137cb7acc7f36eb493 100644 +index bc263c360f1e02f53d8203ed1564fbc120a645ca..8814527cdaac91994de01a8cf08d1fa3a048c175 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -246,6 +246,7 @@ public class PurpurConfig { +@@ -244,6 +244,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; public static boolean commandGamemodeRequiresPermission = false; @@ -70,7 +70,7 @@ index 0139da5fcac438530f023a32a75ef454879fe6c1..f3ddb65684a2cf7776c6e0137cb7acc7 private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -258,6 +259,7 @@ public class PurpurConfig { +@@ -256,6 +257,7 @@ public class PurpurConfig { commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); diff --git a/patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch index 71c820358..458f4cab5 100644 --- a/patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 56aaf99a94944de42f437e18806381e3978c305a..e2fba88438835f63605b81eeeff5345b4bcc071a 100644 +index ed5b0ec4c9616691c383067f8d949e63cb7c4497..45a9496d9d6109b5ad844113dfd431770144b22f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob { @@ -21,10 +21,10 @@ index 56aaf99a94944de42f437e18806381e3978c305a..e2fba88438835f63605b81eeeff5345b if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5fcbfa39b9a22e9ceae21bab71c7686ca7722c1d..55b1a959eafccbdfcb812ab28dfb5e38d173e660 100644 +index 892cde0d154ddd52fd573f86171a484c0c2a8791..6b4f6866d075d52ca9a8fe024b070a6183591cdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -942,6 +942,7 @@ public class PurpurWorldConfig { +@@ -947,6 +947,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 5fcbfa39b9a22e9ceae21bab71c7686ca7722c1d..55b1a959eafccbdfcb812ab28dfb5e38 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -957,6 +958,7 @@ public class PurpurWorldConfig { +@@ -962,6 +963,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0166-Iron-golem-calm-anger-options.patch b/patches/server/0166-Iron-golem-calm-anger-options.patch index 2e7469d0e..4a268cebf 100644 --- a/patches/server/0166-Iron-golem-calm-anger-options.patch +++ b/patches/server/0166-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a93 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55b1a959eafccbdfcb812ab28dfb5e38d173e660..8116edb1eab9da68d86c33633f4558a474b25388 100644 +index 6b4f6866d075d52ca9a8fe024b070a6183591cdd..e93a619dcd06a2cb65c0d6c4bb4ef36a8d9dbeed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1400,6 +1400,8 @@ public class PurpurWorldConfig { +@@ -1405,6 +1405,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 55b1a959eafccbdfcb812ab28dfb5e38d173e660..8116edb1eab9da68d86c33633f4558a4 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1412,6 +1414,8 @@ public class PurpurWorldConfig { +@@ -1417,6 +1419,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0167-Breedable-parrots.patch b/patches/server/0167-Breedable-parrots.patch index 29f41b790..32536f8cc 100644 --- a/patches/server/0167-Breedable-parrots.patch +++ b/patches/server/0167-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 08935a1f2c4a3f43483719686e5baab5063cdfce..bfae3b94ab035e1c27c988cfcc3b449c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 24d2790b9d4d83b2bcd102d16b138d83f7f982ed..609ddb73472ba1825a5896cdfa44cf18df98e234 100644 +index e93a619dcd06a2cb65c0d6c4bb4ef36a8d9dbeed..f00418ed387fc9ccfbfd4dea545529d742ea2d53 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1570,6 +1570,7 @@ public class PurpurWorldConfig { +@@ -1575,6 +1575,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 24d2790b9d4d83b2bcd102d16b138d83f7f982ed..609ddb73472ba1825a5896cdfa44cf18 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1582,6 +1583,7 @@ public class PurpurWorldConfig { +@@ -1587,6 +1588,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0171-Config-for-unverified-username-message.patch b/patches/server/0171-Config-for-unverified-username-message.patch index 7f90de311..083eaa614 100644 --- a/patches/server/0171-Config-for-unverified-username-message.patch +++ b/patches/server/0171-Config-for-unverified-username-message.patch @@ -18,18 +18,18 @@ index 2ff578e4a953ffcf5176815ba8e3f06f73499989..af3ef12851cbfca13ad3316214bd53f2 } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f3ddb65684a2cf7776c6e0137cb7acc7f36eb493..3e3a1e859e78d295388706d175dded5dbc41336e 100644 +index 8814527cdaac91994de01a8cf08d1fa3a048c175..53363ab94b516a62e4959a5f07ab93884af2bf92 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -184,6 +184,7 @@ public class PurpurConfig { +@@ -183,6 +183,7 @@ public class PurpurConfig { public static String pingCommandOutput = "%s's ping is %sms"; public static String tpsbarCommandOutput = "Tpsbar toggled for "; public static String dontRunWithScissors = "Don't run with scissors!"; + public static String unverifiedUsername = "default"; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -196,6 +197,7 @@ public class PurpurConfig { + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); +@@ -194,6 +195,7 @@ public class PurpurConfig { pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); diff --git a/patches/server/0172-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0172-Make-anvil-cumulative-cost-configurable.patch index ce75059d2..15854263f 100644 --- a/patches/server/0172-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0172-Make-anvil-cumulative-cost-configurable.patch @@ -18,10 +18,10 @@ index c179fd1ee55116e1bbdd8f8fadd18825c6ba2cde..d5ac94043f833355dbd84252c490c06a public boolean setItemName(String newItemName) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3e3a1e859e78d295388706d175dded5dbc41336e..14f2b23248f23804a85b522e9e46ffa170162335 100644 +index 53363ab94b516a62e4959a5f07ab93884af2bf92..dc781bc68f024951c078b84fd37c2f106eb13a2e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -269,6 +269,7 @@ public class PurpurConfig { +@@ -267,6 +267,7 @@ public class PurpurConfig { public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; @@ -29,7 +29,7 @@ index 3e3a1e859e78d295388706d175dded5dbc41336e..14f2b23248f23804a85b522e9e46ffa1 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -301,6 +302,7 @@ public class PurpurConfig { +@@ -299,6 +300,7 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); diff --git a/patches/server/0174-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0174-Bee-can-work-when-raining-or-at-night.patch index 8b58810d8..0a3f739cd 100644 --- a/patches/server/0174-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0174-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6c4d1cbccc7213d322426588f815064eebc5512..d7486913a8077c591a0f3969c517dd0a73b5b0b2 100644 +index e508637fabd5b8688230f6e6aed82480f5c513e9..0ca2f8e83c449ccaa6d5758a14802f60435e5cee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -785,6 +785,8 @@ public class PurpurWorldConfig { +@@ -790,6 +790,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index f6c4d1cbccc7213d322426588f815064eebc5512..d7486913a8077c591a0f3969c517dd0a private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -798,6 +800,8 @@ public class PurpurWorldConfig { +@@ -803,6 +805,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0180-Make-lightning-rod-range-configurable.patch b/patches/server/0180-Make-lightning-rod-range-configurable.patch index e7f12d4b0..4558d41f7 100644 --- a/patches/server/0180-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0180-Make-lightning-rod-range-configurable.patch @@ -18,10 +18,10 @@ index a7faa7e1cc78e900ec09889e2a683a3eacce675a..f40eda7740b680d4a1bba7e8d177a8e0 return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 14f2b23248f23804a85b522e9e46ffa170162335..90354c009041e38143464f082ee8b6b54a5ec8cb 100644 +index dc781bc68f024951c078b84fd37c2f106eb13a2e..078942f541713fc106008f3b39fed3a61acf866c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -270,6 +270,7 @@ public class PurpurConfig { +@@ -268,6 +268,7 @@ public class PurpurConfig { public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; @@ -29,7 +29,7 @@ index 14f2b23248f23804a85b522e9e46ffa170162335..90354c009041e38143464f082ee8b6b5 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -303,6 +304,7 @@ public class PurpurConfig { +@@ -301,6 +302,7 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); diff --git a/patches/server/0184-Shulker-spawn-from-bullet-options.patch b/patches/server/0184-Shulker-spawn-from-bullet-options.patch index db2c9704e..0baf12117 100644 --- a/patches/server/0184-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0184-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c31fa844ce12f5f9fcc5a85f3ce027e7d315103..4da1ac24dd26cdaa0271181314adbb3cef1402d3 100644 +index c27b6e0a1456b68a3684207f7469c8a916a4a550..68bc10a805e7cda64b777028093a1f1e084f1245 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1940,6 +1940,11 @@ public class PurpurWorldConfig { +@@ -1945,6 +1945,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 6c31fa844ce12f5f9fcc5a85f3ce027e7d315103..4da1ac24dd26cdaa0271181314adbb3c private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1951,6 +1956,11 @@ public class PurpurWorldConfig { +@@ -1956,6 +1961,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/0186-Option-to-make-drowned-break-doors.patch b/patches/server/0186-Option-to-make-drowned-break-doors.patch index 3f7681cfb..3e617e52b 100644 --- a/patches/server/0186-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0186-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 902f831ea001145f73691b96f2fca8245a4fc05a..9346d634dd2b8cb3d89aa7ccf12fec6f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51f23d32fdaafe2edf83c1620023276fb96cc9d3..cad1bcf613b9b1e8feb7ca33b10dc46cf4ea015d 100644 +index 2e9b39fd38881abc55be2de8403931a001ef6d1b..d6f61b469d04b26af6ab5620389764b5e356cebb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1086,6 +1086,7 @@ public class PurpurWorldConfig { +@@ -1091,6 +1091,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 51f23d32fdaafe2edf83c1620023276fb96cc9d3..cad1bcf613b9b1e8feb7ca33b10dc46c private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1101,6 +1102,7 @@ public class PurpurWorldConfig { +@@ -1106,6 +1107,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/0187-Configurable-hunger-starvation-damage.patch b/patches/server/0187-Configurable-hunger-starvation-damage.patch index e43a50ae3..d8456d693 100644 --- a/patches/server/0187-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0187-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be9 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db8cffb5be04816d48983d1138c0628543166c32..a5048df62f2144f19784d154719b627b1f5db27b 100644 +index d6f61b469d04b26af6ab5620389764b5e356cebb..5aea41d8c95b9c6980525a732e971fa8f762be87 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2597,4 +2597,9 @@ public class PurpurWorldConfig { +@@ -2602,4 +2602,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/0189-Add-uptime-command.patch b/patches/server/0189-Add-uptime-command.patch index 7b76a0de1..f6f53fa77 100644 --- a/patches/server/0189-Add-uptime-command.patch +++ b/patches/server/0189-Add-uptime-command.patch @@ -29,18 +29,18 @@ index 7b67bc1e7891a27125db560ad18a133096bb2468..f5e9a56f6f478e241a9ffcf703e4a54e public int autosavePeriod; public Commands vanillaCommandDispatcher; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 90354c009041e38143464f082ee8b6b54a5ec8cb..669174925e7dcca0e5a8b5c5d5feb241b58e8719 100644 +index 078942f541713fc106008f3b39fed3a61acf866c..ef87e69c95c892ed0a06341138d0ec644b9660f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -184,6 +184,7 @@ public class PurpurConfig { +@@ -183,6 +183,7 @@ public class PurpurConfig { public static String pingCommandOutput = "%s's ping is %sms"; public static String tpsbarCommandOutput = "Tpsbar toggled for "; public static String dontRunWithScissors = "Don't run with scissors!"; + public static String uptimeCommandOutput = "Server uptime is "; public static String unverifiedUsername = "default"; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); -@@ -197,6 +198,7 @@ public class PurpurConfig { + afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); +@@ -195,6 +196,7 @@ public class PurpurConfig { pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); @@ -48,7 +48,7 @@ index 90354c009041e38143464f082ee8b6b54a5ec8cb..669174925e7dcca0e5a8b5c5d5feb241 unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername); } -@@ -249,6 +251,15 @@ public class PurpurConfig { +@@ -247,6 +249,15 @@ public class PurpurConfig { public static int commandTPSBarTickInterval = 20; public static boolean commandGamemodeRequiresPermission = false; public static boolean hideHiddenPlayersFromEntitySelector = false; @@ -64,7 +64,7 @@ index 90354c009041e38143464f082ee8b6b54a5ec8cb..669174925e7dcca0e5a8b5c5d5feb241 private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -262,6 +273,15 @@ public class PurpurConfig { +@@ -260,6 +271,15 @@ public class PurpurConfig { commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); diff --git a/patches/server/0193-Customizable-sleeping-actionbar-messages.patch b/patches/server/0193-Customizable-sleeping-actionbar-messages.patch index 296917ff8..6903f9086 100644 --- a/patches/server/0193-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0193-Customizable-sleeping-actionbar-messages.patch @@ -38,19 +38,19 @@ index f40eda7740b680d4a1bba7e8d177a8e0333caec7..4e26cdfa7b2134c699795bc0c36b7393 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 669174925e7dcca0e5a8b5c5d5feb241b58e8719..714acff3f53ef463d1de1d5f301b9a2f89711acc 100644 +index ef87e69c95c892ed0a06341138d0ec644b9660f7..1cc985eac1b57fdcdb8f51788d4278c355bcda64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -186,6 +186,8 @@ public class PurpurConfig { +@@ -185,6 +185,8 @@ public class PurpurConfig { public static String dontRunWithScissors = "Don't run with scissors!"; public static String uptimeCommandOutput = "Server uptime is "; public static String unverifiedUsername = "default"; + public static String sleepSkippingNight = "default"; + public static String sleepingPlayersPercent = "default"; private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -200,6 +202,8 @@ public class PurpurConfig { + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); +@@ -198,6 +200,8 @@ public class PurpurConfig { dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); uptimeCommandOutput = getString("settings.messages.uptime-command-output", uptimeCommandOutput); unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername); diff --git a/patches/server/0195-Silk-touchable-budding-amethyst.patch b/patches/server/0195-Silk-touchable-budding-amethyst.patch index c57cc28ec..ff06af01a 100644 --- a/patches/server/0195-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0195-Silk-touchable-budding-amethyst.patch @@ -24,7 +24,7 @@ index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..51faa4cfda3d36f2e3bc7cbc47cacf57 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e2be69415db5cc82f9c88c5f39dc1fe2a6aa0067..f08f7a2acafa9196eaa1cab17edb1003da419d53 100644 +index ce26e3f6373f8419769b019e3ac56cfd8294bfb4..9b032cbaaed2aae94e84d2d9e06b3455164b26b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -730,6 +730,11 @@ public class PurpurWorldConfig { @@ -39,7 +39,7 @@ index e2be69415db5cc82f9c88c5f39dc1fe2a6aa0067..f08f7a2acafa9196eaa1cab17edb1003 public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2766,3 +2771,4 @@ public class PurpurWorldConfig { +@@ -2771,3 +2776,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0198-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0198-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index ca7a7d969..7371fd028 100644 --- a/patches/server/0198-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0198-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index 6f7dc1f55d52a0957dc0f3b19644e3dce33ccb0f..f9bc9e2d57111b6260b5303fa2dbc405 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 9bc8738612bafcf526ebbe311a3301798f662559..437235f4a1b2054e85e465fda5c71c5d2baf3c2b 100644 +index b3766564233d294599caaa543593f0f22d246a50..18cc6560ced4147ad845d871be312688b5d53cdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1349,6 +1349,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1354,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 9bc8738612bafcf526ebbe311a3301798f662559..437235f4a1b2054e85e465fda5c71c5d private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1371,6 +1372,7 @@ public class PurpurWorldConfig { +@@ -1376,6 +1377,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/0199-Add-compass-command.patch b/patches/server/0199-Add-compass-command.patch index 19ca0abf4..3f11c45ab 100644 --- a/patches/server/0199-Add-compass-command.patch +++ b/patches/server/0199-Add-compass-command.patch @@ -59,10 +59,10 @@ index 2f7edbf425ebf2985fdcd3f347cdf211b64d15ec..68d9ba56c15ce68edd773d2309eca428 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e533ad62901 100644 +index 1cc985eac1b57fdcdb8f51788d4278c355bcda64..eeec29480c853e67f7b01b76fd33485f2d390a14 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -253,6 +253,11 @@ public class PurpurConfig { +@@ -251,6 +251,11 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -74,7 +74,7 @@ index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e53 public static boolean commandGamemodeRequiresPermission = false; public static boolean hideHiddenPlayersFromEntitySelector = false; public static String uptimeFormat = ""; -@@ -275,6 +280,13 @@ public class PurpurConfig { +@@ -273,6 +278,13 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); @@ -89,7 +89,7 @@ index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e53 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a915227d554449221123d5dfa6dde029d6abb687..3d7399d0cc16f3c3d799de473e013d4c24ee32ef 100644 +index 18cc6560ced4147ad845d871be312688b5d53cdd..38ca8ef2266fad79e5c70661404a4f1ec9ef60e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -224,6 +224,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0202-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0202-Customizeable-Zombie-Villager-curing-times.patch index 9c86cdbfb..1d370c4c0 100644 --- a/patches/server/0202-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0202-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index c3f220a85b91a25662c943b5ee4508cd7a18c75d..40b3498c57c62f8bdaac50546ca47f49 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2045b5a7d1627d70771428b56c3275849d236bdb..3a9691cdd5e1d80ac551743f3fcab02d39949a88 100644 +index 8a781f2fc40bd99d51e713d1d18de8b86a5c88e6..9f3e8ab0504012426fadf95175fa58133fea179f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2750,6 +2750,8 @@ public class PurpurWorldConfig { +@@ -2755,6 +2755,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 2045b5a7d1627d70771428b56c3275849d236bdb..3a9691cdd5e1d80ac551743f3fcab02d private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2765,6 +2767,8 @@ public class PurpurWorldConfig { +@@ -2770,6 +2772,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/0204-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0204-Toggle-for-Wither-s-spawn-sound.patch index 0a4817bfe..0a3b3e4ed 100644 --- a/patches/server/0204-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0204-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 24fc4934f2193806fa38c8c3b0ad4cbfc53650a6..bd38dad0a38a60a0421ee62e52ef7009 // this.level().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 d311fb97d7aeba0692827aadce4661c444ccc517..a513d117d98e68758654f1765d956652cdcd702e 100644 +index 480e30570b31a1c9eeea6dde352080791eea9751..8342a2fc2f19f9020c0be7a6178267fd39f42ee2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2595,6 +2595,7 @@ public class PurpurWorldConfig { +@@ -2600,6 +2600,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index d311fb97d7aeba0692827aadce4661c444ccc517..a513d117d98e68758654f1765d956652 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2616,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2621,6 +2622,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/0207-Conduit-behavior-configuration.patch b/patches/server/0207-Conduit-behavior-configuration.patch index bc845cb1b..f38cb53c1 100644 --- a/patches/server/0207-Conduit-behavior-configuration.patch +++ b/patches/server/0207-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 37b4c1ca0337b4e512e90ceeae9f741527f43b49..db47831cb239219d869f95275b5572f680631650 100644 +index 60bd1cd6016763d65ee13c232ff596b07ac46f63..ab7ccccf2b5d6fdb87cc08f822d9099528354f8c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2814,5 +2814,28 @@ public class PurpurWorldConfig { +@@ -2819,5 +2819,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0208-Cauldron-fill-chances.patch b/patches/server/0208-Cauldron-fill-chances.patch index bc230ab87..da3fdeffd 100644 --- a/patches/server/0208-Cauldron-fill-chances.patch +++ b/patches/server/0208-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index e978132e51cde52f7ff1ba31ad521fc2cb4f0dce..60a95c42a333d68d9fd14539e0051c08 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db47831cb239219d869f95275b5572f680631650..98482f44838d0a6fab1fbd40a8748893ab996c1c 100644 +index ab7ccccf2b5d6fdb87cc08f822d9099528354f8c..ff21ad8815cf4fa2b34a5b6a1a564ef97930ace7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2837,5 +2837,16 @@ public class PurpurWorldConfig { +@@ -2842,5 +2842,16 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0210-Shulker-change-color-with-dye.patch b/patches/server/0210-Shulker-change-color-with-dye.patch index dcc8a1226..6e3d397e0 100644 --- a/patches/server/0210-Shulker-change-color-with-dye.patch +++ b/patches/server/0210-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index 48fcfef45ab149328573f4e80c8f0289f9eebbe8..fbafb9e2ea9dfd237560d34f9cd6f295 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b29bb2eaa56f8c5abba784ff84b7e7ab965a2095..ec78d180407418ae0e55d80ddbaea2044a99d03b 100644 +index 0420ced926622a4c385a94c7d40e7348ca455192..b7cb860fde71c5be95b1c758ddbb0bd32350baa0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2157,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2162,6 +2162,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 b29bb2eaa56f8c5abba784ff84b7e7ab965a2095..ec78d180407418ae0e55d80ddbaea204 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2173,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2178,6 +2179,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/0216-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0216-Dolphins-naturally-aggressive-to-players-chance.patch index cdf0fc61c..c1986a267 100644 --- a/patches/server/0216-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0216-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 6006b9c996a8070336c4471f2a915d70c6371c76..3755ffc395ec4644a2263c59cdacfdba 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 80a2988193865830e789d0fe5a981d0b55a4f175..a4196f2f0e3458e13ee527943c1ca78d5015af3b 100644 +index a8544e65700025cd326fe62edbaf7558432165ec..997a5ed8246b4238a2b2a8f60eaac9f56ceb0178 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1255,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1260,6 +1260,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 80a2988193865830e789d0fe5a981d0b55a4f175..a4196f2f0e3458e13ee527943c1ca78d private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1269,6 +1270,7 @@ public class PurpurWorldConfig { +@@ -1274,6 +1275,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/0217-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0217-Cows-naturally-aggressive-to-players-chance.patch index 8bbeed105..72484af8c 100644 --- a/patches/server/0217-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0217-Cows-naturally-aggressive-to-players-chance.patch @@ -57,10 +57,10 @@ index c6e5278641fb4a246a8df988fdf5068a044e2c4e..30e87b71ad237d76ec5adb4976edeca9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4196f2f0e3458e13ee527943c1ca78d5015af3b..dd69498eef7d80fba94792ec56926df3bbca1f9d 100644 +index 997a5ed8246b4238a2b2a8f60eaac9f56ceb0178..7627dd8a681ab55e31ada4e3aae2e834f6c46b14 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1204,7 +1204,14 @@ public class PurpurWorldConfig { +@@ -1209,7 +1209,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -75,7 +75,7 @@ index a4196f2f0e3458e13ee527943c1ca78d5015af3b..dd69498eef7d80fba94792ec56926df3 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1217,6 +1224,8 @@ public class PurpurWorldConfig { +@@ -1222,6 +1229,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/0219-Halloween-options-and-optimizations.patch b/patches/server/0219-Halloween-options-and-optimizations.patch index 0571311c3..f4817aa25 100644 --- a/patches/server/0219-Halloween-options-and-optimizations.patch +++ b/patches/server/0219-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 0bc90b6d5c5a3cb3477d41336a9bb1130ff32fa1..a8d2f8654ee370e98bb1c4e7e1111deb 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 aeedc052ac2438650dda2130ed3baa7bf41bd122..468c3ef2b414816bd3364b84599d824c965b3407 100644 +index 792ea367b1b8985a137b0fdbac748b24d0f7bc26..fc48db0138c0dc772033b4a7adcda76eb0c2f681 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1597,6 +1597,13 @@ public class PurpurWorldConfig { +@@ -1602,6 +1602,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0220-Config-for-grindstones.patch b/patches/server/0220-Config-for-grindstones.patch index 4aee2d702..5b579733b 100644 --- a/patches/server/0220-Config-for-grindstones.patch +++ b/patches/server/0220-Config-for-grindstones.patch @@ -57,10 +57,10 @@ index b56766ff0e61691294b40ea8c2370940c0e8b640..6860e3467bf785e9d017fc98fce1e3cf } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 351fc72f0d1450114285b0577e8d5e533ad62901..ec519c0e6388eac27f9eb6fcd85713763206d71e 100644 +index eeec29480c853e67f7b01b76fd33485f2d390a14..7d9422b06ba79dbc268d451d3753150366e0877e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -307,6 +307,9 @@ public class PurpurConfig { +@@ -305,6 +305,9 @@ public class PurpurConfig { public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; public static int lightningRodRange = 128; @@ -70,7 +70,7 @@ index 351fc72f0d1450114285b0577e8d5e533ad62901..ec519c0e6388eac27f9eb6fcd8571376 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -341,6 +344,19 @@ public class PurpurConfig { +@@ -339,6 +342,19 @@ public class PurpurConfig { beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange); diff --git a/patches/server/0221-UPnP-Port-Forwarding.patch b/patches/server/0221-UPnP-Port-Forwarding.patch index 4b3925e94..2df3055d6 100644 --- a/patches/server/0221-UPnP-Port-Forwarding.patch +++ b/patches/server/0221-UPnP-Port-Forwarding.patch @@ -67,10 +67,10 @@ index c2b243240efacac250cb8440d215884756b66283..cd663643c38e787b06e7bc9cf74d9f78 // CraftBukkit start // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ec519c0e6388eac27f9eb6fcd85713763206d71e..1c277fca191df2ed3cc397ec247a7d785d97a894 100644 +index 7d9422b06ba79dbc268d451d3753150366e0877e..fca49d64c0067cef3f29d0924b4cf4672c5fbec5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -424,4 +424,9 @@ public class PurpurConfig { +@@ -422,4 +422,9 @@ public class PurpurConfig { private static void tpsCatchup() { tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup); } diff --git a/patches/server/0224-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0224-Add-option-to-disable-zombie-villagers-cure.patch index c1f527b1c..9ecf657dc 100644 --- a/patches/server/0224-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0224-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 40b3498c57c62f8bdaac50546ca47f4927db7bfa..b8e0ae0714fd2b77831fb714b1bad901 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6f1e3e75963c98bc632eca8a3a2a6a01ca73b032..70fc3bb9fcfb27b1cb7e8df2597fecbf9d1116ae 100644 +index e8a2971f43ed2dd0e88290e55cbcf08a96d92424..fa509358979179bcffe6634b53d171887aeb165d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2814,6 +2814,7 @@ public class PurpurWorldConfig { +@@ -2819,6 +2819,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 6f1e3e75963c98bc632eca8a3a2a6a01ca73b032..70fc3bb9fcfb27b1cb7e8df2597fecbf private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2831,6 +2832,7 @@ public class PurpurWorldConfig { +@@ -2836,6 +2837,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/0227-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0227-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index f93f154f1..992dd6320 100644 --- a/patches/server/0227-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0227-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -135,10 +135,10 @@ index e5c135ec059746b75fe58516809584221285cdbe..713c7e6e31a3e1097b612c77a4fce147 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1c277fca191df2ed3cc397ec247a7d785d97a894..7467d3738b1159323606f08e7086dba653063211 100644 +index fca49d64c0067cef3f29d0924b4cf4672c5fbec5..e52ef79d8488edeca10920976f2ef2cdd9a9f93b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -310,6 +310,10 @@ public class PurpurConfig { +@@ -308,6 +308,10 @@ public class PurpurConfig { public static Set grindstoneIgnoredEnchants = new HashSet<>(); public static boolean grindstoneRemoveAttributes = false; public static boolean grindstoneRemoveDisplay = false; @@ -149,7 +149,7 @@ index 1c277fca191df2ed3cc397ec247a7d785d97a894..7467d3738b1159323606f08e7086dba6 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -357,6 +361,30 @@ public class PurpurConfig { +@@ -355,6 +359,30 @@ public class PurpurConfig { }); grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes); grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay); diff --git a/patches/server/0228-Mobs-always-drop-experience.patch b/patches/server/0228-Mobs-always-drop-experience.patch index 19ab35a56..c2bd6a678 100644 --- a/patches/server/0228-Mobs-always-drop-experience.patch +++ b/patches/server/0228-Mobs-always-drop-experience.patch @@ -597,7 +597,7 @@ index aed77678edfeeeb646804a1c3b32c4ae8672074d..bf218586a79ea5f4288a64ccf6c245ee public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index e2fba88438835f63605b81eeeff5345b4bcc071a..1318ebcd4197597dca7d4bac96fd97dca107af01 100644 +index 45a9496d9d6109b5ad844113dfd431770144b22f..05576ef4d7476f1c04d47e76bec277abea3f6afb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -277,6 +277,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -885,7 +885,7 @@ index 1c7cd82540aa9566b04142c741d26b4f346073d4..9b43150a00d7fac85aa69f5a2dbffd0d protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 525f1bd0c5a4f19d4c7df9dd8dba35a15ecbb0b6..7cff1340ec8e2456c4d89635a8a88eb6a442cb1f 100644 +index 0f073a22fdb1cfa4504872eed2b7aeef46582ad3..467337542551dedc05d922bb3a37b811aeef4d7b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -83,6 +83,11 @@ public class Slime extends Mob implements Enemy { @@ -1157,10 +1157,10 @@ index 8fd8778e918566504666213a102a7ee2d1ed8b14..7fa248b2d1b73e20085f0d3cdfead385 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b327783885 100644 +index 53fee2ab318e8d582ecd782f0bf2167a724d1072..d4ed103e27265d529b322dfce27f7cc3e98d8c61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1024,12 +1024,14 @@ public class PurpurWorldConfig { +@@ -1029,12 +1029,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean batRidable = false; -@@ -1045,6 +1047,7 @@ public class PurpurWorldConfig { +@@ -1050,6 +1052,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1064,6 +1067,7 @@ public class PurpurWorldConfig { +@@ -1069,6 +1072,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean beeRidable = false; -@@ -1075,6 +1079,7 @@ public class PurpurWorldConfig { +@@ -1080,6 +1084,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1090,6 +1095,7 @@ public class PurpurWorldConfig { +@@ -1095,6 +1100,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean blazeRidable = false; -@@ -1098,6 +1104,7 @@ public class PurpurWorldConfig { +@@ -1103,6 +1109,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1110,6 +1117,7 @@ public class PurpurWorldConfig { +@@ -1115,6 +1122,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public int camelBreedingTicks = 6000; -@@ -1139,6 +1147,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1152,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1159,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1164,6 +1173,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean caveSpiderRidable = false; -@@ -1166,6 +1176,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1181,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1177,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1182,6 +1193,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean chickenRidable = false; -@@ -1186,6 +1198,7 @@ public class PurpurWorldConfig { +@@ -1191,6 +1203,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1199,12 +1212,14 @@ public class PurpurWorldConfig { +@@ -1204,12 +1217,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1215,6 +1230,7 @@ public class PurpurWorldConfig { +@@ -1220,6 +1235,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean cowRidable = false; -@@ -1226,6 +1242,7 @@ public class PurpurWorldConfig { +@@ -1231,6 +1247,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1246,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1251,6 +1268,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean creeperRidable = false; -@@ -1258,6 +1276,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1281,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1274,6 +1293,7 @@ public class PurpurWorldConfig { +@@ -1279,6 +1298,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean dolphinRidable = false; -@@ -1285,6 +1305,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1310,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1300,6 +1321,7 @@ public class PurpurWorldConfig { +@@ -1305,6 +1326,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean donkeyRidableInWater = false; -@@ -1311,6 +1333,7 @@ public class PurpurWorldConfig { +@@ -1316,6 +1338,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1328,6 +1351,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1356,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean drownedRidable = false; -@@ -1340,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1369,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1356,12 +1381,14 @@ public class PurpurWorldConfig { +@@ -1361,12 +1386,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1372,6 +1399,7 @@ public class PurpurWorldConfig { +@@ -1377,6 +1404,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean enderDragonRidable = false; -@@ -1417,6 +1445,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1450,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1440,6 +1469,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1474,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean endermiteRidable = false; -@@ -1447,6 +1477,7 @@ public class PurpurWorldConfig { +@@ -1452,6 +1482,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1458,6 +1489,7 @@ public class PurpurWorldConfig { +@@ -1463,6 +1494,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean evokerRidable = false; -@@ -1466,6 +1498,7 @@ public class PurpurWorldConfig { +@@ -1471,6 +1503,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1478,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1483,6 +1516,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean foxRidable = false; -@@ -1488,6 +1522,7 @@ public class PurpurWorldConfig { +@@ -1493,6 +1527,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1502,6 +1537,7 @@ public class PurpurWorldConfig { +@@ -1507,6 +1542,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean frogRidable = false; -@@ -1523,6 +1559,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1564,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1535,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1540,6 +1577,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean giantRidable = false; -@@ -1548,6 +1586,7 @@ public class PurpurWorldConfig { +@@ -1553,6 +1591,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1569,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1574,6 +1613,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean glowSquidRidable = false; -@@ -1576,12 +1616,14 @@ public class PurpurWorldConfig { +@@ -1581,12 +1621,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean goatRidable = false; -@@ -1590,6 +1632,7 @@ public class PurpurWorldConfig { +@@ -1595,6 +1637,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1597,12 +1640,14 @@ public class PurpurWorldConfig { +@@ -1602,12 +1645,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1613,6 +1658,7 @@ public class PurpurWorldConfig { +@@ -1618,6 +1663,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean forceHalloweenSeason = false; -@@ -1628,6 +1674,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1679,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1640,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1645,6 +1692,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean horseRidableInWater = false; -@@ -1651,6 +1699,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1704,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1668,6 +1717,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1722,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean huskRidable = false; -@@ -1679,6 +1729,7 @@ public class PurpurWorldConfig { +@@ -1684,6 +1734,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1694,6 +1745,7 @@ public class PurpurWorldConfig { +@@ -1699,6 +1750,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean illusionerRidable = false; -@@ -1703,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1708,6 +1760,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1720,6 +1773,7 @@ public class PurpurWorldConfig { +@@ -1725,6 +1778,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean ironGolemRidable = false; -@@ -1730,6 +1784,7 @@ public class PurpurWorldConfig { +@@ -1735,6 +1789,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1744,6 +1799,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1804,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean llamaRidable = false; -@@ -1758,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1763,6 +1819,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1778,6 +1835,7 @@ public class PurpurWorldConfig { +@@ -1783,6 +1840,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean magmaCubeRidable = false; -@@ -1788,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1793,6 +1851,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1802,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1807,6 +1866,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean mooshroomRidable = false; -@@ -1810,6 +1870,7 @@ public class PurpurWorldConfig { +@@ -1815,6 +1875,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1822,6 +1883,7 @@ public class PurpurWorldConfig { +@@ -1827,6 +1888,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean muleRidableInWater = false; -@@ -1833,6 +1895,7 @@ public class PurpurWorldConfig { +@@ -1838,6 +1900,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1850,6 +1913,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1918,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean ocelotRidable = false; -@@ -1858,6 +1922,7 @@ public class PurpurWorldConfig { +@@ -1863,6 +1927,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1870,6 +1935,7 @@ public class PurpurWorldConfig { +@@ -1875,6 +1940,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean pandaRidable = false; -@@ -1878,6 +1944,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +1949,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1890,6 +1957,7 @@ public class PurpurWorldConfig { +@@ -1895,6 +1962,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean parrotRidable = false; -@@ -1899,6 +1967,7 @@ public class PurpurWorldConfig { +@@ -1904,6 +1972,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1912,6 +1981,7 @@ public class PurpurWorldConfig { +@@ -1917,6 +1986,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean phantomRidable = false; -@@ -1939,6 +2009,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +2014,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1974,6 +2045,7 @@ public class PurpurWorldConfig { +@@ -1979,6 +2050,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean pigRidable = false; -@@ -1983,6 +2055,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +2060,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1996,6 +2069,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2074,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean piglinRidable = false; -@@ -2005,6 +2079,7 @@ public class PurpurWorldConfig { +@@ -2010,6 +2084,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2018,6 +2093,7 @@ public class PurpurWorldConfig { +@@ -2023,6 +2098,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean piglinBruteRidable = false; -@@ -2025,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -2030,6 +2106,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2036,6 +2113,7 @@ public class PurpurWorldConfig { +@@ -2041,6 +2118,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean pillagerRidable = false; -@@ -2044,6 +2122,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2127,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2056,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2140,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean polarBearRidable = false; -@@ -2066,6 +2146,7 @@ public class PurpurWorldConfig { +@@ -2071,6 +2151,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2081,12 +2162,14 @@ public class PurpurWorldConfig { +@@ -2086,12 +2167,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2097,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2102,6 +2185,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean rabbitRidable = false; -@@ -2108,6 +2192,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2197,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2123,6 +2208,7 @@ public class PurpurWorldConfig { +@@ -2128,6 +2213,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean ravagerRidable = false; -@@ -2132,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2137,6 +2223,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2161,12 +2248,14 @@ public class PurpurWorldConfig { +@@ -2166,12 +2253,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2177,6 +2266,7 @@ public class PurpurWorldConfig { +@@ -2182,6 +2271,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean sheepRidable = false; -@@ -2186,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2191,6 +2281,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2199,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2204,6 +2295,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean shulkerRidable = false; -@@ -2212,6 +2304,7 @@ public class PurpurWorldConfig { +@@ -2217,6 +2309,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2229,6 +2322,7 @@ public class PurpurWorldConfig { +@@ -2234,6 +2327,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean silverfishRidable = false; -@@ -2237,6 +2331,7 @@ public class PurpurWorldConfig { +@@ -2242,6 +2336,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2249,6 +2344,7 @@ public class PurpurWorldConfig { +@@ -2254,6 +2349,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean skeletonRidable = false; -@@ -2256,6 +2352,7 @@ public class PurpurWorldConfig { +@@ -2261,6 +2357,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2267,6 +2364,7 @@ public class PurpurWorldConfig { +@@ -2272,6 +2369,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean skeletonHorseRidableInWater = true; -@@ -2278,6 +2376,7 @@ public class PurpurWorldConfig { +@@ -2283,6 +2381,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2294,6 +2393,7 @@ public class PurpurWorldConfig { +@@ -2299,6 +2398,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean slimeRidable = false; -@@ -2304,6 +2404,7 @@ public class PurpurWorldConfig { +@@ -2309,6 +2409,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2318,6 +2419,7 @@ public class PurpurWorldConfig { +@@ -2323,6 +2424,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean snowGolemRidable = false; -@@ -2333,6 +2435,7 @@ public class PurpurWorldConfig { +@@ -2338,6 +2440,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2352,6 +2455,7 @@ public class PurpurWorldConfig { +@@ -2357,6 +2460,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean snifferRidable = false; -@@ -2374,6 +2478,7 @@ public class PurpurWorldConfig { +@@ -2379,6 +2483,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2387,6 +2492,7 @@ public class PurpurWorldConfig { +@@ -2392,6 +2497,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean spiderRidable = false; -@@ -2394,6 +2500,7 @@ public class PurpurWorldConfig { +@@ -2399,6 +2505,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2405,6 +2512,7 @@ public class PurpurWorldConfig { +@@ -2410,6 +2517,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean strayRidable = false; -@@ -2412,6 +2520,7 @@ public class PurpurWorldConfig { +@@ -2417,6 +2525,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2423,6 +2532,7 @@ public class PurpurWorldConfig { +@@ -2428,6 +2537,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean striderRidable = false; -@@ -2432,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2437,6 +2547,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2445,6 +2556,7 @@ public class PurpurWorldConfig { +@@ -2450,6 +2561,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean tadpoleRidable = false; -@@ -2467,6 +2579,7 @@ public class PurpurWorldConfig { +@@ -2472,6 +2584,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2486,12 +2599,14 @@ public class PurpurWorldConfig { +@@ -2491,12 +2604,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2502,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2507,6 +2622,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean turtleRidable = false; -@@ -2510,6 +2626,7 @@ public class PurpurWorldConfig { +@@ -2515,6 +2631,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2522,6 +2639,7 @@ public class PurpurWorldConfig { +@@ -2527,6 +2644,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean vexRidable = false; -@@ -2530,6 +2648,7 @@ public class PurpurWorldConfig { +@@ -2535,6 +2653,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2542,6 +2661,7 @@ public class PurpurWorldConfig { +@@ -2547,6 +2666,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean villagerRidable = false; -@@ -2557,6 +2677,7 @@ public class PurpurWorldConfig { +@@ -2562,6 +2682,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2576,6 +2697,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2702,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean vindicatorRidable = false; -@@ -2584,6 +2706,7 @@ public class PurpurWorldConfig { +@@ -2589,6 +2711,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2596,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2601,6 +2724,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean wanderingTraderRidable = false; -@@ -2606,6 +2730,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2735,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2620,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2625,6 +2750,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean wardenRidable = false; -@@ -2636,6 +2762,7 @@ public class PurpurWorldConfig { +@@ -2641,6 +2767,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2647,6 +2774,7 @@ public class PurpurWorldConfig { +@@ -2652,6 +2779,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean witherRidable = false; -@@ -2661,6 +2789,7 @@ public class PurpurWorldConfig { +@@ -2666,6 +2794,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2683,6 +2812,7 @@ public class PurpurWorldConfig { +@@ -2688,6 +2817,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean witherSkeletonRidable = false; -@@ -2690,6 +2820,7 @@ public class PurpurWorldConfig { +@@ -2695,6 +2825,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2701,6 +2832,7 @@ public class PurpurWorldConfig { +@@ -2706,6 +2837,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean wolfRidable = false; -@@ -2712,6 +2844,7 @@ public class PurpurWorldConfig { +@@ -2717,6 +2849,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2731,6 +2864,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2869,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean zoglinRidable = false; -@@ -2738,6 +2872,7 @@ public class PurpurWorldConfig { +@@ -2743,6 +2877,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2749,6 +2884,7 @@ public class PurpurWorldConfig { +@@ -2754,6 +2889,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean zombieRidable = false; -@@ -2762,6 +2898,7 @@ public class PurpurWorldConfig { +@@ -2767,6 +2903,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2779,6 +2916,7 @@ public class PurpurWorldConfig { +@@ -2784,6 +2921,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean zombieHorseRidableInWater = false; -@@ -2791,6 +2929,7 @@ public class PurpurWorldConfig { +@@ -2796,6 +2934,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2808,6 +2947,7 @@ public class PurpurWorldConfig { +@@ -2813,6 +2952,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean zombieVillagerRidable = false; -@@ -2822,6 +2962,7 @@ public class PurpurWorldConfig { +@@ -2827,6 +2967,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2840,6 +2981,7 @@ public class PurpurWorldConfig { +@@ -2845,6 +2986,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 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 } public boolean zombifiedPiglinRidable = false; -@@ -2852,6 +2994,7 @@ public class PurpurWorldConfig { +@@ -2857,6 +2999,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 5aa2acfba5e4f1154c66e7950c34354c6e4b04d5..07faa306549156f83ab099745c4e07b3 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2868,6 +3011,7 @@ public class PurpurWorldConfig { +@@ -2873,6 +3016,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/0232-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0232-Shearing-jeb-produces-random-color-wool.patch index dff4f701c..540c483d8 100644 --- a/patches/server/0232-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0232-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index a1b323ecba25910e97f154e487acc94943117e0c..62d8ae4c689170420c7850fbbb402be8 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab91dfb2e55002d69422231ac5628f88c2f712c6..2b6067e2dd5b562c22e961def0e5623395fde55a 100644 +index 9a949eb3a05eb947e3afda04e65fd27f810e93b2..33a6e9c584c33d42364c25d76efb3fb478053121 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2281,6 +2281,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2286,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index ab91dfb2e55002d69422231ac5628f88c2f712c6..2b6067e2dd5b562c22e961def0e56233 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2295,6 +2296,7 @@ public class PurpurWorldConfig { +@@ -2300,6 +2301,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/0233-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0233-Turtle-eggs-random-tick-crack-chance.patch index 495998d37..a036d7abf 100644 --- a/patches/server/0233-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0233-Turtle-eggs-random-tick-crack-chance.patch @@ -18,7 +18,7 @@ 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 2b6067e2dd5b562c22e961def0e5623395fde55a..ccaed082001b197719af4eaca8d5eb84a41606c3 100644 +index 33a6e9c584c33d42364c25d76efb3fb478053121..f6ff629afaa70fd4a1f689fc92ca061887e5be87 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -996,11 +996,13 @@ public class PurpurWorldConfig { @@ -34,4 +34,4 @@ index 2b6067e2dd5b562c22e961def0e5623395fde55a..ccaed082001b197719af4eaca8d5eb84 + turtleEggsRandomTickCrackChance = getInt("blocks.turtle_egg.random-tick-crack-chance", turtleEggsRandomTickCrackChance); } - public boolean babiesAreRidable = true; + public int waterInfiniteRequiredSources = 2; diff --git a/patches/server/0234-Mob-head-visibility-percent.patch b/patches/server/0234-Mob-head-visibility-percent.patch index 62765d1a6..1c9d65016 100644 --- a/patches/server/0234-Mob-head-visibility-percent.patch +++ b/patches/server/0234-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 7a35d45f8449a8399cb417357f0f0a6419bfbe3a..39ee6fbc6ce17b61abf88deba69b0ade // 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 ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee315a5b6b8 100644 +index f6ff629afaa70fd4a1f689fc92ca061887e5be87..953c796e72650c300f6d9f591fd167c2449a6482 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1283,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1288,6 +1288,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1300,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1305,6 +1306,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 ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 } public boolean dolphinRidable = false; -@@ -2086,6 +2088,7 @@ public class PurpurWorldConfig { +@@ -2091,6 +2093,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2100,6 +2103,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2108,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 ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 } public boolean piglinBruteRidable = false; -@@ -2361,6 +2365,7 @@ public class PurpurWorldConfig { +@@ -2366,6 +2370,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2373,6 +2378,7 @@ public class PurpurWorldConfig { +@@ -2378,6 +2383,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 ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 } public boolean skeletonHorseRidableInWater = true; -@@ -2907,6 +2913,7 @@ public class PurpurWorldConfig { +@@ -2912,6 +2918,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index ccaed082001b197719af4eaca8d5eb84a41606c3..5ebf050a48506a4dc97e2df357e57ee3 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2925,6 +2932,7 @@ public class PurpurWorldConfig { +@@ -2930,6 +2937,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/0235-Configurable-valid-characters-for-usernames.patch b/patches/server/0235-Configurable-valid-characters-for-usernames.patch index 1d8c2502a..528bf9dab 100644 --- a/patches/server/0235-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0235-Configurable-valid-characters-for-usernames.patch @@ -18,10 +18,10 @@ index af3ef12851cbfca13ad3316214bd53f2359e2078..f719f8aafe7c75e2ef8fcb05f556a8d6 char c = in.charAt(i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7467d3738b1159323606f08e7086dba653063211..1429ff6e89efd58a618c1b1bbeea567466f5f397 100644 +index e52ef79d8488edeca10920976f2ef2cdd9a9f93b..1e2cba82b087485fbe15b8fd43339c3a7a6ccad7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -457,4 +457,11 @@ public class PurpurConfig { +@@ -455,4 +455,11 @@ public class PurpurConfig { private static void networkSettings() { useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); } diff --git a/patches/server/0236-Shears-can-have-looting-enchantment.patch b/patches/server/0236-Shears-can-have-looting-enchantment.patch index 7e20f5169..b3f960c7f 100644 --- a/patches/server/0236-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0236-Shears-can-have-looting-enchantment.patch @@ -158,10 +158,10 @@ index 4007c16550683e23b396dfdff29530a82523fe05..8fe09c13643d99639fb242da4367c42e public int getMinCost(int level) { return 15 + (level - 1) * 9; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1429ff6e89efd58a618c1b1bbeea567466f5f397..eb5747485a43bc5c5574cfc539bdc98bee045e9f 100644 +index 1e2cba82b087485fbe15b8fd43339c3a7a6ccad7..6b0729a5ec50d7519b5f2e45f103e13a287fec74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -389,6 +389,7 @@ public class PurpurConfig { +@@ -387,6 +387,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; @@ -169,7 +169,7 @@ index 1429ff6e89efd58a618c1b1bbeea567466f5f397..eb5747485a43bc5c5574cfc539bdc98b public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -410,6 +411,7 @@ public class PurpurConfig { +@@ -408,6 +409,7 @@ public class PurpurConfig { } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); diff --git a/patches/server/0237-Stop-bees-from-dying-after-stinging.patch b/patches/server/0237-Stop-bees-from-dying-after-stinging.patch index 710f6ce22..4e96ee88f 100644 --- a/patches/server/0237-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0237-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index fad2da0ba194d349de73777a7ab43bb6447298e7..2afe5a4f3abaa3f9883b13fa3895e1e1 ++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 5ebf050a48506a4dc97e2df357e57ee315a5b6b8..45abfce546fafc1e1c375ee55c99f8360cf934ab 100644 +index 953c796e72650c300f6d9f591fd167c2449a6482..bea8afb59dc0531a8989fe498740d5f7fd1e7c5d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1086,6 +1086,7 @@ public class PurpurWorldConfig { +@@ -1091,6 +1091,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 5ebf050a48506a4dc97e2df357e57ee315a5b6b8..45abfce546fafc1e1c375ee55c99f836 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1102,6 +1103,7 @@ public class PurpurWorldConfig { +@@ -1107,6 +1108,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/0243-Configurable-phantom-size.patch b/patches/server/0243-Configurable-phantom-size.patch index 16f9941a7..2d2ce61ff 100644 --- a/patches/server/0243-Configurable-phantom-size.patch +++ b/patches/server/0243-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index c3b9878de5ac74b9a1aaa77030edb4a2b53586c3..85adeb1c4061d95c53359331256dbbd1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60cc0d990edf1ec072a8d017550072e24e80e221..e5d1910905334b7b8e12418aca41535f65389d68 100644 +index e6f22da99c0f74c8d880ec76d7370c37c8812882..35a82eea6df8c06b2ee89f093d408b2d3c02b73f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2026,6 +2026,8 @@ public class PurpurWorldConfig { +@@ -2031,6 +2031,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 60cc0d990edf1ec072a8d017550072e24e80e221..e5d1910905334b7b8e12418aca41535f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2062,6 +2064,13 @@ public class PurpurWorldConfig { +@@ -2067,6 +2069,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/0244-Configurable-food-attributes.patch b/patches/server/0244-Configurable-food-attributes.patch index c498223ee..81fad15ed 100644 --- a/patches/server/0244-Configurable-food-attributes.patch +++ b/patches/server/0244-Configurable-food-attributes.patch @@ -69,10 +69,10 @@ index 31f5ed9dd1727eee24804a384817d2b76a45676b..6e25f5765f169f9b3f48bf5ca3f7e6eb } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index eb5747485a43bc5c5574cfc539bdc98bee045e9f..a64cd03bd7b7855330eedfd37f7528e0b61107bc 100644 +index 6b0729a5ec50d7519b5f2e45f103e13a287fec74..55c4bbe154c1b2f69ba11b8b8c9e622999350802 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -466,4 +466,56 @@ public class PurpurConfig { +@@ -464,4 +464,56 @@ public class PurpurConfig { String setPattern = getString("settings.username-valid-characters", defaultPattern); usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } diff --git a/patches/server/0245-Max-joins-per-second.patch b/patches/server/0245-Max-joins-per-second.patch index 4e79c9ef7..6b6e4504b 100644 --- a/patches/server/0245-Max-joins-per-second.patch +++ b/patches/server/0245-Max-joins-per-second.patch @@ -31,10 +31,10 @@ index c45c1d519aba414557bf1a4c9260f928bd8d9b14..671335841800002143ce20ee4c4e2051 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a64cd03bd7b7855330eedfd37f7528e0b61107bc..3db04bc9611a76b939758ebaac8596e05860f365 100644 +index 55c4bbe154c1b2f69ba11b8b8c9e622999350802..4ebaf007c785f6805b659d153c207e8f6c800bee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -456,8 +456,10 @@ public class PurpurConfig { +@@ -454,8 +454,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0246-Configurable-minimum-demand-for-trades.patch b/patches/server/0246-Configurable-minimum-demand-for-trades.patch index 429cefe51..f987d1262 100644 --- a/patches/server/0246-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0246-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 28bdcb14cb5b458d3c990fcf343ef97f08e4f3c6..48167334162443365bb8a6d082a51b2c public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e5d1910905334b7b8e12418aca41535f65389d68..4502ce8cbb0a7f4162efb3360860b4b88deff26d 100644 +index 35a82eea6df8c06b2ee89f093d408b2d3c02b73f..a1c94a54d17f442467dda8cceb16b4824d54ef1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2709,6 +2709,7 @@ public class PurpurWorldConfig { +@@ -2714,6 +2714,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index e5d1910905334b7b8e12418aca41535f65389d68..4502ce8cbb0a7f4162efb3360860b4b8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2729,6 +2730,7 @@ public class PurpurWorldConfig { +@@ -2734,6 +2735,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/0247-Lobotomize-stuck-villagers.patch b/patches/server/0247-Lobotomize-stuck-villagers.patch index 67c998bee..92103a873 100644 --- a/patches/server/0247-Lobotomize-stuck-villagers.patch +++ b/patches/server/0247-Lobotomize-stuck-villagers.patch @@ -105,10 +105,10 @@ index e986767316a717bdbdff7a9ccaaeba068ab2a6d8..4d0b37957eb02b5d48beb76295ebc7c4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4502ce8cbb0a7f4162efb3360860b4b88deff26d..5cbc9ab88b4690adb6c32958363cc455396b7b9d 100644 +index a1c94a54d17f442467dda8cceb16b4824d54ef1e..9367f0ccaa5fdbdc0695e0fbb0af87875fa18af2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2710,6 +2710,8 @@ public class PurpurWorldConfig { +@@ -2715,6 +2715,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 4502ce8cbb0a7f4162efb3360860b4b88deff26d..5cbc9ab88b4690adb6c32958363cc455 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2731,6 +2733,17 @@ public class PurpurWorldConfig { +@@ -2736,6 +2738,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/0248-Option-for-villager-display-trade-item.patch b/patches/server/0248-Option-for-villager-display-trade-item.patch index df5ca2fbd..e80485a07 100644 --- a/patches/server/0248-Option-for-villager-display-trade-item.patch +++ b/patches/server/0248-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 050be72c815010bf3f4b72427e2052b00420e8ee..8a213205f57c8dcd2226d7194d74b1b1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5cbc9ab88b4690adb6c32958363cc455396b7b9d..9e7bc34f5015d5fee6e0d440cffb769fd4d8ccd0 100644 +index 9367f0ccaa5fdbdc0695e0fbb0af87875fa18af2..6de6dfba352c6f305363bf2fa0a2b0bf393e48b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2712,6 +2712,7 @@ public class PurpurWorldConfig { +@@ -2717,6 +2717,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 5cbc9ab88b4690adb6c32958363cc455396b7b9d..9e7bc34f5015d5fee6e0d440cffb769f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2744,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2749,6 +2750,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0253-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0253-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 4de5fff34..52264bde6 100644 --- a/patches/server/0253-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0253-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,7 +24,7 @@ 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 ef8b68c10b8b2e23c4e51457ec7c8650a0f15303..f0e8d9f4d3c134b5e6a0e28d0aa53e63bbbae1a5 100644 +index 35c28ca9fe127ce32583bb95da38af54bde5bc4f..e4786e4cf59354ab43d6afbfd0317936ea04e7e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1011,12 +1011,14 @@ public class PurpurWorldConfig { @@ -41,4 +41,4 @@ index ef8b68c10b8b2e23c4e51457ec7c8650a0f15303..f0e8d9f4d3c134b5e6a0e28d0aa53e63 + turtleEggsTramplingFeatherFalling = getBoolean("blocks.turtle_egg.feather-fall-distance-affects-trampling", turtleEggsTramplingFeatherFalling); } - public boolean babiesAreRidable = true; + public int waterInfiniteRequiredSources = 2; diff --git a/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch index da4e7e32e..23480a87f 100644 --- a/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch @@ -31,10 +31,10 @@ index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235e @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3db04bc9611a76b939758ebaac8596e05860f365..3de2e7a17e1234367e4ec6d944b1145781aefeba 100644 +index 4ebaf007c785f6805b659d153c207e8f6c800bee..75908d5fdfbf795b2e83860146291619b768df31 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -395,6 +395,7 @@ public class PurpurConfig { +@@ -393,6 +393,7 @@ public class PurpurConfig { public static boolean allowIncompatibleEnchants = true; public static boolean allowHigherEnchantsLevels = true; public static boolean allowUnsafeEnchantCommand = false; @@ -42,7 +42,7 @@ index 3db04bc9611a76b939758ebaac8596e05860f365..3de2e7a17e1234367e4ec6d944b11457 private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -417,6 +418,7 @@ public class PurpurConfig { +@@ -415,6 +416,7 @@ public class PurpurConfig { allowIncompatibleEnchants = getBoolean("settings.enchantment.anvil.allow-incompatible-enchants", allowIncompatibleEnchants); allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability diff --git a/patches/server/0256-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0256-Implement-configurable-search-radius-for-villagers-t.patch index fe60c052c..ee62aca68 100644 --- a/patches/server/0256-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0256-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 43afded0ddd88094971ace2dd02d2aca6c3e86ae..25bf930258065b6cc6d6c3a790835ddf 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 f0e8d9f4d3c134b5e6a0e28d0aa53e63bbbae1a5..1bf29a6bb49bc31d974329fe33c802ec7e14a65f 100644 +index e4786e4cf59354ab43d6afbfd0317936ea04e7e8..3d45424694c11f54519dd31c3aa9465a491706f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2723,6 +2723,8 @@ public class PurpurWorldConfig { +@@ -2728,6 +2728,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index f0e8d9f4d3c134b5e6a0e28d0aa53e63bbbae1a5..1bf29a6bb49bc31d974329fe33c802ec private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2756,6 +2758,8 @@ public class PurpurWorldConfig { +@@ -2761,6 +2763,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/0257-Stonecutter-damage.patch b/patches/server/0257-Stonecutter-damage.patch index db78be7ad..00b061dcf 100644 --- a/patches/server/0257-Stonecutter-damage.patch +++ b/patches/server/0257-Stonecutter-damage.patch @@ -48,10 +48,10 @@ index d976a6df54c1e817def2d588692abe25a03ee0fa..ba57accc272958da4714896baeadb52c 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 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f038a8c13 100644 +index 75908d5fdfbf795b2e83860146291619b768df31..c731c389ca4e9114512a00cd55933debfbefc9f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -207,8 +207,10 @@ public class PurpurConfig { +@@ -205,8 +205,10 @@ public class PurpurConfig { } public static String deathMsgRunWithScissors = " slipped and fell on their shears"; @@ -63,7 +63,7 @@ index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f 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 1bf29a6bb49bc31d974329fe33c802ec7e14a65f..9e4160027df7ddd61b5d4766e45544dba0ae59d0 100644 +index 3d45424694c11f54519dd31c3aa9465a491706f4..e6e5d494e1b1136bc45518628b36e43795582504 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1006,6 +1006,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0260-Skeletons-eat-wither-roses.patch b/patches/server/0260-Skeletons-eat-wither-roses.patch index 15d64ba4b..e5250beee 100644 --- a/patches/server/0260-Skeletons-eat-wither-roses.patch +++ b/patches/server/0260-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eb1ef5a02900172f7228bcd25cac9be3b586e50c..4e7bd8ecb1571b5d986c70a12a2d2fdf151d6420 100644 +index ef0fa2aed5a193228cdb15a14b0b44af1f7dcae9..5b01497069b8aa523cef28baf29bbf59fbe3b30c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2407,6 +2407,7 @@ public class PurpurWorldConfig { +@@ -2412,6 +2412,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index eb1ef5a02900172f7228bcd25cac9be3b586e50c..4e7bd8ecb1571b5d986c70a12a2d2fdf private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2420,6 +2421,7 @@ public class PurpurWorldConfig { +@@ -2425,6 +2426,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/0261-Enchantment-Table-Persists-Lapis.patch b/patches/server/0261-Enchantment-Table-Persists-Lapis.patch index b042ca735..75bc5a913 100644 --- a/patches/server/0261-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0261-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 4e7bd8ecb1571b5d986c70a12a2d2fdf151d6420..0996409b857de7cf3531290935bceca34159a2ef 100644 +index 5b01497069b8aa523cef28baf29bbf59fbe3b30c..7da851ced9c534198739de69582b79bec0b8b280 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1442,6 +1442,11 @@ public class PurpurWorldConfig { +@@ -1447,6 +1447,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch index 4fa7c9aa9..fb51a1eff 100644 --- a/patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index f3210aa312af48a77129962fe483e65eec36a342..d3158d0bea38780463e7fcc4cf2a27f9 } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 15ed564a579237dd1f5d6ce56ccb473f038a8c13..9e87afb01e569e6d5c2846b931440c4ce395adae 100644 +index c731c389ca4e9114512a00cd55933debfbefc9f5..ad7153e27b04fc12a4ff97f1563584471626c6eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -461,9 +461,11 @@ public class PurpurConfig { +@@ -459,9 +459,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0278-Add-skeleton-bow-accuracy-option.patch b/patches/server/0278-Add-skeleton-bow-accuracy-option.patch index e2c874c08..0e6cf1118 100644 --- a/patches/server/0278-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0278-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 41376b705748e14c1c4174e07732ce09ad8e581f..dd84433a988712da9d799cbda2487a90 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 ded437b33e88b1cef1797e293e3278321a12e216..2d9f50dea1c686af49a79c6ffe9c34928e725a2a 100644 +index b8cbd4960f1c1a93ccdafb08d862fc253412c5a8..9c29305e24186a35999765784d46768d9b4459cf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2427,6 +2427,8 @@ public class PurpurWorldConfig { +@@ -2432,6 +2432,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index ded437b33e88b1cef1797e293e3278321a12e216..2d9f50dea1c686af49a79c6ffe9c3492 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2441,6 +2443,18 @@ public class PurpurWorldConfig { +@@ -2446,6 +2448,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/0279-Allay-respect-item-NBT.patch b/patches/server/0279-Allay-respect-item-NBT.patch index 9d208e5bb..ff7287b88 100644 --- a/patches/server/0279-Allay-respect-item-NBT.patch +++ b/patches/server/0279-Allay-respect-item-NBT.patch @@ -44,10 +44,10 @@ index 15c4531865d829ea90d060ee83122a80ab39028b..379d168eb4ba958622398efa79fa43d5 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 2d9f50dea1c686af49a79c6ffe9c34928e725a2a..54ca27fcf2b5c21218c6a97408e5940d49ab18aa 100644 +index 9c29305e24186a35999765784d46768d9b4459cf..c89c3855902f2e7f4c7b4c56a3dfab238e68f85f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1063,10 +1063,13 @@ public class PurpurWorldConfig { +@@ -1068,10 +1068,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0281-Implement-ram-and-rambar-commands.patch b/patches/server/0281-Implement-ram-and-rambar-commands.patch index 312f0f4ed..ce8464d60 100644 --- a/patches/server/0281-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0281-Implement-ram-and-rambar-commands.patch @@ -61,10 +61,10 @@ index c3bb1f0d4ea44d88f2f5453e9fc8b109bcd9fa24..e59c6495c0e846bc4a7f73c4880568b7 return this.tpsBar; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9e87afb01e569e6d5c2846b931440c4ce395adae..4142820c3053d77d4ae7186fec968d624f893056 100644 +index ad7153e27b04fc12a4ff97f1563584471626c6eb..df67cee913c64fa1cac3aff8522bf656eb6ff653 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -182,6 +182,8 @@ public class PurpurConfig { +@@ -181,6 +181,8 @@ public class PurpurConfig { public static String creditsCommandOutput = "%s has been shown the end credits"; public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; @@ -73,7 +73,7 @@ index 9e87afb01e569e6d5c2846b931440c4ce395adae..4142820c3053d77d4ae7186fec968d62 public static String tpsbarCommandOutput = "Tpsbar toggled for "; public static String dontRunWithScissors = "Don't run with scissors!"; public static String uptimeCommandOutput = "Server uptime is "; -@@ -198,6 +200,8 @@ public class PurpurConfig { +@@ -196,6 +198,8 @@ public class PurpurConfig { creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput); demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); @@ -82,7 +82,7 @@ index 9e87afb01e569e6d5c2846b931440c4ce395adae..4142820c3053d77d4ae7186fec968d62 tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); uptimeCommandOutput = getString("settings.messages.uptime-command-output", uptimeCommandOutput); -@@ -245,6 +249,15 @@ public class PurpurConfig { +@@ -243,6 +247,15 @@ public class PurpurConfig { disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops); } @@ -98,7 +98,7 @@ index 9e87afb01e569e6d5c2846b931440c4ce395adae..4142820c3053d77d4ae7186fec968d62 public static String commandTPSBarTitle = "TPS: MSPT: Ping: ms"; public static BossBar.Overlay commandTPSBarProgressOverlay = BossBar.Overlay.NOTCHED_20; public static TPSBarTask.FillMode commandTPSBarProgressFillMode = TPSBarTask.FillMode.MSPT; -@@ -272,6 +285,16 @@ public class PurpurConfig { +@@ -270,6 +283,16 @@ public class PurpurConfig { public static String uptimeSecond = "%02d second"; public static String uptimeSeconds = "%02d seconds"; private static void commandSettings() { diff --git a/patches/server/0282-Add-item-packet-serialize-event.patch b/patches/server/0282-Add-item-packet-serialize-event.patch index 50763cc7f..64d9a968f 100644 --- a/patches/server/0282-Add-item-packet-serialize-event.patch +++ b/patches/server/0282-Add-item-packet-serialize-event.patch @@ -65,10 +65,10 @@ index bf9635072d4ffc298a5221309bdf329c67e0451a..51267c07f4ec562c5a2f0ec932539d77 boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4142820c3053d77d4ae7186fec968d624f893056..7a02cecaaef511c0db4708a1ce9eb885c1cfe028 100644 +index df67cee913c64fa1cac3aff8522bf656eb6ff653..8ffa65bb262bdd391755b9d255ad0e68b32bb31d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -549,4 +549,9 @@ public class PurpurConfig { +@@ -547,4 +547,9 @@ public class PurpurConfig { } }); } diff --git a/patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch b/patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch index 3f9cf560b..8f7c66b69 100644 --- a/patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch +++ b/patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch @@ -40,10 +40,10 @@ index 43cdda0cb26c5d5cc9025199eb71673d71c2abea..83660fad1e4c0ce5800f6e62f915ccd8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54ca27fcf2b5c21218c6a97408e5940d49ab18aa..ff33ae3591a23386ba870a92e1260a827c8b2ee4 100644 +index c89c3855902f2e7f4c7b4c56a3dfab238e68f85f..f59cdfe77b447de8f7112b15c673dbf8c0ff9b9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1679,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1684,6 +1684,7 @@ public class PurpurWorldConfig { public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; public boolean glowSquidAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 54ca27fcf2b5c21218c6a97408e5940d49ab18aa..ff33ae3591a23386ba870a92e1260a82 private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1686,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1691,6 +1692,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/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 08d1044ff..c2f93988f 100644 --- a/patches/server/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -104,10 +104,10 @@ index 31918fa2eb38e42a5ea5366e559f25ea9d7d59ae..15d8e9261a89da30529ac347462c5209 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7a02cecaaef511c0db4708a1ce9eb885c1cfe028..af875d966081b6e9f0d6a2680cff7f843c8dea05 100644 +index 8ffa65bb262bdd391755b9d255ad0e68b32bb31d..e7e72c4f7a1fcfb1b6372bb42c08961d0bf2738d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -554,4 +554,9 @@ public class PurpurConfig { +@@ -552,4 +552,9 @@ public class PurpurConfig { private static void fixNetworkSerializedCreativeItems() { fixNetworkSerializedItemsInCreative = getBoolean("settings.fix-network-serialized-items-in-creative", fixNetworkSerializedItemsInCreative); } diff --git a/patches/server/0286-Configurable-block-blast-resistance.patch b/patches/server/0286-Configurable-block-blast-resistance.patch index e6748663a..eff9073af 100644 --- a/patches/server/0286-Configurable-block-blast-resistance.patch +++ b/patches/server/0286-Configurable-block-blast-resistance.patch @@ -44,10 +44,10 @@ index ec6c63075306f9e5389e83641d2c8a82369ddc6b..0f16deddd8cbb506ef7886f57ae640a4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index af875d966081b6e9f0d6a2680cff7f843c8dea05..8972bbbaca23f771fb5e10ee4099a420a0ec3ccd 100644 +index e7e72c4f7a1fcfb1b6372bb42c08961d0bf2738d..3230dbbe472d3d2a6269cf216e783fab5b8093ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -559,4 +559,19 @@ public class PurpurConfig { +@@ -557,4 +557,19 @@ public class PurpurConfig { private static void fixProjectileLootingTransfer() { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0287-Configurable-block-fall-damage-modifiers.patch b/patches/server/0287-Configurable-block-fall-damage-modifiers.patch index f05a40693..fbfedc87e 100644 --- a/patches/server/0287-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0287-Configurable-block-fall-damage-modifiers.patch @@ -54,10 +54,10 @@ index cfbe1dae76db76cf54a4f5d72aca72d5e893859e..74cb10230d459ac9f300a9d59af504d2 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8972bbbaca23f771fb5e10ee4099a420a0ec3ccd..290a66b51dc6b86b006b577754d1030def288cf7 100644 +index 3230dbbe472d3d2a6269cf216e783fab5b8093ee..a8b217e3fe58b6435ef380a356db71ebcc557752 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -574,4 +574,50 @@ public class PurpurConfig { +@@ -572,4 +572,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/server/0291-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0291-Add-log-suppression-for-LibraryLoader.patch index f988ca219..4cd12cefd 100644 --- a/patches/server/0291-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0291-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 290a66b51dc6b86b006b577754d1030def288cf7..c3878aed434bdf490cbaf45064fa5a6c5814476f 100644 +index a8b217e3fe58b6435ef380a356db71ebcc557752..3bdba6932c1acac79c4772569b8fa27104bcf35b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -470,11 +470,14 @@ public class PurpurConfig { +@@ -468,11 +468,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/server/0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch b/patches/server/0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch index 73e8a3da5..2a27e1703 100644 --- a/patches/server/0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch +++ b/patches/server/0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch @@ -20,10 +20,10 @@ index 286f34eef22a85be3fe9747dc3c3f9a7d51f437c..ff2b97e4feff3eefe50d2715437a68a8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c3878aed434bdf490cbaf45064fa5a6c5814476f..81409df1af15b68971b1efd203b9ad8d87ca7b6e 100644 +index 3bdba6932c1acac79c4772569b8fa27104bcf35b..d8e347b45ae89fbea403e4754c42b48776fcdfa0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -415,6 +415,7 @@ public class PurpurConfig { +@@ -413,6 +413,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; public static boolean allowShearsLooting = false; @@ -31,7 +31,7 @@ index c3878aed434bdf490cbaf45064fa5a6c5814476f..81409df1af15b68971b1efd203b9ad8d public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -438,6 +439,7 @@ public class PurpurConfig { +@@ -436,6 +437,7 @@ public class PurpurConfig { allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); allowShearsLooting = getBoolean("settings.enchantment.allow-looting-on-shears", allowShearsLooting); diff --git a/patches/server/0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 6d68393a2..7f3be2589 100644 --- a/patches/server/0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e0564 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 560491ac60ed89d2103b4b1baada5e032a33345b..bc88e8f1553d321c6c93c0f0753fa0b473f638c4 100644 +index 32057f0069b441e154cae25086e247106ff695d6..7b45e714bbeecb3c6eb5505ff6b02df9a9a202cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1335,6 +1335,7 @@ public class PurpurWorldConfig { +@@ -1340,6 +1340,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 560491ac60ed89d2103b4b1baada5e032a33345b..bc88e8f1553d321c6c93c0f0753fa0b4 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1353,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1358,6 +1359,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/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 030186b57..4dcb52aac 100644 --- a/patches/server/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,27 +5,19 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a04a75bd1fb673fe6182694d730daae41f184763..9b8bed645a78c213d5c15c53094d0d2369211d36 100644 +index a04a75bd1fb673fe6182694d730daae41f184763..4468df604ea48789d840e18a04d37d5b9ebe0711 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -7,6 +7,7 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Sets; - import com.google.common.collect.UnmodifiableIterator; - import com.mojang.logging.LogUtils; -+import io.papermc.paper.util.MCUtil; - import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap; - import it.unimi.dsi.fastutil.objects.Object2DoubleMap; - import java.util.Arrays; -@@ -858,6 +859,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -858,6 +858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end -+ if (this.level().purpurConfig.teleportOnNetherCeilingDamage && this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER && this instanceof ServerPlayer player) player.teleport(MCUtil.toLocation(this.level, this.level.getSharedSpawnPos())); else // Purpur ++ if (this.level().purpurConfig.teleportOnNetherCeilingDamage && this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER && this instanceof ServerPlayer player) player.teleport(io.papermc.paper.util.MCUtil.toLocation(this.level, this.level.getSharedSpawnPos())); else // Purpur this.onBelowWorld(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc88e8f1553d321c6c93c0f0753fa0b473f638c4..321167bc250b7168a2bc379a96fc9a7a7175314e 100644 +index 7b45e714bbeecb3c6eb5505ff6b02df9a9a202cc..0f8da9b2bce1e2f28ed5573b3b598f2305913d00 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 { diff --git a/patches/server/0300-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0300-Add-attribute-clamping-and-armor-limit-config.patch index a5758a832..b15e84c66 100644 --- a/patches/server/0300-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0300-Add-attribute-clamping-and-armor-limit-config.patch @@ -36,10 +36,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 81409df1af15b68971b1efd203b9ad8d87ca7b6e..be8b44daa0141151c973917a774aa07721647ed1 100644 +index d8e347b45ae89fbea403e4754c42b48776fcdfa0..5527d7708ba57ef8a3c9f472dfc0496551eb0e20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -565,6 +565,16 @@ public class PurpurConfig { +@@ -563,6 +563,16 @@ public class PurpurConfig { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); }