diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index a8b1c2158c..02f443e025 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -179,7 +179,7 @@ index 4b457cbfc56e55e0ae0fee5b69e2e75349702aab..fa38d6dd3a7439de3b2503a90637eabb .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366cff1eca9 +index 0000000000000000000000000000000000000000..be3b733d7a641a7651ace1b3bd5ac56f26db5947 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,175 @@ @@ -260,8 +260,8 @@ index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366 + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 33); -+ set("config-version", 33); ++ version = getInt("config-version", 34); ++ set("config-version", 34); + + readConfig(PurpurConfig.class, null); + diff --git a/patches/server/0186-Tool-actionable-options.patch b/patches/server/0186-Tool-actionable-options.patch index 1b4aabca89..2d494b9724 100644 --- a/patches/server/0186-Tool-actionable-options.patch +++ b/patches/server/0186-Tool-actionable-options.patch @@ -153,10 +153,10 @@ index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c22b1c244e 100644 +index 97295817c15bfaab80241ae89134bde1bb129462..c67400bf2e22557095b1de43d410b8efd7705f90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -503,6 +503,206 @@ public class PurpurWorldConfig { +@@ -503,6 +503,280 @@ public class PurpurWorldConfig { }); } @@ -205,6 +205,45 @@ index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c2 + }); + set("gameplay-mechanics.shovel-turns-block-to-grass-path", null); + } ++ if (PurpurConfig.version < 34) { ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_chiseled_copper", Map.of("into", "minecraft:oxidized_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_door", Map.of("into", "minecraft:oxidized_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_trapdoor", Map.of("into", "minecraft:oxidized_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_grate", Map.of("into", "minecraft:oxidized_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_bulb", Map.of("into", "minecraft:oxidized_copper_bulb", "drops", new HashMap())); ++ ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())); ++ } + getMap("tools.axe.strippables", Map.ofEntries( + Map.entry("minecraft:oak_wood", Map.of("into", "minecraft:stripped_oak_wood", "drops", new HashMap())), + Map.entry("minecraft:oak_log", Map.of("into", "minecraft:stripped_oak_log", "drops", new HashMap())), @@ -260,7 +299,27 @@ index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c2 + Map.entry("minecraft:waxed_cut_copper_stairs", Map.of("into", "minecraft:cut_copper_stairs", "drops", new HashMap())), + Map.entry("minecraft:waxed_exposed_cut_copper_stairs", Map.of("into", "minecraft:exposed_cut_copper_stairs", "drops", new HashMap())), + Map.entry("minecraft:waxed_weathered_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap())), -+ Map.entry("minecraft:waxed_oxidized_cut_copper_stairs", Map.of("into", "minecraft:oxidized_cut_copper_stairs", "drops", new HashMap()))) ++ Map.entry("minecraft:waxed_oxidized_cut_copper_stairs", Map.of("into", "minecraft:oxidized_cut_copper_stairs", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_chiseled_copper", Map.of("into", "minecraft:oxidized_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_door", Map.of("into", "minecraft:oxidized_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_trapdoor", Map.of("into", "minecraft:oxidized_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_grate", Map.of("into", "minecraft:oxidized_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_bulb", Map.of("into", "minecraft:oxidized_copper_bulb", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { + Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.waxables`: " + blockId); return; } @@ -285,12 +344,27 @@ index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c2 + Map.entry("minecraft:exposed_cut_copper", Map.of("into", "minecraft:cut_copper", "drops", new HashMap())), + Map.entry("minecraft:weathered_cut_copper", Map.of("into", "minecraft:exposed_cut_copper", "drops", new HashMap())), + Map.entry("minecraft:oxidized_cut_copper", Map.of("into", "minecraft:weathered_cut_copper", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())), + Map.entry("minecraft:exposed_cut_copper_slab", Map.of("into", "minecraft:cut_copper_slab", "drops", new HashMap())), + Map.entry("minecraft:weathered_cut_copper_slab", Map.of("into", "minecraft:exposed_cut_copper_slab", "drops", new HashMap())), + Map.entry("minecraft:oxidized_cut_copper_slab", Map.of("into", "minecraft:weathered_cut_copper_slab", "drops", new HashMap())), + Map.entry("minecraft:exposed_cut_copper_stairs", Map.of("into", "minecraft:cut_copper_stairs", "drops", new HashMap())), + Map.entry("minecraft:weathered_cut_copper_stairs", Map.of("into", "minecraft:exposed_cut_copper_stairs", "drops", new HashMap())), -+ Map.entry("minecraft:oxidized_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap()))) ++ Map.entry("minecraft:oxidized_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { + Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.weatherables`: " + blockId); return; } diff --git a/patches/server/0191-Big-dripleaf-tilt-delay.patch b/patches/server/0191-Big-dripleaf-tilt-delay.patch index 94f51606ec..8bd13a9dba 100644 --- a/patches/server/0191-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0191-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8e4a6a1188b2ce2825dc5750505212c72efb5c7b..c7f78ccb228d261984ac360f2ca6ae94 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f540ecafbcc509ad5f6404ffc0d2047f8cd3d79f..e9069b48d19779ba9fda5ea736117b6f092b3efd 100644 +index a6459228449b76956c61be7dd88b04e1edd04b11..8bbc9eea77aa96ebd20c5901c03b35e66e79ce63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -744,6 +744,22 @@ public class PurpurWorldConfig { +@@ -818,6 +818,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index efb92c6c90..ff97067834 100644 --- a/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index 6519fb56a7c6fd2e9ce3f4a0504053ed05eb0e14..3583d0c01410987584a53bb6e717d563 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 e45b0f23cad0ad85915d1cbf1d3651a2d5b895a3..602f8111576de65d6059704cf5d81cba38172236 100644 +index b2c7777ce1e8492d875c2575685d7668093c8eda..f78716c6d8635c21dacb216760a5ba0ebc33b73f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1360,6 +1360,7 @@ public class PurpurWorldConfig { +@@ -1434,6 +1434,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index e45b0f23cad0ad85915d1cbf1d3651a2d5b895a3..602f8111576de65d6059704cf5d81cba private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1382,6 +1383,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1457,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/0197-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch index cb0b0629f3..9d5d75ac1d 100644 --- a/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 135ce8822ed7e3d6182755deca37a2c0531960c6..6a85de8af9b260e92b4ccffa2ae3503c return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c5fc242df9b0bf4d79a091105b7b113d801bf05..3c6a1dfe949d8c7347ad4990a5e148b74445a8d2 100644 +index a56818870503b2694d9e4dd232b91e1c6a54333f..1e2860c910db8b2b6a73a67d040528df2c44f5f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2765,6 +2765,8 @@ public class PurpurWorldConfig { +@@ -2839,6 +2839,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 6c5fc242df9b0bf4d79a091105b7b113d801bf05..3c6a1dfe949d8c7347ad4990a5e148b7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2780,6 +2782,8 @@ public class PurpurWorldConfig { +@@ -2854,6 +2856,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/0198-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch index 723276f7fd..b2bd66c202 100644 --- a/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index 6469f5e25673b4e20cf0b520b28b14b2eda9130c..9e4146ecd36ff2698ee951660ed88290 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c6a1dfe949d8c7347ad4990a5e148b74445a8d2..b96a936a584c21832a7890716743f1c918f2264d 100644 +index 1e2860c910db8b2b6a73a67d040528df2c44f5f5..5cbbc7e818ed2e82a2ab17d7f3be35f2fe8c3c21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -940,9 +940,13 @@ public class PurpurWorldConfig { +@@ -1014,9 +1014,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch index 7cfeab39c3..468e6822de 100644 --- a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index d2640173f3eca484123eb7bc9f6c4f796c9178fb..73c967330cc793acc029c17f037d985e // 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 b96a936a584c21832a7890716743f1c918f2264d..70b2bce9096d2e5486ee7932bada442a02b460a4 100644 +index 5cbbc7e818ed2e82a2ab17d7f3be35f2fe8c3c21..b7e145289e241c0d2e02d90eafe3f2039be794c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2610,6 +2610,7 @@ public class PurpurWorldConfig { +@@ -2684,6 +2684,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index b96a936a584c21832a7890716743f1c918f2264d..70b2bce9096d2e5486ee7932bada442a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2631,6 +2632,7 @@ public class PurpurWorldConfig { +@@ -2705,6 +2706,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/0200-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch index a37028a2c6..fae821dd40 100644 --- a/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index a9629a102c4fa4e5720e63fcf4590e9231426c62..89c0006c06098e0d09a259ea8415d55b return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70b2bce9096d2e5486ee7932bada442a02b460a4..80f13907f068fc6c52595ea3cf93c1a4d5d03b69 100644 +index b7e145289e241c0d2e02d90eafe3f2039be794c5..3dd2e8c271bbd24f2b4712934fc19a982ed4d1d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -771,6 +771,11 @@ public class PurpurWorldConfig { +@@ -845,6 +845,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0202-Conduit-behavior-configuration.patch b/patches/server/0202-Conduit-behavior-configuration.patch index f7f2ad4a04..e80543009b 100644 --- a/patches/server/0202-Conduit-behavior-configuration.patch +++ b/patches/server/0202-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 073bd3a0c0d06269738b406b8de08db99e914f8d..029b938936289db6e2b202e1e307cf8d0fa56ec1 100644 +index 3deab8fff2c67fdc47db8c739a29173d65b13bbf..3252984ac8bf8849f99f40182e8cb24a01ffe7f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2831,4 +2831,27 @@ public class PurpurWorldConfig { +@@ -2905,4 +2905,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0203-Cauldron-fill-chances.patch b/patches/server/0203-Cauldron-fill-chances.patch index 40d319d81d..0263f152c9 100644 --- a/patches/server/0203-Cauldron-fill-chances.patch +++ b/patches/server/0203-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index bd22d3fdecbc992b11073a74d854b7d1b43c3f6a..0a3b97f18abcc9b385c9efd5a30f3e2c if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 029b938936289db6e2b202e1e307cf8d0fa56ec1..b27849dbddadf4388e5909b8fe74bcdab20c552f 100644 +index 3252984ac8bf8849f99f40182e8cb24a01ffe7f1..2f5662582492573aef4efee54def5921be7351ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2854,4 +2854,15 @@ public class PurpurWorldConfig { +@@ -2928,4 +2928,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0205-Shulker-change-color-with-dye.patch b/patches/server/0205-Shulker-change-color-with-dye.patch index ab74804896..51d580078e 100644 --- a/patches/server/0205-Shulker-change-color-with-dye.patch +++ b/patches/server/0205-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index bf3c02e78df66ca57773d667350197220df5d2d1..47abc81aa04774abeb97c912cd118bba 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 46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034..a0ba55821e2d2a0c78c06e5756d8a591af85a536 100644 +index 9bc0c44fa2f02596b716f4c180178b419e6c1194..f9b529da8e9367c3a7c9d89eb16760bc691ea59d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2170,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2244,6 +2244,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 46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034..a0ba55821e2d2a0c78c06e5756d8a591 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2186,6 +2187,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2261,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/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index ebc7deca6d..04950a31a5 100644 --- a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index 1c7bb504a576568bd275b4f1373208d37d1419e5..3d48293c34fa37ba5091c6058dadb32a public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8fe41200b26c0a17b6b65178aa858a74494471a6..0be19b3fc5fa6af23a3930a63e62199dffd538ea 100644 +index f75b12f80e02c2b85c55c41096b4ee4759ce63b0..767659256e391854c0cd3035f138d86bbcaf6949 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -731,6 +731,11 @@ public class PurpurWorldConfig { +@@ -805,6 +805,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -60,7 +60,7 @@ index 8fe41200b26c0a17b6b65178aa858a74494471a6..0be19b3fc5fa6af23a3930a63e62199d public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -868,6 +873,11 @@ public class PurpurWorldConfig { +@@ -942,6 +947,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch index f07fdbbe23..8da2f38eaf 100644 --- a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d829298 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 c06d51200346d524a81e2d7a735db668da16c580..30761aaa2afe239f9233d5afee0252f53cf07086 100644 +index 857df6dd4d1d598857d977107dcabbb25307ceab..727a70ef18192e27736ecdd6775711a17f8ce79b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1268,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1342,6 +1342,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index c06d51200346d524a81e2d7a735db668da16c580..30761aaa2afe239f9233d5afee0252f5 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1282,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1357,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/0212-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch index b8d9187e62..51385c2b52 100644 --- a/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch @@ -57,10 +57,10 @@ index f76b0d92150fd985a8fc699f6f884527d589dfd3..3c12e179861b5514e081d0db1664f717 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30761aaa2afe239f9233d5afee0252f53cf07086..3c4b6fed063a7ffcdf8f982e42c4599a129fb406 100644 +index 727a70ef18192e27736ecdd6775711a17f8ce79b..e967ce42a54d97f28e50509167c7c7ac693a285b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1217,7 +1217,14 @@ public class PurpurWorldConfig { +@@ -1291,7 +1291,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -75,7 +75,7 @@ index 30761aaa2afe239f9233d5afee0252f53cf07086..3c4b6fed063a7ffcdf8f982e42c4599a cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1230,6 +1237,8 @@ public class PurpurWorldConfig { +@@ -1304,6 +1311,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/0213-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch index d8d351f8d7..4f0823d95c 100644 --- a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 29916aa09d867ef3fa4dc8248b174bf8f97853b7..f78c41833169264fabc76d13bb4b9a89 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c4b6fed063a7ffcdf8f982e42c4599a129fb406..db9cb3292814b188abac8b1b9fdce1e5d7c4620a 100644 +index e967ce42a54d97f28e50509167c7c7ac693a285b..83e4255059ca68f1fef3a8915662db28a98109b3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -750,6 +750,7 @@ public class PurpurWorldConfig { +@@ -824,6 +824,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 3c4b6fed063a7ffcdf8f982e42c4599a129fb406..db9cb3292814b188abac8b1b9fdce1e5 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -760,6 +761,7 @@ public class PurpurWorldConfig { +@@ -834,6 +835,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0214-Halloween-options-and-optimizations.patch b/patches/server/0214-Halloween-options-and-optimizations.patch index b8c741a19f..45abb5be1f 100644 --- a/patches/server/0214-Halloween-options-and-optimizations.patch +++ b/patches/server/0214-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 9b1ae2fa1681f1212b6a09d5b10b16634ce65470..728f4f2d7c37e253b0dab752f627a7b6 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 db9cb3292814b188abac8b1b9fdce1e5d7c4620a..9c2fc6c8d044c1f064010d856fac1b55626d96cb 100644 +index 83e4255059ca68f1fef3a8915662db28a98109b3..285ea8571af68d86579e786912f1145dc0b83955 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1610,6 +1610,13 @@ public class PurpurWorldConfig { +@@ -1684,6 +1684,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0217-Campfire-option-for-lit-when-placed.patch b/patches/server/0217-Campfire-option-for-lit-when-placed.patch index 8354272188..c5787e4d54 100644 --- a/patches/server/0217-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0217-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 7302d07c6ff69608e75ac52fdb19f2ec1d105129..35e2f279d358201384ff74fd767df18f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c2fc6c8d044c1f064010d856fac1b55626d96cb..b5cf141a85b2ccb333f84f462ae484a8c7291efd 100644 +index 285ea8571af68d86579e786912f1145dc0b83955..a7beb70988183ddcaf6bb2ef846eb9c640af46b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -793,6 +793,11 @@ public class PurpurWorldConfig { +@@ -867,6 +867,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch index fc0276bb88..3b902880d1 100644 --- a/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 6a85de8af9b260e92b4ccffa2ae3503cd29b0b98..faf03e2c69b6b4ee7d7425322b5b1997 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2609ee031f3506c1c3c8a0725d5f19bcf680805..061e619a0c9a60a57faf1fe53a2533d73912e927 100644 +index aa8f7692a2638b176e9db935bf1331ee09fc9993..ca922a1805810dab8a225c30f9bc93c7e5347ad2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2831,6 +2831,7 @@ public class PurpurWorldConfig { +@@ -2905,6 +2905,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index d2609ee031f3506c1c3c8a0725d5f19bcf680805..061e619a0c9a60a57faf1fe53a2533d7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2848,6 +2849,7 @@ public class PurpurWorldConfig { +@@ -2922,6 +2923,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/0221-Signs-allow-color-codes.patch b/patches/server/0221-Signs-allow-color-codes.patch index b6bc6dcf4a..e0291c4ef9 100644 --- a/patches/server/0221-Signs-allow-color-codes.patch +++ b/patches/server/0221-Signs-allow-color-codes.patch @@ -84,10 +84,10 @@ index bc01970c5ef9cde4a75394d6977837e924a38463..642e81d7ce763e3f983c83c967f72041 public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2129e850a60b6606a1444f16e40e5baea449c93..db741a6bdcba63c6f716c6093d3ddbc8e2533587 100644 +index 72c6b244e358aceffd934e1224952b459940e608..d5ce0eda09bfa4b6e708b5468697102cc853cfc7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -968,6 +968,11 @@ public class PurpurWorldConfig { +@@ -1042,6 +1042,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0223-Mobs-always-drop-experience.patch b/patches/server/0223-Mobs-always-drop-experience.patch index e628a8a3d4..5be20c9d85 100644 --- a/patches/server/0223-Mobs-always-drop-experience.patch +++ b/patches/server/0223-Mobs-always-drop-experience.patch @@ -373,7 +373,7 @@ index b16d075581a352714f86f1b87805f24c9e336aa3..87b6f6b10ba6e3d9c6a42298a2019a52 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 5c082d99b54f33a3f640172f86f96990f654fc38..7811bb733ea5e5ca16d13b70c0a7a5893ab2e7ba 100644 +index cc1ccef921e70c33e5d6acbd73d5eecc4ea99064..8f891e9fd9fc0bf4a9c022a3415b371cea9b92fa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -118,6 +118,11 @@ public class Turtle extends Animal { @@ -1157,10 +1157,10 @@ index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f8176 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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce17971030e3a2 100644 +index d5ce0eda09bfa4b6e708b5468697102cc853cfc7..ecf28b77b6d899827d6f35681bfdc1bb5b993dc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1035,12 +1035,14 @@ public class PurpurWorldConfig { +@@ -1109,12 +1109,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean batRidable = false; -@@ -1056,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1130,6 +1132,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1075,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1149,6 +1152,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean beeRidable = false; -@@ -1086,6 +1090,7 @@ public class PurpurWorldConfig { +@@ -1160,6 +1164,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1101,6 +1106,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1180,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean blazeRidable = false; -@@ -1109,6 +1115,7 @@ public class PurpurWorldConfig { +@@ -1183,6 +1189,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1121,6 +1128,7 @@ public class PurpurWorldConfig { +@@ -1195,6 +1202,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean camelRidableInWater = false; -@@ -1152,6 +1160,7 @@ public class PurpurWorldConfig { +@@ -1226,6 +1234,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1172,6 +1181,7 @@ public class PurpurWorldConfig { +@@ -1246,6 +1255,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean caveSpiderRidable = false; -@@ -1179,6 +1189,7 @@ public class PurpurWorldConfig { +@@ -1253,6 +1263,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1190,6 +1201,7 @@ public class PurpurWorldConfig { +@@ -1264,6 +1275,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean chickenRidable = false; -@@ -1199,6 +1211,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1285,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1212,12 +1225,14 @@ public class PurpurWorldConfig { +@@ -1286,12 +1299,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1228,6 +1243,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1317,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean cowRidable = false; -@@ -1239,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1313,6 +1329,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1259,6 +1276,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1350,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean creeperRidable = false; -@@ -1271,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1363,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1287,6 +1306,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1380,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean dolphinRidable = false; -@@ -1298,6 +1318,7 @@ public class PurpurWorldConfig { +@@ -1372,6 +1392,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1313,6 +1334,7 @@ public class PurpurWorldConfig { +@@ -1387,6 +1408,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean donkeyRidableInWater = false; -@@ -1324,6 +1346,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1420,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1341,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1438,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean drownedRidable = false; -@@ -1353,6 +1377,7 @@ public class PurpurWorldConfig { +@@ -1427,6 +1451,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1369,12 +1394,14 @@ public class PurpurWorldConfig { +@@ -1443,12 +1468,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1385,6 +1412,7 @@ public class PurpurWorldConfig { +@@ -1459,6 +1486,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean enderDragonRidable = false; -@@ -1430,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1504,6 +1532,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1453,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1556,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean endermiteRidable = false; -@@ -1460,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1534,6 +1564,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1471,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1545,6 +1576,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean evokerRidable = false; -@@ -1479,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1553,6 +1585,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1491,6 +1524,7 @@ public class PurpurWorldConfig { +@@ -1565,6 +1598,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean foxRidable = false; -@@ -1501,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1575,6 +1609,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1515,6 +1550,7 @@ public class PurpurWorldConfig { +@@ -1589,6 +1624,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean frogRidable = false; -@@ -1536,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1610,6 +1646,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1548,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1659,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean giantRidable = false; -@@ -1561,6 +1599,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1673,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1582,6 +1621,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1695,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean glowSquidRidable = false; -@@ -1589,12 +1629,14 @@ public class PurpurWorldConfig { +@@ -1663,12 +1703,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean goatRidable = false; -@@ -1603,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1719,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1610,12 +1653,14 @@ public class PurpurWorldConfig { +@@ -1684,12 +1727,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1626,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1700,6 +1745,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean forceHalloweenSeason = false; -@@ -1641,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1653,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1727,6 +1774,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean horseRidableInWater = false; -@@ -1664,6 +1712,7 @@ public class PurpurWorldConfig { +@@ -1738,6 +1786,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1681,6 +1730,7 @@ public class PurpurWorldConfig { +@@ -1755,6 +1804,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean huskRidable = false; -@@ -1692,6 +1742,7 @@ public class PurpurWorldConfig { +@@ -1766,6 +1816,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1707,6 +1758,7 @@ public class PurpurWorldConfig { +@@ -1781,6 +1832,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean illusionerRidable = false; -@@ -1716,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1790,6 +1842,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1733,6 +1786,7 @@ public class PurpurWorldConfig { +@@ -1807,6 +1860,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean ironGolemRidable = false; -@@ -1743,6 +1797,7 @@ public class PurpurWorldConfig { +@@ -1817,6 +1871,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1757,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1886,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean llamaRidable = false; -@@ -1771,6 +1827,7 @@ public class PurpurWorldConfig { +@@ -1845,6 +1901,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1791,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1922,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean magmaCubeRidable = false; -@@ -1801,6 +1859,7 @@ public class PurpurWorldConfig { +@@ -1875,6 +1933,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1815,6 +1874,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +1948,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean mooshroomRidable = false; -@@ -1823,6 +1883,7 @@ public class PurpurWorldConfig { +@@ -1897,6 +1957,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1835,6 +1896,7 @@ public class PurpurWorldConfig { +@@ -1909,6 +1970,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean muleRidableInWater = false; -@@ -1846,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1920,6 +1982,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1863,6 +1926,7 @@ public class PurpurWorldConfig { +@@ -1937,6 +2000,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean ocelotRidable = false; -@@ -1871,6 +1935,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +2009,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1883,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1957,6 +2022,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean pandaRidable = false; -@@ -1891,6 +1957,7 @@ public class PurpurWorldConfig { +@@ -1965,6 +2031,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1903,6 +1970,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2044,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean parrotRidable = false; -@@ -1912,6 +1980,7 @@ public class PurpurWorldConfig { +@@ -1986,6 +2054,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1925,6 +1994,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2068,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean phantomRidable = false; -@@ -1952,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -2026,6 +2096,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1987,6 +2058,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2132,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean pigRidable = false; -@@ -1996,6 +2068,7 @@ public class PurpurWorldConfig { +@@ -2070,6 +2142,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2009,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -2083,6 +2156,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean piglinRidable = false; -@@ -2018,6 +2092,7 @@ public class PurpurWorldConfig { +@@ -2092,6 +2166,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2031,6 +2106,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2180,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean piglinBruteRidable = false; -@@ -2038,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2112,6 +2188,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2049,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2200,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean pillagerRidable = false; -@@ -2057,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2131,6 +2209,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2069,6 +2148,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2222,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean polarBearRidable = false; -@@ -2079,6 +2159,7 @@ public class PurpurWorldConfig { +@@ -2153,6 +2233,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2094,12 +2175,14 @@ public class PurpurWorldConfig { +@@ -2168,12 +2249,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2110,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2184,6 +2267,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean rabbitRidable = false; -@@ -2121,6 +2205,7 @@ public class PurpurWorldConfig { +@@ -2195,6 +2279,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2136,6 +2221,7 @@ public class PurpurWorldConfig { +@@ -2210,6 +2295,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean ravagerRidable = false; -@@ -2145,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2219,6 +2305,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2174,12 +2261,14 @@ public class PurpurWorldConfig { +@@ -2248,12 +2335,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2190,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2264,6 +2353,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean sheepRidable = false; -@@ -2199,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2273,6 +2363,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2212,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2377,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean shulkerRidable = false; -@@ -2225,6 +2317,7 @@ public class PurpurWorldConfig { +@@ -2299,6 +2391,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2242,6 +2335,7 @@ public class PurpurWorldConfig { +@@ -2316,6 +2409,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean silverfishRidable = false; -@@ -2250,6 +2344,7 @@ public class PurpurWorldConfig { +@@ -2324,6 +2418,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2262,6 +2357,7 @@ public class PurpurWorldConfig { +@@ -2336,6 +2431,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean skeletonRidable = false; -@@ -2269,6 +2365,7 @@ public class PurpurWorldConfig { +@@ -2343,6 +2439,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2280,6 +2377,7 @@ public class PurpurWorldConfig { +@@ -2354,6 +2451,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean skeletonHorseRidable = false; -@@ -2292,6 +2390,7 @@ public class PurpurWorldConfig { +@@ -2366,6 +2464,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2309,6 +2408,7 @@ public class PurpurWorldConfig { +@@ -2383,6 +2482,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean slimeRidable = false; -@@ -2319,6 +2419,7 @@ public class PurpurWorldConfig { +@@ -2393,6 +2493,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2333,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2407,6 +2508,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean snowGolemRidable = false; -@@ -2348,6 +2450,7 @@ public class PurpurWorldConfig { +@@ -2422,6 +2524,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2367,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2441,6 +2544,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean snifferRidable = false; -@@ -2389,6 +2493,7 @@ public class PurpurWorldConfig { +@@ -2463,6 +2567,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2402,6 +2507,7 @@ public class PurpurWorldConfig { +@@ -2476,6 +2581,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean spiderRidable = false; -@@ -2409,6 +2515,7 @@ public class PurpurWorldConfig { +@@ -2483,6 +2589,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2420,6 +2527,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2601,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean strayRidable = false; -@@ -2427,6 +2535,7 @@ public class PurpurWorldConfig { +@@ -2501,6 +2609,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2438,6 +2547,7 @@ public class PurpurWorldConfig { +@@ -2512,6 +2621,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean striderRidable = false; -@@ -2447,6 +2557,7 @@ public class PurpurWorldConfig { +@@ -2521,6 +2631,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2460,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2534,6 +2645,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean tadpoleRidable = false; -@@ -2482,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2556,6 +2668,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2501,12 +2614,14 @@ public class PurpurWorldConfig { +@@ -2575,12 +2688,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2517,6 +2632,7 @@ public class PurpurWorldConfig { +@@ -2591,6 +2706,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean turtleRidable = false; -@@ -2525,6 +2641,7 @@ public class PurpurWorldConfig { +@@ -2599,6 +2715,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2537,6 +2654,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2728,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean vexRidable = false; -@@ -2545,6 +2663,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2737,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2557,6 +2676,7 @@ public class PurpurWorldConfig { +@@ -2631,6 +2750,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean villagerRidable = false; -@@ -2572,6 +2692,7 @@ public class PurpurWorldConfig { +@@ -2646,6 +2766,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2591,6 +2712,7 @@ public class PurpurWorldConfig { +@@ -2665,6 +2786,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean vindicatorRidable = false; -@@ -2599,6 +2721,7 @@ public class PurpurWorldConfig { +@@ -2673,6 +2795,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2611,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2685,6 +2808,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean wanderingTraderRidable = false; -@@ -2621,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2695,6 +2819,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2635,6 +2760,7 @@ public class PurpurWorldConfig { +@@ -2709,6 +2834,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean wardenRidable = false; -@@ -2651,6 +2777,7 @@ public class PurpurWorldConfig { +@@ -2725,6 +2851,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2662,6 +2789,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2863,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean witherRidable = false; -@@ -2676,6 +2804,7 @@ public class PurpurWorldConfig { +@@ -2750,6 +2878,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2698,6 +2827,7 @@ public class PurpurWorldConfig { +@@ -2772,6 +2901,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean witherSkeletonRidable = false; -@@ -2705,6 +2835,7 @@ public class PurpurWorldConfig { +@@ -2779,6 +2909,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2716,6 +2847,7 @@ public class PurpurWorldConfig { +@@ -2790,6 +2921,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean wolfRidable = false; -@@ -2727,6 +2859,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2933,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2746,6 +2879,7 @@ public class PurpurWorldConfig { +@@ -2820,6 +2953,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zoglinRidable = false; -@@ -2753,6 +2887,7 @@ public class PurpurWorldConfig { +@@ -2827,6 +2961,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2764,6 +2899,7 @@ public class PurpurWorldConfig { +@@ -2838,6 +2973,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombieRidable = false; -@@ -2777,6 +2913,7 @@ public class PurpurWorldConfig { +@@ -2851,6 +2987,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2794,6 +2931,7 @@ public class PurpurWorldConfig { +@@ -2868,6 +3005,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombieHorseRidable = false; -@@ -2807,6 +2945,7 @@ public class PurpurWorldConfig { +@@ -2881,6 +3019,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2825,6 +2964,7 @@ public class PurpurWorldConfig { +@@ -2899,6 +3038,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombieVillagerRidable = false; -@@ -2839,6 +2979,7 @@ public class PurpurWorldConfig { +@@ -2913,6 +3053,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2857,6 +2998,7 @@ public class PurpurWorldConfig { +@@ -2931,6 +3072,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 db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombifiedPiglinRidable = false; -@@ -2869,6 +3011,7 @@ public class PurpurWorldConfig { +@@ -2943,6 +3085,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2885,6 +3028,7 @@ public class PurpurWorldConfig { +@@ -2959,6 +3102,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/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 394f50e737..fb5d948e2d 100644 --- a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,7 +74,7 @@ index 0fc333f240d6918e841a9221be42973839408802..7328764abb0790b389d396179db32f4a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 788cbfb4fddbede2788604bdd8ce17971030e3a2..1b556e774e5a2ddf1741ec6826638ed66f67523f 100644 +index ecf28b77b6d899827d6f35681bfdc1bb5b993dc1..476545737acdb0da8e5f5def12164c7f83cbaa80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -539,6 +539,8 @@ public class PurpurWorldConfig { @@ -86,7 +86,7 @@ index 788cbfb4fddbede2788604bdd8ce17971030e3a2..1b556e774e5a2ddf1741ec6826638ed6 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -732,6 +734,8 @@ public class PurpurWorldConfig { +@@ -806,6 +808,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch index 1ce31283f8..065d5ab551 100644 --- a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index f2d0c67709e38209a8a02e98f4392b9e0a53c211..fb477c3c594bb81e92ae0c606635c309 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b556e774e5a2ddf1741ec6826638ed66f67523f..f080154f5a2782ae7bd7b68cbb1f3caf4e68f6b9 100644 +index 476545737acdb0da8e5f5def12164c7f83cbaa80..375d1deef92f935d8f32166e3a17a84370ad1dcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2294,6 +2294,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2368,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 1b556e774e5a2ddf1741ec6826638ed66f67523f..f080154f5a2782ae7bd7b68cbb1f3caf private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2308,6 +2309,7 @@ public class PurpurWorldConfig { +@@ -2382,6 +2383,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/0228-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch index e16f3b8027..7f835ee822 100644 --- a/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 44bb9930313cae9d150cc08cbdcced10a35bd07d..9756c84e073d9e99ade0ee94c586b8e0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f080154f5a2782ae7bd7b68cbb1f3caf4e68f6b9..f607d41ffa51c00cb9edc70545e3d55fdf56f8db 100644 +index 375d1deef92f935d8f32166e3a17a84370ad1dcd..d31aa9b30124832fbc010299b8a24c67624ac6f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1002,11 +1002,13 @@ public class PurpurWorldConfig { +@@ -1076,11 +1076,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0229-Mob-head-visibility-percent.patch b/patches/server/0229-Mob-head-visibility-percent.patch index 1cc1608e6c..f352e546bf 100644 --- a/patches/server/0229-Mob-head-visibility-percent.patch +++ b/patches/server/0229-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index cbf14a9f6c4059ac2246d840ff901113fb03f8cc..ccf94ec8c0fcff5d75365274f662ff24 // 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 f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9ea9aa4c3 100644 +index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d943ba25b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1296,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1370,6 +1370,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1313,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1387,6 +1388,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 f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 } public boolean dolphinRidable = false; -@@ -2099,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -2173,6 +2175,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2113,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2190,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 f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 } public boolean piglinBruteRidable = false; -@@ -2374,6 +2378,7 @@ public class PurpurWorldConfig { +@@ -2448,6 +2452,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2386,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2460,6 +2465,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 f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 } public boolean skeletonHorseRidable = false; -@@ -2922,6 +2928,7 @@ public class PurpurWorldConfig { +@@ -2996,6 +3002,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2940,6 +2947,7 @@ public class PurpurWorldConfig { +@@ -3014,6 +3021,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/0232-Stop-bees-from-dying-after-stinging.patch b/patches/server/0232-Stop-bees-from-dying-after-stinging.patch index 863c6a9ffc..e14cbbdc83 100644 --- a/patches/server/0232-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0232-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 6d7b8c9f9bfe296263f1752f485dcf8f53af8142..0a4ca865d1e41efca0eb8287c833e642 ++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 e1cb805d20768559db3452a83392f2e9ea9aa4c3..9b6309d247b88a73e26b66a65412af5407fcd640 100644 +index 3760848e35ce82a546fb406ed383be8d943ba25b..62c916dbb715192e9ec56df95672f070e14aea4c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1097,6 +1097,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1171,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index e1cb805d20768559db3452a83392f2e9ea9aa4c3..9b6309d247b88a73e26b66a65412af54 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1113,6 +1114,7 @@ public class PurpurWorldConfig { +@@ -1187,6 +1188,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/0234-Configurable-farmland-trample-height.patch b/patches/server/0234-Configurable-farmland-trample-height.patch index 7aae7d3df3..11c7214d4e 100644 --- a/patches/server/0234-Configurable-farmland-trample-height.patch +++ b/patches/server/0234-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 5c93cf7f97ecf4fba2c905b293ca7d21d1424f30..c4eca9db159d6a581d863558ebc3008d org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b6309d247b88a73e26b66a65412af5407fcd640..13b1957f4338cc6bb406370e91ee58d7d4002148 100644 +index 62c916dbb715192e9ec56df95672f070e14aea4c..2f381b23c4193e324ebf04e96f98ae16f457120a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -885,6 +885,7 @@ public class PurpurWorldConfig { +@@ -959,6 +959,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 9b6309d247b88a73e26b66a65412af5407fcd640..13b1957f4338cc6bb406370e91ee58d7 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -892,6 +893,7 @@ public class PurpurWorldConfig { +@@ -966,6 +967,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0237-Configurable-phantom-size.patch b/patches/server/0237-Configurable-phantom-size.patch index 5461c23e2e..42cd9b62eb 100644 --- a/patches/server/0237-Configurable-phantom-size.patch +++ b/patches/server/0237-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17d12dceec818dfbfb9bccf263295840e2c6bc04..599b52cdbccd3b58d0e33d726590b38dece45f96 100644 +index adc30acd3cead8f557f1016ed5e05edbf2857200..0cb3e06bab1b897a98fd0a05c65cf025c0356273 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2039,6 +2039,8 @@ public class PurpurWorldConfig { +@@ -2113,6 +2113,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 17d12dceec818dfbfb9bccf263295840e2c6bc04..599b52cdbccd3b58d0e33d726590b38d private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2075,6 +2077,13 @@ public class PurpurWorldConfig { +@@ -2149,6 +2151,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/0240-Configurable-minimum-demand-for-trades.patch b/patches/server/0240-Configurable-minimum-demand-for-trades.patch index 4920a4a88f..3534744771 100644 --- a/patches/server/0240-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0240-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 599b52cdbccd3b58d0e33d726590b38dece45f96..5f57614f37c63e967ee1866bb11de79a1ccc9e24 100644 +index 0cb3e06bab1b897a98fd0a05c65cf025c0356273..cae769fde9d58d2a526af769e49d4d63b7bcb3f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2724,6 +2724,7 @@ public class PurpurWorldConfig { +@@ -2798,6 +2798,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 599b52cdbccd3b58d0e33d726590b38dece45f96..5f57614f37c63e967ee1866bb11de79a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2744,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2818,6 +2819,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/0241-Lobotomize-stuck-villagers.patch b/patches/server/0241-Lobotomize-stuck-villagers.patch index 74b630a13e..ade6ab1289 100644 --- a/patches/server/0241-Lobotomize-stuck-villagers.patch +++ b/patches/server/0241-Lobotomize-stuck-villagers.patch @@ -105,10 +105,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f57614f37c63e967ee1866bb11de79a1ccc9e24..7f8851967625d9d3fd94d09af72888999a807668 100644 +index cae769fde9d58d2a526af769e49d4d63b7bcb3f7..cd5dcafe602e494ded07106224857dcea37b5525 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2725,6 +2725,8 @@ public class PurpurWorldConfig { +@@ -2799,6 +2799,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 5f57614f37c63e967ee1866bb11de79a1ccc9e24..7f8851967625d9d3fd94d09af7288899 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2746,6 +2748,17 @@ public class PurpurWorldConfig { +@@ -2820,6 +2822,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/0242-Option-for-villager-display-trade-item.patch b/patches/server/0242-Option-for-villager-display-trade-item.patch index c7e5db8e21..1a6b86b882 100644 --- a/patches/server/0242-Option-for-villager-display-trade-item.patch +++ b/patches/server/0242-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f8851967625d9d3fd94d09af72888999a807668..00fde25fb74499e83039a812c6f525ceaecde0b0 100644 +index cd5dcafe602e494ded07106224857dcea37b5525..4586122457cdbf707cecb0d95110ac64e45a8184 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2727,6 +2727,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2801,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 7f8851967625d9d3fd94d09af72888999a807668..00fde25fb74499e83039a812c6f525ce private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2759,6 +2760,7 @@ public class PurpurWorldConfig { +@@ -2833,6 +2834,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 4f2afdd214..a7e7961cae 100644 --- a/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 827912174ee08cd19249797d351887149b25c880..5b02848ea9f14060353014cada2d5539 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00fde25fb74499e83039a812c6f525ceaecde0b0..3cdfee20a6521c056d20a95b2bf08a7b351245e6 100644 +index 4586122457cdbf707cecb0d95110ac64e45a8184..f00325dff01364cba7aa2f15e945a32a636426ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -989,8 +989,10 @@ public class PurpurWorldConfig { +@@ -1063,8 +1063,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0245-Anvil-repair-damage-options.patch b/patches/server/0245-Anvil-repair-damage-options.patch index 737b3bc185..ec2f42babd 100644 --- a/patches/server/0245-Anvil-repair-damage-options.patch +++ b/patches/server/0245-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76 return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f39c1b722924bb1d8a3a6faaa1000391f36036f..ccf92e6d5374003b590f578a7168b09c61824720 100644 +index 29f353f08c968b6c329fcd29e07d3ba3087884df..e52417b3b696e1068b484daa4c73fe535966de22 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -746,9 +746,13 @@ public class PurpurWorldConfig { +@@ -820,9 +820,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch index d8b41af085..27b5071eae 100644 --- a/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 9756c84e073d9e99ade0ee94c586b8e0fa426138..2c0dcfc916f0845dc830a7ac9ffc828d 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 ccf92e6d5374003b590f578a7168b09c61824720..0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c 100644 +index e52417b3b696e1068b484daa4c73fe535966de22..39f79210e80825df5a837e5e319f8db0c0e67280 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1017,12 +1017,14 @@ public class PurpurWorldConfig { +@@ -1091,12 +1091,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch index 48f8aa53a4..a3a279fbeb 100644 --- a/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 52650c912b72de99a23eebf04c9a63945f04359c..a46fc13b3072b65dc9284ece6cbf63a7 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 0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c..3d94ddfe64251d7a154747cd3ab3fc7d703e0c05 100644 +index 39f79210e80825df5a837e5e319f8db0c0e67280..1d12f5ad5131a71dbf6dba78e31e285a6cfb1a54 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2738,6 +2738,8 @@ public class PurpurWorldConfig { +@@ -2812,6 +2812,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c..3d94ddfe64251d7a154747cd3ab3fc7d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2771,6 +2773,8 @@ public class PurpurWorldConfig { +@@ -2845,6 +2847,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/0250-Stonecutter-damage.patch b/patches/server/0250-Stonecutter-damage.patch index 59f9b20ae9..7c6064b98e 100644 --- a/patches/server/0250-Stonecutter-damage.patch +++ b/patches/server/0250-Stonecutter-damage.patch @@ -90,7 +90,7 @@ index 7702cd386247c1a850bb22ccf8c0724d5bec1020..29ec2f9a35dd73e8a6adf2e4edcfe543 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 4d147845402a26957c905dd600bf0657bb7bd714..e78e809cc7644d5007b149d5940f8cc164a76975 100644 +index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e80bced54 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { @@ -105,10 +105,10 @@ index 4d147845402a26957c905dd600bf0657bb7bd714..e78e809cc7644d5007b149d5940f8cc1 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 3d94ddfe64251d7a154747cd3ab3fc7d703e0c05..6d8b078aba1296ec4b51352a367d80550b5ee1bf 100644 +index 1d12f5ad5131a71dbf6dba78e31e285a6cfb1a54..02eb8f37ccb814df925431280ec34a047592d6d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1012,6 +1012,11 @@ public class PurpurWorldConfig { +@@ -1086,6 +1086,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch index 1e5e78cd56..df2fdcb747 100644 --- a/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 10f5ffacc72a5e0116e2599ca83ee57a5b1ce0eb..31e6468f639de3ed0b25c3bc4ee09333 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d8b078aba1296ec4b51352a367d80550b5ee1bf..dff801d3deaa5fd22a245d0bf7112a2c4f7c4d2b 100644 +index 02eb8f37ccb814df925431280ec34a047592d6d6..b75922d2352a1ceb3ad00cbf6f968edaaea243d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -948,6 +948,13 @@ public class PurpurWorldConfig { +@@ -1022,6 +1022,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0252-Add-config-for-snow-on-blue-ice.patch b/patches/server/0252-Add-config-for-snow-on-blue-ice.patch index b96e811a48..dbb5d023d2 100644 --- a/patches/server/0252-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0252-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dff801d3deaa5fd22a245d0bf7112a2c4f7c4d2b..4b4a2646264b558c56bf91e70a110133fb0997bb 100644 +index b75922d2352a1ceb3ad00cbf6f968edaaea243d9..7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -929,9 +929,11 @@ public class PurpurWorldConfig { +@@ -1003,9 +1003,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0253-Skeletons-eat-wither-roses.patch b/patches/server/0253-Skeletons-eat-wither-roses.patch index 23605e9160..00da6d1ea8 100644 --- a/patches/server/0253-Skeletons-eat-wither-roses.patch +++ b/patches/server/0253-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 4b4a2646264b558c56bf91e70a110133fb0997bb..f36c75217028eea8503c15df710e4cabb8fdd741 100644 +index 7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57..06e7305a4d2def94136a9f1f39e3b3c27124ebdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2420,6 +2420,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2494,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 4b4a2646264b558c56bf91e70a110133fb0997bb..f36c75217028eea8503c15df710e4cab private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2433,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2507,6 +2508,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/0254-Enchantment-Table-Persists-Lapis.patch b/patches/server/0254-Enchantment-Table-Persists-Lapis.patch index 24ba68ad3a..bcda870af8 100644 --- a/patches/server/0254-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0254-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 f36c75217028eea8503c15df710e4cabb8fdd741..c11fe39f7ae131eb2950b618aa9ac8900c916aa3 100644 +index 06e7305a4d2def94136a9f1f39e3b3c27124ebdd..67f442cc85a08a5843763643bc0cb6cfa9097e8f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1455,6 +1455,11 @@ public class PurpurWorldConfig { +@@ -1529,6 +1529,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch index 383d938548..a36dd7719e 100644 --- a/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 09c61eb5ba129e9630a756b452ef6aa61745c533..837c8399b2f490d98ca556e66018bfd4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c11fe39f7ae131eb2950b618aa9ac8900c916aa3..5c5681d74c272ab81370dc5daae485e0e9101adf 100644 +index 67f442cc85a08a5843763643bc0cb6cfa9097e8f..da5dfa53adaa85652e2c5db5fbe14307e9ef20c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -993,6 +993,11 @@ public class PurpurWorldConfig { +@@ -1067,6 +1067,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0258-Config-to-not-let-coral-die.patch b/patches/server/0258-Config-to-not-let-coral-die.patch index e13af0fc35..e57e68bbd7 100644 --- a/patches/server/0258-Config-to-not-let-coral-die.patch +++ b/patches/server/0258-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 8fd8285e07de4a0457da507501e49a807542f3b1..e580c5a141bebdc45893b5abde01e633 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c5681d74c272ab81370dc5daae485e0e9101adf..601452f16c7f41b609cc13026386d6f5d06ac92e 100644 +index da5dfa53adaa85652e2c5db5fbe14307e9ef20c5..a1c95d2a69a8eaedefa90e689d5ce1636648fd1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -830,6 +830,11 @@ public class PurpurWorldConfig { +@@ -904,6 +904,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0269-Add-skeleton-bow-accuracy-option.patch b/patches/server/0269-Add-skeleton-bow-accuracy-option.patch index ae98e0eb6b..3616e37d9f 100644 --- a/patches/server/0269-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0269-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c 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 52cc678de23f370c411933d3f99c31a7acbe2d9b..2957282e6c19fbe38ddb4f8a30ae2d3404d87385 100644 +index c46408be4ae6d764f233963f17b383ea623561ea..1f5225a7fb1a849884483c1bb1a1514b10a2d113 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2440,6 +2440,8 @@ public class PurpurWorldConfig { +@@ -2514,6 +2514,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 52cc678de23f370c411933d3f99c31a7acbe2d9b..2957282e6c19fbe38ddb4f8a30ae2d34 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2454,6 +2456,18 @@ public class PurpurWorldConfig { +@@ -2528,6 +2530,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/0270-Allay-respect-item-NBT.patch b/patches/server/0270-Allay-respect-item-NBT.patch index 6ab6e3e952..6e52cbef15 100644 --- a/patches/server/0270-Allay-respect-item-NBT.patch +++ b/patches/server/0270-Allay-respect-item-NBT.patch @@ -44,10 +44,10 @@ index f9af021350df28f286028099d857f034bc03913b..b3e92d3fb6fbadfc6df236754123bc12 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 2957282e6c19fbe38ddb4f8a30ae2d3404d87385..4cd381104a2ab320feb3984b8f77f9630246c7e4 100644 +index 1f5225a7fb1a849884483c1bb1a1514b10a2d113..c7584f2cd12a75f61ca94100718df200b6c373e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1074,10 +1074,13 @@ public class PurpurWorldConfig { +@@ -1148,10 +1148,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 342e508ef6..23904467d1 100644 --- a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0281-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 48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f..52108909cbe0ea7faa0032f985898c41084cac10 100644 +index e3d9bd8fc246771a6d612d0c834a47c7a3255f74..39726c991874b631545e0a06fa5b06383e7b7115 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1348,6 +1348,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1422,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f..52108909cbe0ea7faa0032f985898c41 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1366,6 +1367,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1441,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/0286-End-Crystal-Cramming.patch b/patches/server/0286-End-Crystal-Cramming.patch index 35e687f754..0dae8b87cf 100644 --- a/patches/server/0286-End-Crystal-Cramming.patch +++ b/patches/server/0286-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 564d17bc460e2a04947ff9676fbf4c8b1569659c..440add62fcfa62d483409e1aecfc9159 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0e25bfd7b345c3ba578191ce6656f041ffb9fd05..8a4a51283bfc37e61c6581bf6e2ddd49e79a3122 100644 +index 7234603063091d3999f71e5d7781c6468665c8f3..8f7f5b89efadc60dc8f95b5b4e002836b758be7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -873,6 +873,7 @@ public class PurpurWorldConfig { +@@ -947,6 +947,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 0e25bfd7b345c3ba578191ce6656f041ffb9fd05..8a4a51283bfc37e61c6581bf6e2ddd49 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -900,6 +901,7 @@ public class PurpurWorldConfig { +@@ -974,6 +975,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index ba5a3cc4b9..0251391a6e 100644 --- a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index a5f9747be5503dd24abd98f11cfa8229448ca3bf..99ef8d7e3ee0ee9777d12ad825e728c3 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a4a51283bfc37e61c6581bf6e2ddd49e79a3122..05b4bd8495451dbd6277946e77737495b58375f8 100644 +index 8f7f5b89efadc60dc8f95b5b4e002836b758be7c..6523578f35da2977567f0011a9f9f9a96b538560 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -772,11 +772,13 @@ public class PurpurWorldConfig { +@@ -846,11 +846,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch index 2c159a893e..4f3034ed74 100644 --- a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index ceaec1776067b7635c3952025f00f13f4ea86c88..8b6c43b0a2fb4b89d6f63716e56074ef + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f3571a1a86b7ec9f10b2a5bf4e2c3f7b0bded7d1..db47c443a765a87d2cabde2d3956909661d65237 100644 +index 2bb310f0a7c94f036c0e849d8a3defb47a115f04..ec46c926e6df9101322df22853d03eba05b48896 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -826,8 +826,20 @@ public class PurpurWorldConfig { +@@ -900,8 +900,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0296-Shears-can-defuse-TNT.patch b/patches/server/0296-Shears-can-defuse-TNT.patch index fe90a9509f..f43459e764 100644 --- a/patches/server/0296-Shears-can-defuse-TNT.patch +++ b/patches/server/0296-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index c3e47426382296d650fa00ce0bc1a82bf23c7877..dfc3e9d2611ce418ac6f6cc5a23bb744 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93f350d5059e9385f4ba344cd24be8ca4d3198e9..0b95401b8d89268a3b7a388acfcaba5b5b679a0e 100644 +index 2c9c5f8e432f076559bdb88e4485399ff74c8cd5..3cefadcca5c0ab367fbb15a1b8565aed8f7e8689 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3214,4 +3214,11 @@ public class PurpurWorldConfig { +@@ -3288,4 +3288,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch index c0699ddaf5..f36aa22725 100644 --- a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf5983 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b95401b8d89268a3b7a388acfcaba5b5b679a0e..637c70fda2d3a82db8e6d831ff13160a05ab2008 100644 +index 3cefadcca5c0ab367fbb15a1b8565aed8f7e8689..8da2d5defa55484dcaf7f448db586b412479fdb6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2027,6 +2027,7 @@ public class PurpurWorldConfig { +@@ -2101,6 +2101,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 0b95401b8d89268a3b7a388acfcaba5b5b679a0e..637c70fda2d3a82db8e6d831ff13160a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2040,6 +2041,7 @@ public class PurpurWorldConfig { +@@ -2114,6 +2115,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 391415caa1..c1da3ff327 100644 --- a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -45,10 +45,10 @@ index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddb piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 637c70fda2d3a82db8e6d831ff13160a05ab2008..4f3f16e90362fb08cfa20441fdc3b7220d10dbb4 100644 +index 8da2d5defa55484dcaf7f448db586b412479fdb6..eeaf4da4dff16d89f5e7ab350b411800c4fbfa88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2196,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2270,6 +2270,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -56,7 +56,7 @@ index 637c70fda2d3a82db8e6d831ff13160a05ab2008..4f3f16e90362fb08cfa20441fdc3b722 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2211,6 +2212,7 @@ public class PurpurWorldConfig { +@@ -2285,6 +2286,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0301-place-end-crystal-on-any-block.patch b/patches/server/0301-place-end-crystal-on-any-block.patch index 7d31a2ed71..09834b69ae 100644 --- a/patches/server/0301-place-end-crystal-on-any-block.patch +++ b/patches/server/0301-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..a9ee4a382118294b43d0ff13ffd5fbe9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4f3f16e90362fb08cfa20441fdc3b7220d10dbb4..96f6186ca9eb1889beefd7b54addc42052f8907a 100644 +index eeaf4da4dff16d89f5e7ab350b411800c4fbfa88..fb7bdaa64002729f9f9cd0fbbd2ae289643628b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -895,6 +895,7 @@ public class PurpurWorldConfig { +@@ -969,6 +969,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 4f3f16e90362fb08cfa20441fdc3b7220d10dbb4..96f6186ca9eb1889beefd7b54addc420 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -923,6 +924,7 @@ public class PurpurWorldConfig { +@@ -997,6 +998,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming);