diff --git a/TODO.md b/TODO.md index 013d45858..51e25a5a6 100644 --- a/TODO.md +++ b/TODO.md @@ -3,7 +3,4 @@ - [ ] test player ridable underwater - [ ] OPTIONAL: custom damage type instead of magic for scissors & stone cutter patch - [ ] re-introduce armor equipable through right-click patch, flip the boolean to follow vanilla feature parity -- [x] flip the boolean in the "display names from item forms of entities to entities" patch to keep feature parity with vanilla - -### once above is complete: -- [ ] make announcement about flipped defaults ("persistent-droppable-entity-display-names", "set-name-visible-when-placing-with-custom-name") +- [ ] flip the boolean in the "display names from item forms of entities to entities" patch to keep feature parity with vanilla diff --git a/patches/server/0105-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0105-Apply-display-names-from-item-forms-of-entities-to-e.patch index 3b67b326a..8fd011f8d 100644 --- a/patches/server/0105-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0105-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -136,14 +136,14 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d7669999bcf294c71c4238ccbeade1cdddd59400..c54c236df83d4c44388155423fb90eb0369859b8 100644 +index eeb5f3d5c108eef5a43dc68f75b4b2147c28f560..8e703215419d865276d53083e88e60d9eb131af5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,8 +99,10 @@ public class PurpurWorldConfig { } public float armorstandStepHeight = 0.0F; -+ public boolean armorstandSetNameVisible = true; ++ public boolean armorstandSetNameVisible = false; private void armorstandSettings() { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); + armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); @@ -154,7 +154,7 @@ index d7669999bcf294c71c4238ccbeade1cdddd59400..c54c236df83d4c44388155423fb90eb0 public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; -+ public boolean persistentDroppableEntityDisplayNames = true; ++ public boolean persistentDroppableEntityDisplayNames = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; diff --git a/patches/server/0106-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0106-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 2fe37c070..922060ca7 100644 --- a/patches/server/0106-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0106-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -16,3 +16,19 @@ index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d834155 if (event.isPersistent() && newEntityLiving instanceof Mob) { ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 8e703215419d865276d53083e88e60d9eb131af5..a4222bab7b624077c76e918f730f1a953eb629a1 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -100,9 +100,11 @@ public class PurpurWorldConfig { + + public float armorstandStepHeight = 0.0F; + public boolean armorstandSetNameVisible = false; ++ public boolean armorstandFixNametags = false; + private void armorstandSettings() { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); + armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); ++ armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags); + } + + public boolean arrowMovementResetsDespawnCounter = true; diff --git a/patches/server/0107-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0107-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 3ae20c134..47a3fb0fd 100644 --- a/patches/server/0107-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0107-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,7 +8,7 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 25e84e17bff6b61b95bf1e54bb9721fa7a61997c..411b82fd1da4643c4405961e4af3e1aa20e7eb55 100644 +index 9f78f0e28aff1c9b77520140d3c24b0c8d9b196d..7dd726eea053c8c5fc5e40972128f0f3f91039be 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -484,7 +484,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -21,10 +21,10 @@ index 25e84e17bff6b61b95bf1e54bb9721fa7a61997c..411b82fd1da4643c4405961e4af3e1aa private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c54c236df83d4c44388155423fb90eb0369859b8..fc04a0053b4846920d2d06f333cf7fe0159432ee 100644 +index a4222bab7b624077c76e918f730f1a953eb629a1..1f45018079de15231473041166ee6f9fcd940f9a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -831,6 +831,7 @@ public class PurpurWorldConfig { +@@ -833,6 +833,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index c54c236df83d4c44388155423fb90eb0369859b8..fc04a0053b4846920d2d06f333cf7fe0 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -842,6 +843,7 @@ public class PurpurWorldConfig { +@@ -844,6 +845,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0108-Add-configurable-snowball-damage.patch b/patches/server/0108-Add-configurable-snowball-damage.patch index 41446b863..293c76402 100644 --- a/patches/server/0108-Add-configurable-snowball-damage.patch +++ b/patches/server/0108-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 6cded52e4627c2b6073fa221fc6d6583f1b2a96d..5827236f351cd0679af764644bb22bb2 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc04a0053b4846920d2d06f333cf7fe0159432ee..74562f7c2dcfe8497c70138052ec67828313be80 100644 +index 1f45018079de15231473041166ee6f9fcd940f9a..5a1c7e187efcfddc1a0b50c45c616b6858446057 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -354,6 +354,11 @@ public class PurpurWorldConfig { +@@ -356,6 +356,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0109-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0109-Changeable-Mob-Left-Handed-Chance.patch index 6a54b9aa3..30f4488b8 100644 --- a/patches/server/0109-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0109-Changeable-Mob-Left-Handed-Chance.patch @@ -18,10 +18,10 @@ index 5bff6bf091a61d1414ca1408960d50ce0d646458..318ad01371bb5e8d53f366a891dc6423 } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74562f7c2dcfe8497c70138052ec67828313be80..4fdc709f78c39e164c063868fa3c949557a1eb63 100644 +index 5a1c7e187efcfddc1a0b50c45c616b6858446057..71858bd4d8987c2da7c67a473c1f60e66494742d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -156,8 +156,10 @@ public class PurpurWorldConfig { +@@ -158,8 +158,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0110-Add-boat-fall-damage-config.patch b/patches/server/0110-Add-boat-fall-damage-config.patch index 92f695d3d..b2d198cdd 100644 --- a/patches/server/0110-Add-boat-fall-damage-config.patch +++ b/patches/server/0110-Add-boat-fall-damage-config.patch @@ -27,10 +27,10 @@ index 8dfc4763df3cd207e7200828f8237f680b47f986..d15b29153d8112ed59ce38ab37142208 if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4fdc709f78c39e164c063868fa3c949557a1eb63..4aaa4fd39c2bd5800f96f9b130512ba865f01175 100644 +index 71858bd4d8987c2da7c67a473c1f60e66494742d..991dae6f29cc919de49533d03478cb3b6c16106d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -112,6 +112,7 @@ public class PurpurWorldConfig { +@@ -114,6 +114,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; @@ -38,7 +38,7 @@ index 4fdc709f78c39e164c063868fa3c949557a1eb63..4aaa4fd39c2bd5800f96f9b130512ba8 public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; -@@ -124,6 +125,7 @@ public class PurpurWorldConfig { +@@ -126,6 +127,7 @@ public class PurpurWorldConfig { private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); diff --git a/patches/server/0111-Snow-Golem-rate-of-fire-config.patch b/patches/server/0111-Snow-Golem-rate-of-fire-config.patch index 53922a4b0..081cdc96d 100644 --- a/patches/server/0111-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0111-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index b6431dbb41163f9ef0d43e96fcf89750c5a6eef7..5ae7f8dcb39cdf9bfc760f47a6745b81 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4aaa4fd39c2bd5800f96f9b130512ba865f01175..dfae18192888107c504fd84ed9cadd82bd255950 100644 +index 3745b401457a60df0f4f6436a52bedc130acca25..01bca5885f0dd14fbb746c635116ac41a2b73bb5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1603,6 +1603,10 @@ public class PurpurWorldConfig { +@@ -1605,6 +1605,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 4aaa4fd39c2bd5800f96f9b130512ba865f01175..dfae18192888107c504fd84ed9cadd82 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1616,6 +1620,10 @@ public class PurpurWorldConfig { +@@ -1618,6 +1622,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0113-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0113-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 8affc98fa..723c77da6 100644 --- a/patches/server/0113-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0113-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -181,10 +181,10 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dfae18192888107c504fd84ed9cadd82bd255950..04e14e37fb9e6cbce8f055f92ce4d869bad4751f 100644 +index 01bca5885f0dd14fbb746c635116ac41a2b73bb5..8896e4b02f1a659561c2462c59ffeb13d419d6e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1798,6 +1798,8 @@ public class PurpurWorldConfig { +@@ -1800,6 +1800,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -193,7 +193,7 @@ index dfae18192888107c504fd84ed9cadd82bd255950..04e14e37fb9e6cbce8f055f92ce4d869 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1812,6 +1814,8 @@ public class PurpurWorldConfig { +@@ -1814,6 +1816,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0114-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0114-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index b1320bef3..52566e929 100644 --- a/patches/server/0114-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0114-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index b5b4cb3fefd769f5d8ec5b60b4b41ffb023d19c5..65d035647f7caf23647ec00beb20a4a2 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 04e14e37fb9e6cbce8f055f92ce4d869bad4751f..434f1b032d251172ccdbc54c02c6ecf79de7aa68 100644 +index 8896e4b02f1a659561c2462c59ffeb13d419d6e8..427e89ea6014bd3668632ef5cda87b59dc97d5f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2042,6 +2042,7 @@ public class PurpurWorldConfig { +@@ -2044,6 +2044,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 04e14e37fb9e6cbce8f055f92ce4d869bad4751f..434f1b032d251172ccdbc54c02c6ecf7 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2056,5 +2057,6 @@ public class PurpurWorldConfig { +@@ -2058,5 +2059,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch index c376aecce..101fa5bc6 100644 --- a/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -222,10 +222,10 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 434f1b032d251172ccdbc54c02c6ecf79de7aa68..3b1de202edbeec5d0ce8fc6b3c117cbf1741ebb6 100644 +index 427e89ea6014bd3668632ef5cda87b59dc97d5f0..0d320ce7d833bbddbecb39b96dddf459f9babaf5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1927,6 +1927,8 @@ public class PurpurWorldConfig { +@@ -1929,6 +1929,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -234,7 +234,7 @@ index 434f1b032d251172ccdbc54c02c6ecf79de7aa68..3b1de202edbeec5d0ce8fc6b3c117cbf public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1938,6 +1940,8 @@ public class PurpurWorldConfig { +@@ -1940,6 +1942,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0116-Configurable-default-collar-color.patch b/patches/server/0116-Configurable-default-collar-color.patch index 64b509e05..5e5690f49 100644 --- a/patches/server/0116-Configurable-default-collar-color.patch +++ b/patches/server/0116-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index a38cea2dead98ffb1a555df7a494d2e12ab504f5..06f2225743e27c7f1f0eb15ee6beedc5 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b1de202edbeec5d0ce8fc6b3c117cbf1741ebb6..8077e4c714645299d2220e511ad7637296bdd7db 100644 +index 0d320ce7d833bbddbecb39b96dddf459f9babaf5..056d74886fc50508de302c75f32e5d541f142a3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -619,6 +619,7 @@ public class PurpurWorldConfig { +@@ -621,6 +621,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index 3b1de202edbeec5d0ce8fc6b3c117cbf1741ebb6..8077e4c714645299d2220e511ad76372 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -633,6 +634,11 @@ public class PurpurWorldConfig { +@@ -635,6 +636,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index 3b1de202edbeec5d0ce8fc6b3c117cbf1741ebb6..8077e4c714645299d2220e511ad76372 } public boolean caveSpiderRidable = false; -@@ -1927,6 +1933,7 @@ public class PurpurWorldConfig { +@@ -1929,6 +1935,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 3b1de202edbeec5d0ce8fc6b3c117cbf1741ebb6..8077e4c714645299d2220e511ad76372 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1940,6 +1947,11 @@ public class PurpurWorldConfig { +@@ -1942,6 +1949,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0117-Phantom-flames-on-swoop.patch b/patches/server/0117-Phantom-flames-on-swoop.patch index 98198f8ba..abe49c38c 100644 --- a/patches/server/0117-Phantom-flames-on-swoop.patch +++ b/patches/server/0117-Phantom-flames-on-swoop.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantom flames on swoop diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index b35d737cf492f16952deff21098e48b6949d98ff..8929860dfe290782268c5fbce8a791b8f9d0af29 100644 +index 223aa8f7f8ea2a15e4dcf62aef3521382c9ab7cd..600ebaaf72f830259eb8843cf96060b82fa00f1d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -244,6 +244,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -17,10 +17,10 @@ index b35d737cf492f16952deff21098e48b6949d98ff..8929860dfe290782268c5fbce8a791b8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8077e4c714645299d2220e511ad7637296bdd7db..fa23106460cab995d65f202bd577055b86796fc6 100644 +index d00cd3297b6524f702a0f251b34ba9bd09d951f6..648716c472887ee24dc3d5fd8a072e511ec9e314 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1297,6 +1297,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1299,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 8077e4c714645299d2220e511ad7637296bdd7db..fa23106460cab995d65f202bd577055b private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1330,6 +1331,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1333,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0118-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0118-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 3ba0abc11..d47d7ea52 100644 --- a/patches/server/0118-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0118-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa23106460cab995d65f202bd577055b86796fc6..f607966acda70096af70186f7b3d3d07ca320fe0 100644 +index 648716c472887ee24dc3d5fd8a072e511ec9e314..9cdbc268c4ca2296d0126a974e1bd04bb67eebdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -423,6 +423,11 @@ public class PurpurWorldConfig { +@@ -425,6 +425,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0120-Striders-give-saddle-back.patch b/patches/server/0120-Striders-give-saddle-back.patch index 7a0c4640a..3ab32d461 100644 --- a/patches/server/0120-Striders-give-saddle-back.patch +++ b/patches/server/0120-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index fbc2e3f0b73608a999619469cd701692cb1cb788..7d10e81669177d0df5c6eba79a2aac46 if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f607966acda70096af70186f7b3d3d07ca320fe0..6bae3ef72f085b2746b64aaec7d4098e122c58e9 100644 +index 84577116234c339e378b8bada2476b2f596ff228..8871243460a9ecb89fa02aba138b5d00d49382b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1701,6 +1701,7 @@ public class PurpurWorldConfig { +@@ -1703,6 +1703,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index f607966acda70096af70186f7b3d3d07ca320fe0..6bae3ef72f085b2746b64aaec7d4098e private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1712,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1714,6 +1715,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0122-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0122-Full-netherite-armor-grants-fire-resistance.patch index f6037a457..5e2fa4402 100644 --- a/patches/server/0122-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0122-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index 7518564208579de9104bdaddcab67db736d263f8..150aaa68340f25c39a9b10eda43e9941 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6bae3ef72f085b2746b64aaec7d4098e122c58e9..7f50c32aff3f0d576d6f46afa889db06c8016ba2 100644 +index 89b0e3753ae2c4728e337ee080d17abc2403040c..1314ab21523e5fa5acdbf24a7c811988f9dbf98b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -295,6 +295,19 @@ public class PurpurWorldConfig { +@@ -297,6 +297,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch index 550a79bb7..03c4f1398 100644 --- a/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch @@ -374,10 +374,22 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e253650a441fe 100644 +index 8f7f57238578409db62286274ed2e33e58d09458..adf0e0f34f7fd4d38e6a801fa3f20dbfe4769c99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -128,8 +128,11 @@ public class PurpurWorldConfig { +@@ -117,8 +117,11 @@ public class PurpurWorldConfig { + public boolean boatsDoFallDamage = true; + public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesCanUsePortals = true; ++ public boolean entitiesPickUpLootBypassMobGriefing = false; ++ public boolean fireballsBypassMobGriefing = false; + public boolean milkCuresBadOmen = true; + public boolean persistentDroppableEntityDisplayNames = false; ++ public boolean projectilesBypassMobGriefing = false; + public double tridentLoyaltyVoidReturnHeight = 0.0D; + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; +@@ -130,8 +133,11 @@ public class PurpurWorldConfig { boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); @@ -389,7 +401,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); -@@ -448,9 +451,11 @@ public class PurpurWorldConfig { +@@ -450,9 +456,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -401,7 +413,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -475,6 +480,11 @@ public class PurpurWorldConfig { +@@ -477,6 +485,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -413,7 +425,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -509,10 +519,12 @@ public class PurpurWorldConfig { +@@ -511,10 +524,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -426,7 +438,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public int waterInfiniteRequiredSources = 2; -@@ -735,6 +747,7 @@ public class PurpurWorldConfig { +@@ -737,6 +752,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -434,7 +446,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -747,6 +760,7 @@ public class PurpurWorldConfig { +@@ -749,6 +765,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -442,7 +454,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean dolphinRidable = false; -@@ -841,6 +855,7 @@ public class PurpurWorldConfig { +@@ -843,6 +860,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -450,7 +462,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -857,6 +872,7 @@ public class PurpurWorldConfig { +@@ -859,6 +877,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -458,7 +470,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean endermanRidable = false; -@@ -865,6 +881,7 @@ public class PurpurWorldConfig { +@@ -867,6 +886,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -466,7 +478,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -877,6 +894,7 @@ public class PurpurWorldConfig { +@@ -879,6 +899,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -474,7 +486,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean endermiteRidable = false; -@@ -899,6 +917,7 @@ public class PurpurWorldConfig { +@@ -901,6 +922,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = false; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -482,7 +494,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -909,6 +928,7 @@ public class PurpurWorldConfig { +@@ -911,6 +933,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -490,7 +502,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean foxRidable = false; -@@ -917,6 +937,7 @@ public class PurpurWorldConfig { +@@ -919,6 +942,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -498,7 +510,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -929,6 +950,7 @@ public class PurpurWorldConfig { +@@ -931,6 +955,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -506,7 +518,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean frogRidable = false; -@@ -1376,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1378,6 +1403,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = false; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -514,7 +526,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1386,6 +1409,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1414,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -522,7 +534,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean piglinBruteRidable = false; -@@ -1408,6 +1432,7 @@ public class PurpurWorldConfig { +@@ -1410,6 +1437,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = false; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -530,7 +542,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1418,6 +1443,7 @@ public class PurpurWorldConfig { +@@ -1420,6 +1448,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -538,7 +550,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean polarBearRidable = false; -@@ -1464,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1495,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -546,7 +558,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1477,12 +1504,14 @@ public class PurpurWorldConfig { +@@ -1479,12 +1509,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -561,7 +573,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1493,6 +1522,7 @@ public class PurpurWorldConfig { +@@ -1495,6 +1527,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -569,7 +581,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean salmonRidable = false; -@@ -1514,6 +1544,7 @@ public class PurpurWorldConfig { +@@ -1516,6 +1549,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -577,7 +589,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1525,6 +1556,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1561,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -585,7 +597,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean shulkerRidable = false; -@@ -1547,6 +1579,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1584,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = false; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -593,7 +605,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1557,6 +1590,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1595,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -601,7 +613,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean skeletonRidable = false; -@@ -1633,6 +1667,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1672,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -609,7 +621,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1650,6 +1685,7 @@ public class PurpurWorldConfig { +@@ -1652,6 +1690,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -617,7 +629,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public int snifferBreedingTicks = 6000; -@@ -1828,6 +1864,7 @@ public class PurpurWorldConfig { +@@ -1830,6 +1869,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -625,7 +637,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1844,6 +1881,7 @@ public class PurpurWorldConfig { +@@ -1846,6 +1886,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -633,7 +645,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean vindicatorRidable = false; -@@ -1916,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1918,6 +1959,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -641,7 +653,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1933,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +1977,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -649,7 +661,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 } public boolean witherSkeletonRidable = false; -@@ -2004,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -2006,6 +2049,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -657,7 +669,7 @@ index 7f50c32aff3f0d576d6f46afa889db06c8016ba2..d4ecebc9e9b88f414fa52e510b4e2536 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2019,6 +2060,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2065,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0125-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0125-Config-to-allow-Note-Block-sounds-when-blocked.patch index aa574c99b..58c26b2a7 100644 --- a/patches/server/0125-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0125-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,10 +22,18 @@ index 42e8e2d9d673947ecbfb55e0f31fc22afe3223b6..0b5ce2db558e721807944d9d0f672a77 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4ecebc9e9b88f414fa52e510b4e253650a441fe..96fa35b960466761fcee87112216b39825193868 100644 +index 730c5227e3bab35999375acd7cd0a33ad17fc3ce..61af817befd10c164421ab8b3b8e306a0d391213 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -131,6 +131,7 @@ public class PurpurWorldConfig { +@@ -120,6 +120,7 @@ public class PurpurWorldConfig { + public boolean entitiesPickUpLootBypassMobGriefing = false; + public boolean fireballsBypassMobGriefing = false; + public boolean milkCuresBadOmen = true; ++ public boolean noteBlockIgnoreAbove = false; + public boolean persistentDroppableEntityDisplayNames = false; + public boolean projectilesBypassMobGriefing = false; + public double tridentLoyaltyVoidReturnHeight = 0.0D; +@@ -136,6 +137,7 @@ public class PurpurWorldConfig { entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0126-Add-EntityTeleportHinderedEvent.patch b/patches/server/0126-Add-EntityTeleportHinderedEvent.patch index d23f118cc..934f98a8b 100644 --- a/patches/server/0126-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0126-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 690d498a97b943a62e8ea415450ca44a2349fee0..43ca8471d7d4d2d561cba7e2a952a16e blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index fa6938626c64ed17a2f56739d5801494ea6f3be1..df33bd0c97faa3c7eb4ab6cbe7286f6a9aaa37d6 100644 +index 57c05450bab104273c6532b6534568df0284a5d8..6a057d638a67d69b5261b8a264c661d982c995d5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -586,6 +586,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -104,10 +104,18 @@ index 17ea58f45f4bc4eb8bbbeadd6f25a477061d1617..9cf61d67d5e8f364ab68b26044daf243 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96fa35b960466761fcee87112216b39825193868..a78fbed9e8387bc55a86216a31a5f89574145f52 100644 +index 61af817befd10c164421ab8b3b8e306a0d391213..f46bb02b960acfa596541b9b243aa277557ca4ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -130,6 +130,7 @@ public class PurpurWorldConfig { +@@ -119,6 +119,7 @@ public class PurpurWorldConfig { + public boolean entitiesCanUsePortals = true; + public boolean entitiesPickUpLootBypassMobGriefing = false; + public boolean fireballsBypassMobGriefing = false; ++ public boolean imposeTeleportRestrictionsOnGateways = false; + public boolean milkCuresBadOmen = true; + public boolean noteBlockIgnoreAbove = false; + public boolean persistentDroppableEntityDisplayNames = false; +@@ -136,6 +137,7 @@ public class PurpurWorldConfig { entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); diff --git a/patches/server/0127-Farmland-trampling-changes.patch b/patches/server/0127-Farmland-trampling-changes.patch index 289375d40..de89e1824 100644 --- a/patches/server/0127-Farmland-trampling-changes.patch +++ b/patches/server/0127-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index f66a556e93469204e19baa5bf2decbf974701a5d..eed062c9cf1103d7ac96695e3620d427 if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a78fbed9e8387bc55a86216a31a5f89574145f52..ceaf9f0e9e4634bd781fc9af3190515ebf727c17 100644 +index f46bb02b960acfa596541b9b243aa277557ca4ef..76404c262c07c5644aa9830bb63f0fc34a9ebe29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -456,10 +456,16 @@ public class PurpurWorldConfig { +@@ -463,10 +463,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0128-Movement-options-for-armor-stands.patch b/patches/server/0128-Movement-options-for-armor-stands.patch index 3be5f362a..0641675f1 100644 --- a/patches/server/0128-Movement-options-for-armor-stands.patch +++ b/patches/server/0128-Movement-options-for-armor-stands.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ebd4007797bda63e276056bee1eb85b08bc40309..a466eb10690bc0fe204815d758cc69798ce94f13 100644 +index 5cdce4da91905c955d1daf2490338bbc4a1461c5..a952685ec8907fe4ad0fb9f12855679e0983d9ca 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1711,7 +1711,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -65,3 +65,24 @@ index 5b4523320de59167bd5864b2f17187590afb5ad6..88949e8ca7e4a5e74a8a365bb1aa6d46 + } + // Purpur end } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 76404c262c07c5644aa9830bb63f0fc34a9ebe29..6ebc9259107efa55298f0f99cac8e07f79a8b83e 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -101,10 +101,16 @@ public class PurpurWorldConfig { + public float armorstandStepHeight = 0.0F; + public boolean armorstandSetNameVisible = false; + public boolean armorstandFixNametags = false; ++ public boolean armorstandMovement = true; ++ public boolean armorstandWaterMovement = true; ++ public boolean armorstandWaterFence = true; + private void armorstandSettings() { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); + armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); + armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags); ++ armorstandMovement = getBoolean("gameplay-mechanics.armorstand.can-movement-tick", armorstandMovement); ++ armorstandWaterMovement = getBoolean("gameplay-mechanics.armorstand.can-move-in-water", armorstandWaterMovement); ++ armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence); + } + + public boolean arrowMovementResetsDespawnCounter = true; diff --git a/patches/server/0129-Fix-stuck-in-portals.patch b/patches/server/0129-Fix-stuck-in-portals.patch index 3f52e239f..b2a3c701b 100644 --- a/patches/server/0129-Fix-stuck-in-portals.patch +++ b/patches/server/0129-Fix-stuck-in-portals.patch @@ -17,7 +17,7 @@ index 7a9b5f6665e910f12bcc9d3ade8534a93aa09dd9..bc2c592a416c64619527bf5d1040f4a2 // CraftBukkit end this.setLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a466eb10690bc0fe204815d758cc69798ce94f13..8ff2aab5f04891af319ed8a07890ed62f770016c 100644 +index a952685ec8907fe4ad0fb9f12855679e0983d9ca..41887aef504f1c2cb5cd3d16afd7c557f8831fc2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2903,12 +2903,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -37,10 +37,10 @@ index a466eb10690bc0fe204815d758cc69798ce94f13..8ff2aab5f04891af319ed8a07890ed62 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ceaf9f0e9e4634bd781fc9af3190515ebf727c17..1fab229a0ff9cd91997b1b72172f33e11f0ae2a1 100644 +index 6ebc9259107efa55298f0f99cac8e07f79a8b83e..eab135372764fe2be0244cddadaa8891bba0fb45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -324,6 +324,7 @@ public class PurpurWorldConfig { +@@ -337,6 +337,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -48,7 +48,7 @@ index ceaf9f0e9e4634bd781fc9af3190515ebf727c17..1fab229a0ff9cd91997b1b72172f33e1 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -341,6 +342,7 @@ public class PurpurWorldConfig { +@@ -354,6 +355,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch index 7ce63703e..1da6e516d 100644 --- a/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch @@ -1197,10 +1197,10 @@ index fbbeacb94aeda40e9fc5c0553ab68948de9019c4..64c8890a54a10abd454a62671fbabfcf @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea47711430d 100644 +index 1cada527ffee79197c54f2504b3c4616746f8e9c..efee0da104d1ad78d7a4c99338f530727d2d2be0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -564,11 +564,13 @@ public class PurpurWorldConfig { +@@ -577,11 +577,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1214,7 +1214,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean batRidable = false; -@@ -583,6 +585,7 @@ public class PurpurWorldConfig { +@@ -596,6 +598,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1222,7 +1222,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -594,6 +597,7 @@ public class PurpurWorldConfig { +@@ -607,6 +610,7 @@ public class PurpurWorldConfig { set("mobs.bat.attributes.max_health", oldValue); } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); @@ -1230,7 +1230,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean beeRidable = false; -@@ -602,6 +606,7 @@ public class PurpurWorldConfig { +@@ -615,6 +619,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1238,7 +1238,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -614,6 +619,7 @@ public class PurpurWorldConfig { +@@ -627,6 +632,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1246,7 +1246,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean blazeRidable = false; -@@ -621,6 +627,7 @@ public class PurpurWorldConfig { +@@ -634,6 +640,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1254,7 +1254,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -632,6 +639,7 @@ public class PurpurWorldConfig { +@@ -645,6 +652,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1262,7 +1262,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public int camelBreedingTicks = 6000; -@@ -660,6 +668,7 @@ public class PurpurWorldConfig { +@@ -673,6 +681,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1270,7 +1270,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -679,12 +688,14 @@ public class PurpurWorldConfig { +@@ -692,12 +701,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1285,7 +1285,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -695,6 +706,7 @@ public class PurpurWorldConfig { +@@ -708,6 +719,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1293,7 +1293,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean chickenRidable = false; -@@ -703,6 +715,7 @@ public class PurpurWorldConfig { +@@ -716,6 +728,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1301,7 +1301,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -715,11 +728,13 @@ public class PurpurWorldConfig { +@@ -728,11 +741,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1315,7 +1315,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -729,6 +744,7 @@ public class PurpurWorldConfig { +@@ -742,6 +757,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1323,7 +1323,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean cowRidable = false; -@@ -737,6 +753,7 @@ public class PurpurWorldConfig { +@@ -750,6 +766,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1331,7 +1331,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -749,6 +766,7 @@ public class PurpurWorldConfig { +@@ -762,6 +779,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1339,7 +1339,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean creeperRidable = false; -@@ -758,6 +776,7 @@ public class PurpurWorldConfig { +@@ -771,6 +789,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1347,7 +1347,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -771,6 +790,7 @@ public class PurpurWorldConfig { +@@ -784,6 +803,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1355,7 +1355,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean dolphinRidable = false; -@@ -780,6 +800,7 @@ public class PurpurWorldConfig { +@@ -793,6 +813,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1363,7 +1363,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -793,6 +814,7 @@ public class PurpurWorldConfig { +@@ -806,6 +827,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1371,7 +1371,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean donkeyRidableInWater = false; -@@ -803,6 +825,7 @@ public class PurpurWorldConfig { +@@ -816,6 +838,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; // TODO: re-implement public double donkeyMovementSpeedMax = 0.175D; // TODO: re-implement public int donkeyBreedingTicks = 6000; @@ -1379,7 +1379,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -819,6 +842,7 @@ public class PurpurWorldConfig { +@@ -832,6 +855,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1387,7 +1387,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean drownedRidable = false; -@@ -829,6 +853,7 @@ public class PurpurWorldConfig { +@@ -842,6 +866,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1395,7 +1395,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -843,11 +868,13 @@ public class PurpurWorldConfig { +@@ -856,11 +881,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1409,7 +1409,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -857,6 +884,7 @@ public class PurpurWorldConfig { +@@ -870,6 +897,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1417,7 +1417,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean enderDragonRidable = false; -@@ -866,6 +894,7 @@ public class PurpurWorldConfig { +@@ -879,6 +907,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1425,7 +1425,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -883,6 +912,7 @@ public class PurpurWorldConfig { +@@ -896,6 +925,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1433,7 +1433,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean endermanRidable = false; -@@ -892,6 +922,7 @@ public class PurpurWorldConfig { +@@ -905,6 +935,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1441,7 +1441,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -905,12 +936,14 @@ public class PurpurWorldConfig { +@@ -918,12 +949,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1456,7 +1456,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -921,6 +954,7 @@ public class PurpurWorldConfig { +@@ -934,6 +967,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1464,7 +1464,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean evokerRidable = false; -@@ -928,6 +962,7 @@ public class PurpurWorldConfig { +@@ -941,6 +975,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1472,7 +1472,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -939,6 +974,7 @@ public class PurpurWorldConfig { +@@ -952,6 +987,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1480,7 +1480,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean foxRidable = false; -@@ -948,6 +984,7 @@ public class PurpurWorldConfig { +@@ -961,6 +997,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1488,7 +1488,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -961,6 +998,7 @@ public class PurpurWorldConfig { +@@ -974,6 +1011,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1496,7 +1496,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean frogRidable = false; -@@ -981,6 +1019,7 @@ public class PurpurWorldConfig { +@@ -994,6 +1032,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1504,7 +1504,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -992,6 +1031,7 @@ public class PurpurWorldConfig { +@@ -1005,6 +1044,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1512,7 +1512,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean giantRidable = false; -@@ -1004,6 +1044,7 @@ public class PurpurWorldConfig { +@@ -1017,6 +1057,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1520,7 +1520,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1024,17 +1065,20 @@ public class PurpurWorldConfig { +@@ -1037,17 +1078,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1541,7 +1541,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean goatRidable = false; -@@ -1042,17 +1086,20 @@ public class PurpurWorldConfig { +@@ -1055,17 +1099,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1562,7 +1562,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1062,6 +1109,7 @@ public class PurpurWorldConfig { +@@ -1075,6 +1122,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1570,7 +1570,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean hoglinRidable = false; -@@ -1069,6 +1117,7 @@ public class PurpurWorldConfig { +@@ -1082,6 +1130,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1578,7 +1578,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1080,6 +1129,7 @@ public class PurpurWorldConfig { +@@ -1093,6 +1142,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1586,7 +1586,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean horseRidableInWater = false; -@@ -1090,6 +1140,7 @@ public class PurpurWorldConfig { +@@ -1103,6 +1153,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; // TODO: re-implement public double horseMovementSpeedMax = 0.3375D; // TODO: re-implement public int horseBreedingTicks = 6000; @@ -1594,7 +1594,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1106,6 +1157,7 @@ public class PurpurWorldConfig { +@@ -1119,6 +1170,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1602,7 +1602,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean huskRidable = false; -@@ -1116,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1129,6 +1181,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1610,7 +1610,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1130,6 +1183,7 @@ public class PurpurWorldConfig { +@@ -1143,6 +1196,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1618,7 +1618,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean illusionerRidable = false; -@@ -1138,6 +1192,7 @@ public class PurpurWorldConfig { +@@ -1151,6 +1205,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1626,7 +1626,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1154,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1167,6 +1222,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1634,7 +1634,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean ironGolemRidable = false; -@@ -1161,6 +1217,7 @@ public class PurpurWorldConfig { +@@ -1174,6 +1230,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1642,7 +1642,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1172,6 +1229,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1242,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1650,7 +1650,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean llamaRidable = false; -@@ -1184,6 +1242,7 @@ public class PurpurWorldConfig { +@@ -1197,6 +1255,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; // TODO: re-implement public double llamaMovementSpeedMax = 0.175D; // TODO: re-implement public int llamaBreedingTicks = 6000; @@ -1658,7 +1658,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1202,6 +1261,7 @@ public class PurpurWorldConfig { +@@ -1215,6 +1274,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1666,7 +1666,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean magmaCubeRidable = false; -@@ -1211,6 +1271,7 @@ public class PurpurWorldConfig { +@@ -1224,6 +1284,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1674,7 +1674,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1224,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1298,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1682,7 +1682,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean mooshroomRidable = false; -@@ -1231,6 +1293,7 @@ public class PurpurWorldConfig { +@@ -1244,6 +1306,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1690,7 +1690,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1242,6 +1305,7 @@ public class PurpurWorldConfig { +@@ -1255,6 +1318,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1698,7 +1698,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean muleRidableInWater = false; -@@ -1252,6 +1316,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1329,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; // TODO: re-implement public double muleMovementSpeedMax = 0.175D; // TODO: re-implement public int muleBreedingTicks = 6000; @@ -1706,7 +1706,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1268,6 +1333,7 @@ public class PurpurWorldConfig { +@@ -1281,6 +1346,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1714,7 +1714,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean ocelotRidable = false; -@@ -1275,6 +1341,7 @@ public class PurpurWorldConfig { +@@ -1288,6 +1354,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1722,7 +1722,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1286,6 +1353,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1366,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1730,7 +1730,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean pandaRidable = false; -@@ -1293,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1306,6 +1374,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1738,7 +1738,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1304,6 +1373,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1386,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1746,7 +1746,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean parrotRidable = false; -@@ -1311,6 +1381,7 @@ public class PurpurWorldConfig { +@@ -1324,6 +1394,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1754,7 +1754,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1322,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1406,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1762,7 +1762,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean phantomRidable = false; -@@ -1348,6 +1420,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1433,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1770,7 +1770,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1382,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1395,6 +1468,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1778,7 +1778,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean pigRidable = false; -@@ -1390,6 +1464,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1477,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1786,7 +1786,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1402,6 +1477,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1490,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1794,7 +1794,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean piglinRidable = false; -@@ -1409,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1498,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1802,7 +1802,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1420,12 +1497,14 @@ public class PurpurWorldConfig { +@@ -1433,12 +1510,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1817,7 +1817,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1436,6 +1515,7 @@ public class PurpurWorldConfig { +@@ -1449,6 +1528,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1825,7 +1825,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean pillagerRidable = false; -@@ -1443,6 +1523,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1536,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1833,7 +1833,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1454,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1548,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1841,7 +1841,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean polarBearRidable = false; -@@ -1463,6 +1545,7 @@ public class PurpurWorldConfig { +@@ -1476,6 +1558,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1849,7 +1849,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1477,11 +1560,13 @@ public class PurpurWorldConfig { +@@ -1490,11 +1573,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1863,7 +1863,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1491,6 +1576,7 @@ public class PurpurWorldConfig { +@@ -1504,6 +1589,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1871,7 +1871,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean rabbitRidable = false; -@@ -1501,6 +1587,7 @@ public class PurpurWorldConfig { +@@ -1514,6 +1600,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1879,7 +1879,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1515,6 +1602,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1615,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1887,7 +1887,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean ravagerRidable = false; -@@ -1522,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1623,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1895,7 +1895,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1533,11 +1622,13 @@ public class PurpurWorldConfig { +@@ -1546,11 +1635,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1909,7 +1909,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1547,6 +1638,7 @@ public class PurpurWorldConfig { +@@ -1560,6 +1651,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1917,7 +1917,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean sheepRidable = false; -@@ -1555,6 +1647,7 @@ public class PurpurWorldConfig { +@@ -1568,6 +1660,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1925,7 +1925,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1567,12 +1660,14 @@ public class PurpurWorldConfig { +@@ -1580,12 +1673,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1940,7 +1940,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1583,6 +1678,7 @@ public class PurpurWorldConfig { +@@ -1596,6 +1691,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1948,7 +1948,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean silverfishRidable = false; -@@ -1590,6 +1686,7 @@ public class PurpurWorldConfig { +@@ -1603,6 +1699,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1956,7 +1956,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1601,12 +1698,14 @@ public class PurpurWorldConfig { +@@ -1614,12 +1711,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1971,7 +1971,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1617,6 +1716,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1729,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1979,7 +1979,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean skeletonHorseRidableInWater = true; -@@ -1627,6 +1727,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1740,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; // TODO: re-implement public double skeletonHorseMovementSpeedMin = 0.2D; // TODO: re-implement public double skeletonHorseMovementSpeedMax = 0.2D; // TODO: re-implement @@ -1987,7 +1987,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1642,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1655,6 +1756,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean slimeRidable = false; -@@ -1651,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1664,6 +1766,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1664,6 +1767,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1780,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean snowGolemRidable = false; -@@ -1678,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1691,6 +1795,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1696,6 +1801,7 @@ public class PurpurWorldConfig { +@@ -1709,6 +1814,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public int snifferBreedingTicks = 6000; -@@ -1709,6 +1815,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1828,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1721,12 +1828,14 @@ public class PurpurWorldConfig { +@@ -1734,12 +1841,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1737,12 +1846,14 @@ public class PurpurWorldConfig { +@@ -1750,12 +1859,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1753,6 +1864,7 @@ public class PurpurWorldConfig { +@@ -1766,6 +1877,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean striderRidable = false; -@@ -1761,6 +1873,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1886,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1773,6 +1886,7 @@ public class PurpurWorldConfig { +@@ -1786,6 +1899,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean tadpoleRidable = false; -@@ -1794,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1807,6 +1921,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; // TODO: re-implement public double traderLlamaMovementSpeedMax = 0.175D; // TODO: re-implement public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1812,11 +1927,13 @@ public class PurpurWorldConfig { +@@ -1825,11 +1940,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1826,6 +1943,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1956,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean turtleRidable = false; -@@ -1833,6 +1951,7 @@ public class PurpurWorldConfig { +@@ -1846,6 +1964,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1844,6 +1963,7 @@ public class PurpurWorldConfig { +@@ -1857,6 +1976,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean vexRidable = false; -@@ -1851,6 +1971,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1984,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1862,6 +1983,7 @@ public class PurpurWorldConfig { +@@ -1875,6 +1996,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean villagerRidable = false; -@@ -1875,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1888,6 +2010,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1892,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1905,6 +2028,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean vindicatorRidable = false; -@@ -1899,6 +2023,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +2036,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1910,6 +2035,7 @@ public class PurpurWorldConfig { +@@ -1923,6 +2048,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean wanderingTraderRidable = false; -@@ -1918,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1931,6 +2057,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1930,6 +2057,7 @@ public class PurpurWorldConfig { +@@ -1943,6 +2070,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean wardenRidable = false; -@@ -1945,6 +2073,7 @@ public class PurpurWorldConfig { +@@ -1958,6 +2086,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = false; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1955,6 +2084,7 @@ public class PurpurWorldConfig { +@@ -1968,6 +2097,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean witherRidable = false; -@@ -1965,6 +2095,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2108,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1983,12 +2114,14 @@ public class PurpurWorldConfig { +@@ -1996,12 +2127,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1999,6 +2132,7 @@ public class PurpurWorldConfig { +@@ -2012,6 +2145,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean wolfRidable = false; -@@ -2009,6 +2143,7 @@ public class PurpurWorldConfig { +@@ -2022,6 +2156,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2027,12 +2162,14 @@ public class PurpurWorldConfig { +@@ -2040,12 +2175,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2043,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2056,6 +2193,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean zombieRidable = false; -@@ -2055,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2068,6 +2206,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,7 +2285,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2071,6 +2210,7 @@ public class PurpurWorldConfig { +@@ -2084,6 +2223,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2293,7 +2293,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean zombieHorseRidableInWater = false; -@@ -2082,6 +2222,7 @@ public class PurpurWorldConfig { +@@ -2095,6 +2235,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; // TODO: re-implement public double zombieHorseMovementSpeedMax = 0.2D; // TODO: re-implement public double zombieHorseSpawnChance = 0.0D; @@ -2301,7 +2301,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2098,6 +2239,7 @@ public class PurpurWorldConfig { +@@ -2111,6 +2252,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean zombieVillagerRidable = false; -@@ -2108,6 +2250,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2263,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2122,6 +2265,7 @@ public class PurpurWorldConfig { +@@ -2135,6 +2278,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 } public boolean zombifiedPiglinRidable = false; -@@ -2133,6 +2277,7 @@ public class PurpurWorldConfig { +@@ -2146,6 +2290,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 1fab229a0ff9cd91997b1b72172f33e11f0ae2a1..1508aa1e00988164ee588c1ec19aeea4 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2148,5 +2293,6 @@ public class PurpurWorldConfig { +@@ -2161,5 +2306,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0131-Config-to-always-tame-in-Creative.patch b/patches/server/0131-Config-to-always-tame-in-Creative.patch index c04449f27..4c5105837 100644 --- a/patches/server/0131-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0131-Config-to-always-tame-in-Creative.patch @@ -20,7 +20,7 @@ index 5c64905e90ccca6e0b347241ddf9cc3f71058b8e..3bd7521b131b2b40f807bdc7ab95e64c return; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index c1ec34249d07a22708905c593ffd61593935d7ef..029b94287acc5b79662aabe8c9783ac823abd7d1 100644 +index 60259730eef583c13a07f6ac2a41a2a8db96dd7a..05edeb6da8181aa7e2d01d64bc5fbb8993f35c2f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -470,7 +470,7 @@ public class Cat extends TamableAnimal implements VariantHolder { @@ -33,7 +33,7 @@ index c1ec34249d07a22708905c593ffd61593935d7ef..029b94287acc5b79662aabe8c9783ac8 this.setOrderedToSit(true); this.level.broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 94c9303cf76ea35c5584125a04aadd1772efb7dc..f7efb2088c554782fd169b901b4ef3fca3b2c0f9 100644 +index 1638b0f23ef2247c6d1055529f47d71ef56b0f55..9228dc98360ff34e4cdd105be36ed249c5b67067 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -334,7 +334,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -73,7 +73,7 @@ index bfbc69a5f235899c24f828b3804c0fd97cbed653..b0d9665221aecb3a597e40fe78dbd636 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -223,6 +225,8 @@ public class PurpurWorldConfig { +@@ -236,6 +238,8 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0135-One-Punch-Man.patch b/patches/server/0135-One-Punch-Man.patch index 12825e075..06b45d9ea 100644 --- a/patches/server/0135-One-Punch-Man.patch +++ b/patches/server/0135-One-Punch-Man.patch @@ -5,7 +5,7 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 11f7902e30771d5c279e0116b813295a5daf3510..999d5fce5a4647a235717fe6f436b04add0bd26a 100644 +index 41b03010c42d4692187803e3debc01c5182bac3a..4ce236340a5d22a3017f1c8ff71e85f44d204234 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2235,6 +2235,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,10 +30,10 @@ index 11f7902e30771d5c279e0116b813295a5daf3510..999d5fce5a4647a235717fe6f436b04a if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b0d9665221aecb3a597e40fe78dbd6363d66136e..54f1a2d293611a554e3837d27ecb0f9b450e0ba5 100644 +index 0eef3049df089ec17c213e4a4ab4c23815775dc4..0de6977b939349f8d2a6a481db5dd049acf97d69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -331,6 +331,7 @@ public class PurpurWorldConfig { +@@ -344,6 +344,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -41,7 +41,7 @@ index b0d9665221aecb3a597e40fe78dbd6363d66136e..54f1a2d293611a554e3837d27ecb0f9b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -349,6 +350,7 @@ public class PurpurWorldConfig { +@@ -362,6 +363,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/server/0136-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0136-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index ae7c466f4..2f7b70ee0 100644 --- a/patches/server/0136-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0136-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f // Paper end if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54f1a2d293611a554e3837d27ecb0f9b450e0ba5..a42091230474b0e8b9e6d1a9835b4a99d156bb75 100644 +index 0de6977b939349f8d2a6a481db5dd049acf97d69..3afce466836c9c9961fdabd749903869dd5ace91 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -188,6 +188,10 @@ public class PurpurWorldConfig { +@@ -201,6 +201,10 @@ public class PurpurWorldConfig { public List itemImmuneToLightning = new ArrayList<>(); public boolean dontRunWithScissors = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index 54f1a2d293611a554e3837d27ecb0f9b450e0ba5..a42091230474b0e8b9e6d1a9835b4a99 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -227,6 +231,10 @@ public class PurpurWorldConfig { +@@ -240,6 +244,10 @@ public class PurpurWorldConfig { }); dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0137-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0137-Config-to-ignore-nearby-mobs-when-sleeping.patch index fa9023efe..a99baf770 100644 --- a/patches/server/0137-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0137-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,10 +18,10 @@ index bc2c592a416c64619527bf5d1040f4a2523b2bfb..64dc052f41e0ef96753e0ffd3d6517fc } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a42091230474b0e8b9e6d1a9835b4a99d156bb75..1d7f6b070107e2cd98421592e7dfeae6ec849cdf 100644 +index 3afce466836c9c9961fdabd749903869dd5ace91..dde6bec7a83f7c11d234b09937680c02e4b8dd69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -340,6 +340,7 @@ public class PurpurWorldConfig { +@@ -353,6 +353,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index a42091230474b0e8b9e6d1a9835b4a99d156bb75..1d7f6b070107e2cd98421592e7dfeae6 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -359,6 +360,7 @@ public class PurpurWorldConfig { +@@ -372,6 +373,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0139-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0139-Config-Enderman-aggressiveness-towards-Endermites.patch index 8207934d0..0e88e8d05 100644 --- a/patches/server/0139-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0139-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index e7308cf659fba62669753ea53e52f40fb96976b1..c702f4b6534d0bf2e9d763bedbf58bf2a3190b5d 100644 +index 9e60e5d8a2005669c3187cdd84d8d7ef8f5da6be..38a483298b73c31d0c3d292a4c796c7b938c6961 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -128,7 +128,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -18,10 +18,10 @@ index e7308cf659fba62669753ea53e52f40fb96976b1..c702f4b6534d0bf2e9d763bedbf58bf2 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d7f6b070107e2cd98421592e7dfeae6ec849cdf..27940162431900f412168cc19800f74117eb4112 100644 +index dde6bec7a83f7c11d234b09937680c02e4b8dd69..fb0a15654b5545ff74116215d5a52f782a1ff4b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -980,6 +980,8 @@ public class PurpurWorldConfig { +@@ -993,6 +993,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 1d7f6b070107e2cd98421592e7dfeae6ec849cdf..27940162431900f412168cc19800f741 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -989,11 +991,17 @@ public class PurpurWorldConfig { +@@ -1002,11 +1004,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0140-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0140-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index c6a18311d..194c22ff5 100644 --- a/patches/server/0140-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0140-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index c702f4b6534d0bf2e9d763bedbf58bf2a3190b5d..60720f0bad840d35c9d0f1fc327f6069b348a41a 100644 +index 38a483298b73c31d0c3d292a4c796c7b938c6961..2ac667ec7bdc59363af0bd2209f6e456372d73e7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -265,7 +265,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,10 +20,10 @@ index c702f4b6534d0bf2e9d763bedbf58bf2a3190b5d..60720f0bad840d35c9d0f1fc327f6069 } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27940162431900f412168cc19800f74117eb4112..b5c97676ee0e7c47d6ce32f1b1d6a85cb8bb620b 100644 +index fb0a15654b5545ff74116215d5a52f782a1ff4b8..7be8a006914ac746e92f683b785eef4a5de308e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -982,6 +982,8 @@ public class PurpurWorldConfig { +@@ -995,6 +995,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 27940162431900f412168cc19800f74117eb4112..b5c97676ee0e7c47d6ce32f1b1d6a85c private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1002,6 +1004,8 @@ public class PurpurWorldConfig { +@@ -1015,6 +1017,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0141-Tick-fluids-config.patch b/patches/server/0141-Tick-fluids-config.patch index f7afb9441..b3611f391 100644 --- a/patches/server/0141-Tick-fluids-config.patch +++ b/patches/server/0141-Tick-fluids-config.patch @@ -36,10 +36,18 @@ index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b5c97676ee0e7c47d6ce32f1b1d6a85cb8bb620b..46675078269880bc8774053b0827dc69293b642e 100644 +index 7be8a006914ac746e92f683b785eef4a5de308e2..d287d56cd606087cee9dcd7f6baabd593976ab42 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -137,6 +137,7 @@ public class PurpurWorldConfig { +@@ -131,6 +131,7 @@ public class PurpurWorldConfig { + public boolean noteBlockIgnoreAbove = false; + public boolean persistentDroppableEntityDisplayNames = false; + public boolean projectilesBypassMobGriefing = false; ++ public boolean tickFluids = true; + public double tridentLoyaltyVoidReturnHeight = 0.0D; + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; +@@ -150,6 +151,7 @@ public class PurpurWorldConfig { noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0142-Config-to-disable-Llama-caravans.patch b/patches/server/0142-Config-to-disable-Llama-caravans.patch index 9f31dc7b2..a06ec1b9a 100644 --- a/patches/server/0142-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0142-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 185749df0c7c08f625145a29810ffed6042550bb..3f3e6633a3de2ceb5a082777a24ff045 this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46675078269880bc8774053b0827dc69293b642e..530eccfe6883a00ce4f8fa8e9ed3f911c81577c4 100644 +index 941811c1070f10302c10bb404e8d782224a796e4..bac8dc98ad761a510de5eb411a33365863a2da7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1313,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1327,6 +1327,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; // TODO: re-implement public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 46675078269880bc8774053b0827dc69293b642e..530eccfe6883a00ce4f8fa8e9ed3f911 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1332,6 +1333,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1347,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0143-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0143-Config-to-make-Creepers-explode-on-death.patch index 95891be43..f61c863de 100644 --- a/patches/server/0143-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0143-Config-to-make-Creepers-explode-on-death.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config to make Creepers explode on death Creepers exploded after being killed in the alpha days. This brings that back. diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 8db007569fc8a5085071813e1476a27d0f1cff7c..8568be97dcd5bb269e0204faf8b42dc8cb152282 100644 +index 7a16984f0eb5f48e16dd718f44e39c7cc4a28d9a..1d099bfb7b35062178d65a0808ba99b0da5ef885 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -63,6 +63,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -50,10 +50,10 @@ index 8db007569fc8a5085071813e1476a27d0f1cff7c..8568be97dcd5bb269e0204faf8b42dc8 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 530eccfe6883a00ce4f8fa8e9ed3f911c81577c4..e76bec118134f4f6ff37b04a07ae9f2238258c91 100644 +index 1c6bb583b73a02957cb85fa9ecd0b1edc53c3d0d..bd298eed71a02ccfbbd97ce573ebc9c6976f1943 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -833,6 +833,7 @@ public class PurpurWorldConfig { +@@ -847,6 +847,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 530eccfe6883a00ce4f8fa8e9ed3f911c81577c4..e76bec118134f4f6ff37b04a07ae9f22 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -847,6 +848,7 @@ public class PurpurWorldConfig { +@@ -861,6 +862,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0144-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0144-Configurable-ravager-griefable-blocks-list.patch index 9cb3efde3..5def9026e 100644 --- a/patches/server/0144-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0144-Configurable-ravager-griefable-blocks-list.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable ravager griefable blocks list diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 1c28e0f5b96114b2886fcf670ce5ce23526868f3..ee24dd327182387f6547532963972846acfb4da3 100644 +index b1ef22e46db43f0c5b8bf3d2463850bba025d086..39f6b2a5fc0a37a96098a75f1972e7316572216f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -205,7 +205,7 @@ public class Ravager extends Raider { @@ -31,10 +31,10 @@ index f0fbd16c9b9c3772492c32b3924e99e147e412f0..c0c3bba1555e356c0af7e79e1ecb2aa0 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e76bec118134f4f6ff37b04a07ae9f2238258c91..f1df9ab494ba698052e44f9ea73b8a3ac65b8b0a 100644 +index bd298eed71a02ccfbbd97ce573ebc9c6976f1943..dcc2339369f233c8d02e7c4f8caf8624b89ea49d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1685,6 +1685,7 @@ public class PurpurWorldConfig { +@@ -1699,6 +1699,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index e76bec118134f4f6ff37b04a07ae9f2238258c91..f1df9ab494ba698052e44f9ea73b8a3a private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1697,6 +1698,23 @@ public class PurpurWorldConfig { +@@ -1711,6 +1712,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0145-Sneak-to-bulk-process-composter.patch b/patches/server/0145-Sneak-to-bulk-process-composter.patch index a443b0b80..65ea7cb77 100644 --- a/patches/server/0145-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0145-Sneak-to-bulk-process-composter.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Sneak to bulk process composter diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 0a3eb5e929c605d9eb7369de8ade8b49951f5d37..b69277b2ce0b5e4fd5cc5c21d07f529a16d21cc6 100644 +index 58b093bb1de78ee3b3b2ea364aa50474883f443a..2fd89736091bda7005ef27e42a2aad0df27fa3b5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -568,7 +568,7 @@ public class ServerPlayerGameMode { @@ -102,10 +102,10 @@ index ae90e86327957bb784e2d81694ee7eea288bb455..c5e4bc4bbeacd4875996ba54e795689f int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f1df9ab494ba698052e44f9ea73b8a3ac65b8b0a..52bec7fa98bbc0e1700dd0a5210b8cf482da8156 100644 +index dcc2339369f233c8d02e7c4f8caf8624b89ea49d..13025266f375a3cf4af4ba352ce64b9a412e4bcf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -467,6 +467,11 @@ public class PurpurWorldConfig { +@@ -481,6 +481,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0146-Config-for-skipping-night.patch b/patches/server/0146-Config-for-skipping-night.patch index 648e5da4b..867d0022c 100644 --- a/patches/server/0146-Config-for-skipping-night.patch +++ b/patches/server/0146-Config-for-skipping-night.patch @@ -18,10 +18,10 @@ index e017da4617a62169d8888b8f86e6b3abc0ad1ba0..53f1e0b0f982054c9056f0fe27931bb7 j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52bec7fa98bbc0e1700dd0a5210b8cf482da8156..4d5cbc2cd99feb5c342122572a376206bdc3cc60 100644 +index 13025266f375a3cf4af4ba352ce64b9a412e4bcf..8ae7369fa0d951a6562b2484a5f6e9be28d9a73d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -342,6 +342,7 @@ public class PurpurWorldConfig { +@@ -356,6 +356,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 52bec7fa98bbc0e1700dd0a5210b8cf482da8156..4d5cbc2cd99feb5c342122572a376206 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -362,6 +363,7 @@ public class PurpurWorldConfig { +@@ -376,6 +377,7 @@ public class PurpurWorldConfig { playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/server/0147-Add-config-for-villager-trading.patch b/patches/server/0147-Add-config-for-villager-trading.patch index e62424c64..6c9e93f03 100644 --- a/patches/server/0147-Add-config-for-villager-trading.patch +++ b/patches/server/0147-Add-config-for-villager-trading.patch @@ -31,10 +31,10 @@ index 64c8890a54a10abd454a62671fbabfcf9720b7c0..e06f3ee85dde587f1146d4a3d70e8a2e this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d5cbc2cd99feb5c342122572a376206bdc3cc60..8785e83e150807033cd17b6d09bee7374a7c6a45 100644 +index 5454a4aa35095ea2fdb6def38dc49c3cc4ec7474..0b63e4ef8789382001cc7fe579e678172651bd14 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2097,6 +2097,7 @@ public class PurpurWorldConfig { +@@ -2111,6 +2111,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 4d5cbc2cd99feb5c342122572a376206bdc3cc60..8785e83e150807033cd17b6d09bee737 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2115,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2129,6 +2130,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 4d5cbc2cd99feb5c342122572a376206bdc3cc60..8785e83e150807033cd17b6d09bee737 } public boolean vindicatorRidable = false; -@@ -2144,6 +2146,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2160,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 4d5cbc2cd99feb5c342122572a376206bdc3cc60..8785e83e150807033cd17b6d09bee737 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2157,6 +2160,7 @@ public class PurpurWorldConfig { +@@ -2171,6 +2174,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0149-Drowning-Settings.patch b/patches/server/0149-Drowning-Settings.patch index a4299336d..253f2079c 100644 --- a/patches/server/0149-Drowning-Settings.patch +++ b/patches/server/0149-Drowning-Settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8ff2aab5f04891af319ed8a07890ed62f770016c..7fb4000cde782c79e252d73b59b26e0039077de2 100644 +index 41887aef504f1c2cb5cd3d16afd7c557f8831fc2..df17289b2932544327686707dc4cca43963f8675 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3144,7 +3144,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -18,7 +18,7 @@ index 8ff2aab5f04891af319ed8a07890ed62f770016c..7fb4000cde782c79e252d73b59b26e00 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 999d5fce5a4647a235717fe6f436b04add0bd26a..6a61f90e116e5cbb5b457ebb26438714151c25c9 100644 +index 4ce236340a5d22a3017f1c8ff71e85f44d204234..d161596f42fc7f720436a3d08ad59fe1393433b0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -40,10 +40,10 @@ index 999d5fce5a4647a235717fe6f436b04add0bd26a..6a61f90e116e5cbb5b457ebb26438714 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8785e83e150807033cd17b6d09bee7374a7c6a45..5a84db0bd0fea34a80488d849abefe74c572783d 100644 +index 9daabef9ff8be2a921b4042e3a3790b040805a31..899e320cb3b9fddea44b1844da8ed5103f383196 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -152,6 +152,15 @@ public class PurpurWorldConfig { +@@ -166,6 +166,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0150-Break-individual-slabs-when-sneaking.patch b/patches/server/0150-Break-individual-slabs-when-sneaking.patch index 67e90d0d8..66f51bb94 100644 --- a/patches/server/0150-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0150-Break-individual-slabs-when-sneaking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index b69277b2ce0b5e4fd5cc5c21d07f529a16d21cc6..9564cfd3ff593662cf5755ae1d83dee4b627cdf9 100644 +index 2fd89736091bda7005ef27e42a2aad0df27fa3b5..0034831358550491d57360966b1458b34b0908e2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -389,6 +389,7 @@ public class ServerPlayerGameMode { @@ -47,10 +47,10 @@ index 18b603d646081926343dea108b55d641df1c2c34..03ad3e45fc6d48091ac0c0ba5dc3d014 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5a84db0bd0fea34a80488d849abefe74c572783d..7cb2ae918e544c8729a6c39201030ccef6976eab 100644 +index 899e320cb3b9fddea44b1844da8ed5103f383196..8a7599c50a07c661f693f43f060c4333486d311e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -593,6 +593,11 @@ public class PurpurWorldConfig { +@@ -607,6 +607,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0151-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0151-Config-to-disable-hostile-mob-spawn-on-ice.patch index dfeee41e5..fbe34c0fa 100644 --- a/patches/server/0151-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0151-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3bae return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7cb2ae918e544c8729a6c39201030ccef6976eab..5ee4c21db365ed242fc008bb02575cf8ede12ac8 100644 +index 8a7599c50a07c661f693f43f060c4333486d311e..45dbcd413f1711aa3ec2d9e97283a1b46f0a5956 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -553,6 +553,13 @@ public class PurpurWorldConfig { +@@ -567,6 +567,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0152-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0152-Config-to-show-Armor-Stand-arms-on-spawn.patch index 71d713be4..d9693b3be 100644 --- a/patches/server/0152-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0152-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -16,3 +16,23 @@ index 88949e8ca7e4a5e74a8a365bb1aa6d466d3f8ddd..0545a39af0f21210ff1f5e53f6d712ae } public ArmorStand(Level world, double x, double y, double z) { +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 45dbcd413f1711aa3ec2d9e97283a1b46f0a5956..98f74f037c88e147edef3604e896378677e82ba0 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -104,6 +104,7 @@ public class PurpurWorldConfig { + public boolean armorstandMovement = true; + public boolean armorstandWaterMovement = true; + public boolean armorstandWaterFence = true; ++ public boolean armorstandPlaceWithArms = false; + private void armorstandSettings() { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); + armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); +@@ -111,6 +112,7 @@ public class PurpurWorldConfig { + armorstandMovement = getBoolean("gameplay-mechanics.armorstand.can-movement-tick", armorstandMovement); + armorstandWaterMovement = getBoolean("gameplay-mechanics.armorstand.can-move-in-water", armorstandWaterMovement); + armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence); ++ armorstandPlaceWithArms = getBoolean("gameplay-mechanics.armorstand.place-with-arms-visible", armorstandPlaceWithArms); + } + + public boolean arrowMovementResetsDespawnCounter = true; diff --git a/patches/server/0153-Option-to-make-doors-require-redstone.patch b/patches/server/0153-Option-to-make-doors-require-redstone.patch index de7fc62c8..d206a7de1 100644 --- a/patches/server/0153-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0153-Option-to-make-doors-require-redstone.patch @@ -67,10 +67,10 @@ index 5ba56ee7d5dd210770e6703be559055d218028d5..b5e90dc00240bccf1a6eca342729a4f4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ee4c21db365ed242fc008bb02575cf8ede12ac8..d94277eea53eb49c548fe146ba7bab671f2faa64 100644 +index 98f74f037c88e147edef3604e896378677e82ba0..abab51201f9741dfdf1689d274d7cf401dec7278 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -490,6 +490,16 @@ public class PurpurWorldConfig { +@@ -506,6 +506,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0155-Configurable-sponge-absorption.patch b/patches/server/0155-Configurable-sponge-absorption.patch index 002cb8019..1c07876cc 100644 --- a/patches/server/0155-Configurable-sponge-absorption.patch +++ b/patches/server/0155-Configurable-sponge-absorption.patch @@ -43,10 +43,10 @@ index 7304b2659eb45bc4bc9fa7c43e6ca07221d0fc73..d96e3fbc0fd4275c29e7e6154ef66e9e } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d94277eea53eb49c548fe146ba7bab671f2faa64..c77c5fc06e99716e3abac3c8bf7a3f7144a5a307 100644 +index abab51201f9741dfdf1689d274d7cf401dec7278..47cd5e9f266bb881bbe4fffa610c14664ce8c088 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -620,6 +620,13 @@ public class PurpurWorldConfig { +@@ -636,6 +636,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0156-Projectile-offset-config.patch b/patches/server/0156-Projectile-offset-config.patch index 80fda861c..cadee772a 100644 --- a/patches/server/0156-Projectile-offset-config.patch +++ b/patches/server/0156-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 41bd45c0720751f348b5cf6eaecac4397a439857..60512d08a45670a164a9b93191aafa40 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c77c5fc06e99716e3abac3c8bf7a3f7144a5a307..147856f113f75f7500fa45e7837ab5817a35fdf8 100644 +index 47cd5e9f266bb881bbe4fffa610c14664ce8c088..7dd8b7e559cc3414298af214d59f08bcdc338186 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -408,6 +408,23 @@ public class PurpurWorldConfig { +@@ -424,6 +424,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0157-Config-for-powered-rail-activation-distance.patch b/patches/server/0157-Config-for-powered-rail-activation-distance.patch index 66c0ec1bb..5d7461133 100644 --- a/patches/server/0157-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0157-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 147856f113f75f7500fa45e7837ab5817a35fdf8..6ac9e4f65f0b1579cc5c6f8d7eb2030c3ba68f78 100644 +index 7dd8b7e559cc3414298af214d59f08bcdc338186..05348bd6e516284bdec1bb1675bfcf242dcad2e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -601,6 +601,11 @@ public class PurpurWorldConfig { +@@ -617,6 +617,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0158-Piglin-portal-spawn-modifier.patch b/patches/server/0158-Piglin-portal-spawn-modifier.patch index 96cb9d7be..00424752e 100644 --- a/patches/server/0158-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0158-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ac9e4f65f0b1579cc5c6f8d7eb2030c3ba68f78..96fe6d34c837ee808e3d4737b82dfbe30da9b116 100644 +index 05348bd6e516284bdec1bb1675bfcf242dcad2e7..deb9b89415088a57b7a658d8017ace00155f0956 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1627,6 +1627,7 @@ public class PurpurWorldConfig { +@@ -1643,6 +1643,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 6ac9e4f65f0b1579cc5c6f8d7eb2030c3ba68f78..96fe6d34c837ee808e3d4737b82dfbe3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1639,6 +1640,7 @@ public class PurpurWorldConfig { +@@ -1655,6 +1656,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0160-Config-for-wither-explosion-radius.patch b/patches/server/0160-Config-for-wither-explosion-radius.patch index 0fd1672f3..fbec95e53 100644 --- a/patches/server/0160-Config-for-wither-explosion-radius.patch +++ b/patches/server/0160-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index 093a00e52062868b4fbf358b307513d0f599f69d..ba753735f3cbb2cb3d0a491d1bd94a04 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96fe6d34c837ee808e3d4737b82dfbe30da9b116..d0d41f2b5067e864b2f2b347d19a90818ae97182 100644 +index 186d24b7b671665ee7cedc7b53cb98ede17ac0ca..4f40b284691f67b0ba8ddfd73d321dbc134444ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2262,6 +2262,7 @@ public class PurpurWorldConfig { +@@ -2278,6 +2278,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 96fe6d34c837ee808e3d4737b82dfbe30da9b116..d0d41f2b5067e864b2f2b347d19a9081 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2282,6 +2283,7 @@ public class PurpurWorldConfig { +@@ -2298,6 +2299,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0162-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0162-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index 5e28a21b3..80eb15063 100644 --- a/patches/server/0162-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0162-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -18,10 +18,10 @@ index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8ae Runnable afterAction = null; // Paper if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0d41f2b5067e864b2f2b347d19a90818ae97182..34da795e14b3b4b2276121ae32ee851df3779f7a 100644 +index 319a58d0cfeae9395d0f41a6f4a97ca89b3c4df5..86f5341479c71833124902e14683f03faddaad44 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -430,6 +430,21 @@ public class PurpurWorldConfig { +@@ -446,6 +446,21 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0163-Configurable-piston-push-limit.patch b/patches/server/0163-Configurable-piston-push-limit.patch index 7c42cb8bc..73097d2c0 100644 --- a/patches/server/0163-Configurable-piston-push-limit.patch +++ b/patches/server/0163-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34da795e14b3b4b2276121ae32ee851df3779f7a..fc74e1043a277f903a14659d972739ffa8304214 100644 +index 86f5341479c71833124902e14683f03faddaad44..ce92ab1a31c000a66b8bf45651563f2e8c0c5a9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -611,6 +611,11 @@ public class PurpurWorldConfig { +@@ -627,6 +627,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0165-Configurable-mob-blindness.patch b/patches/server/0165-Configurable-mob-blindness.patch index 1eefdf14b..a815870ab 100644 --- a/patches/server/0165-Configurable-mob-blindness.patch +++ b/patches/server/0165-Configurable-mob-blindness.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6a61f90e116e5cbb5b457ebb26438714151c25c9..08f520fe9d793309e3b315f2dc25ed44e0d22af8 100644 +index d161596f42fc7f720436a3d08ad59fe1393433b0..4938c289ea20f9f922e48d9b9f25caadb8c0f5b9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1020,6 +1020,17 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,10 +28,18 @@ index 6a61f90e116e5cbb5b457ebb26438714151c25c9..08f520fe9d793309e3b315f2dc25ed44 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc74e1043a277f903a14659d972739ffa8304214..f3b86e44dbb769796fce99ae16d8b630c5699d09 100644 +index ce92ab1a31c000a66b8bf45651563f2e8c0c5a9b..8c4b7ad4af57e2547b0e01032e8b6a8341cdb2ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -138,6 +138,7 @@ public class PurpurWorldConfig { +@@ -134,6 +134,7 @@ public class PurpurWorldConfig { + public boolean persistentDroppableEntityDisplayNames = false; + public boolean projectilesBypassMobGriefing = false; + public boolean tickFluids = true; ++ public double mobsBlindnessMultiplier = 1; + public double tridentLoyaltyVoidReturnHeight = 0.0D; + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; +@@ -154,6 +155,7 @@ public class PurpurWorldConfig { persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); diff --git a/patches/server/0167-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0167-Config-for-health-to-impact-Creeper-explosion-radius.patch index 1d02dbaf2..1ce27c592 100644 --- a/patches/server/0167-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0167-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 8568be97dcd5bb269e0204faf8b42dc8cb152282..30df0e74950c6629fce06923a4a7d57341606fd6 100644 +index 1d099bfb7b35062178d65a0808ba99b0da5ef885..415f5fc5c6b1f780a28917c21d0856ee598c59fc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob { @@ -21,10 +21,10 @@ index 8568be97dcd5bb269e0204faf8b42dc8cb152282..30df0e74950c6629fce06923a4a7d573 if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f3b86e44dbb769796fce99ae16d8b630c5699d09..09db887a83c212b2bab799ff64ae85e4463bee77 100644 +index 8c4b7ad4af57e2547b0e01032e8b6a8341cdb2ba..68c392bcb3a8a553986f9d13bb19d8b982e481ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -922,6 +922,7 @@ public class PurpurWorldConfig { +@@ -939,6 +939,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index f3b86e44dbb769796fce99ae16d8b630c5699d09..09db887a83c212b2bab799ff64ae85e4 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -937,6 +938,7 @@ public class PurpurWorldConfig { +@@ -954,6 +955,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0168-Iron-golem-calm-anger-options.patch b/patches/server/0168-Iron-golem-calm-anger-options.patch index c5b2cb3ae..fd478e639 100644 --- a/patches/server/0168-Iron-golem-calm-anger-options.patch +++ b/patches/server/0168-Iron-golem-calm-anger-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Iron golem calm anger options diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index f25f7db029c0c21f31693349ef567dddeace3db1..6b651c0c4a4d13f9b9cac5aab1ab843077c4cac0 100644 +index 782949596cd160847a0332f48372d186a5e71eab..bb7376bff9c4c90f3e10ae8b8f29ecdf0b51a3db 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -100,6 +100,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -26,10 +26,10 @@ index f25f7db029c0c21f31693349ef567dddeace3db1..6b651c0c4a4d13f9b9cac5aab1ab8430 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09db887a83c212b2bab799ff64ae85e4463bee77..2a69211d613757d61fb3fb86440042e1d2f8aa8d 100644 +index 68c392bcb3a8a553986f9d13bb19d8b982e481ce..e44f013dc36128facd1ef8ba40a2da1c30f6ccab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1380,6 +1380,8 @@ public class PurpurWorldConfig { +@@ -1397,6 +1397,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -38,7 +38,7 @@ index 09db887a83c212b2bab799ff64ae85e4463bee77..2a69211d613757d61fb3fb86440042e1 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1392,6 +1394,8 @@ public class PurpurWorldConfig { +@@ -1409,6 +1411,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0169-Breedable-parrots.patch b/patches/server/0169-Breedable-parrots.patch index 5a27160cf..7f2682be2 100644 --- a/patches/server/0169-Breedable-parrots.patch +++ b/patches/server/0169-Breedable-parrots.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index f7efb2088c554782fd169b901b4ef3fca3b2c0f9..629ced06cc17ebd6a359b74858d073e12c6a3b88 100644 +index 9228dc98360ff34e4cdd105be36ed249c5b67067..6c57b093366019f78627f75bab2d710c6556c030 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -228,6 +228,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index 6d36f8ef6d9534f5259133c3e7716861c1141cf3..a2309c473c62914717126774bf4eff24 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -308,6 +309,7 @@ public class PurpurWorldConfig { +@@ -325,6 +326,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0171-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0171-Add-config-change-multiplier-critical-damage-value.patch index b151de16b..843155125 100644 --- a/patches/server/0171-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0171-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 150aaa68340f25c39a9b10eda43e9941a22d0aae..97b6ab27109b1bd7614ff3cc13224526 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2309c473c62914717126774bf4eff247d5bf8ef..880ba4a76a0c55b3bd83af8af3975fabc8ef5054 100644 +index 49a41a94f064fbca3f286c628cb2a9cca0864be7..779f0658d3b7a9672f3e5bcc8268541ad3a07079 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -355,6 +355,7 @@ public class PurpurWorldConfig { +@@ -372,6 +372,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index a2309c473c62914717126774bf4eff247d5bf8ef..880ba4a76a0c55b3bd83af8af3975fab private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -376,6 +377,7 @@ public class PurpurWorldConfig { +@@ -393,6 +394,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0172-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0172-Option-to-disable-dragon-egg-teleporting.patch index 95470b700..c4d57f46c 100644 --- a/patches/server/0172-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0172-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 880ba4a76a0c55b3bd83af8af3975fabc8ef5054..3a1f7b50a7ebc921b1b1d3636e977fda185d4fac 100644 +index 779f0658d3b7a9672f3e5bcc8268541ad3a07079..a4cad3dd976320c16520ebef4de977391b613809 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -537,6 +537,11 @@ public class PurpurWorldConfig { +@@ -554,6 +554,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0175-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0175-ShulkerBox-allow-oversized-stacks.patch index cdf61f411..fd2249e58 100644 --- a/patches/server/0175-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0175-ShulkerBox-allow-oversized-stacks.patch @@ -9,7 +9,7 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for creative players) instead of routing it through the LootableBuilder. diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 9564cfd3ff593662cf5755ae1d83dee4b627cdf9..49335b4fc2a9caab1418531a814210bf52b3cc43 100644 +index 0034831358550491d57360966b1458b34b0908e2..88c8f2c53c024021e7bad1e4666e3438b53ab588 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -420,7 +420,7 @@ public class ServerPlayerGameMode { @@ -35,10 +35,10 @@ index c89978ecbc5a13dda6f76ea6d1cc3056efc9a174..39868ad3ee4bb573a4dd562894d93f64 blockEntity.saveToItem(itemStack); if (shulkerBoxBlockEntity.hasCustomName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a1f7b50a7ebc921b1b1d3636e977fda185d4fac..76a4757b4af3126b8656e1fcf141c6a9e4bb3042 100644 +index a4cad3dd976320c16520ebef4de977391b613809..26d97b1a483f4fd7a301b2bc7eb7c897fc9c0a62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -657,6 +657,11 @@ public class PurpurWorldConfig { +@@ -674,6 +674,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0176-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0176-Bee-can-work-when-raining-or-at-night.patch index 7727e9a0c..39405fbb2 100644 --- a/patches/server/0176-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0176-Bee-can-work-when-raining-or-at-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bee can work when raining or at night diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index f379f4c45c5aaf8aa8d166148cdc07517c84649a..9d087295d63115d9b916e052b419789c0aa9fc63 100644 +index 04656231fa0f96eaeb9ae463695ede400b07df09..575dbcf7a5399d7c9067b02337b1dbe294772109 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -410,7 +410,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -31,10 +31,10 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76a4757b4af3126b8656e1fcf141c6a9e4bb3042..e59079814239d176ed261a8015539261455d1b3e 100644 +index 26d97b1a483f4fd7a301b2bc7eb7c897fc9c0a62..b2d0cc6032c65e3f70904bb8cd052f7fcf8cb81b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -765,6 +765,8 @@ public class PurpurWorldConfig { +@@ -782,6 +782,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 76a4757b4af3126b8656e1fcf141c6a9e4bb3042..e59079814239d176ed261a8015539261 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -778,6 +780,8 @@ public class PurpurWorldConfig { +@@ -795,6 +797,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0178-Config-MobEffect-by-world.patch b/patches/server/0178-Config-MobEffect-by-world.patch index 295b404b2..63a836a42 100644 --- a/patches/server/0178-Config-MobEffect-by-world.patch +++ b/patches/server/0178-Config-MobEffect-by-world.patch @@ -40,10 +40,10 @@ index 2cc714585fc3790b70a7ad1ab8034543462e2b3b..22d7f04cefafa0115a4504e373807877 ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e59079814239d176ed261a8015539261455d1b3e..f713798ac0ffac9afa8105165ebbca1c4fe0ff96 100644 +index b2d0cc6032c65e3f70904bb8cd052f7fcf8cb81b..5075b3c255fed29b6c43ce32d3504fbad9014dcc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -312,6 +312,21 @@ public class PurpurWorldConfig { +@@ -329,6 +329,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0179-Beacon-Activation-Range-Configurable.patch b/patches/server/0179-Beacon-Activation-Range-Configurable.patch index 7ed7c88cf..a42bdf2fc 100644 --- a/patches/server/0179-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0179-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index ef740d1ad6352ca4af299001a081b720bc472d2e..c787019b5cbadec81dd33ef4021708b9 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f713798ac0ffac9afa8105165ebbca1c4fe0ff96..5096ffa8c11e2297d7c6882f0393cfdcf69334a0 100644 +index 5075b3c255fed29b6c43ce32d3504fbad9014dcc..175975ca0da583645394fa1ff0d76bc548b2c245 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -504,6 +504,17 @@ public class PurpurWorldConfig { +@@ -521,6 +521,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0180-Add-toggle-for-sand-duping-fix.patch b/patches/server/0180-Add-toggle-for-sand-duping-fix.patch index 584e6f134..f54cf2a54 100644 --- a/patches/server/0180-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0180-Add-toggle-for-sand-duping-fix.patch @@ -27,10 +27,10 @@ index ce2c3c146ef64400e00084bd2245d2b87a67fbc2..b0dd274fde1ce23a984de9492d7605ff } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5096ffa8c11e2297d7c6882f0393cfdcf69334a0..52e963b14ac4c672f83af436b74d399feadd8899 100644 +index 175975ca0da583645394fa1ff0d76bc548b2c245..b6669a8fd4e20c178e9b5d5f0343588e432a718b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -683,6 +683,11 @@ public class PurpurWorldConfig { +@@ -700,6 +700,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch index b7549b83c..01c45406e 100644 --- a/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 89ad0987084828037154d88d80788a8479f3732a..6f876403388f95a5b52f00985df2cde2f4d991f8 100644 +index 97046a3764bd5ec09be3e9212568a03ca42fd307..51bb177a52ea52d642ec3300ccd6fd28b3b66bb3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2962,7 +2962,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -45,10 +45,10 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52e963b14ac4c672f83af436b74d399feadd8899..54661d07b766da6cb5c8957a51336a9d96e64f09 100644 +index b6669a8fd4e20c178e9b5d5f0343588e432a718b..996bf44999c6a71943a5d14e4d1849fa329cb737 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -631,6 +631,11 @@ public class PurpurWorldConfig { +@@ -648,6 +648,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0183-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0183-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 9fcb51b3b..9814a98d4 100644 --- a/patches/server/0183-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0183-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -56,10 +56,10 @@ index 4a2dcf9bd83dd3fdff43483f887f4f58dc4715cd..87f9e03fb5e095396e054a84be60ec45 public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54661d07b766da6cb5c8957a51336a9d96e64f09..f464eccf04da611c4bcf7d187c484fcf6678d54a 100644 +index 996bf44999c6a71943a5d14e4d1849fa329cb737..54e6d43554f8cc5c9d5bb10ed869d9a333e4c214 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -371,6 +371,8 @@ public class PurpurWorldConfig { +@@ -388,6 +388,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -68,7 +68,7 @@ index 54661d07b766da6cb5c8957a51336a9d96e64f09..f464eccf04da611c4bcf7d187c484fcf private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -393,6 +395,8 @@ public class PurpurWorldConfig { +@@ -410,6 +412,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0186-Shulker-spawn-from-bullet-options.patch b/patches/server/0186-Shulker-spawn-from-bullet-options.patch index a5e3d83a1..efa7923ca 100644 --- a/patches/server/0186-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0186-Shulker-spawn-from-bullet-options.patch @@ -13,7 +13,7 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index cd0e0d15868bcefef28d801dbd2aa41ac982baac..b10ad3b4bd57e9273d677b268767f9e288b05e4c 100644 +index 41a6cd3a81c531b6349ca364b85712954a97aa11..b64c492a245494ab60c325d66dc6ec65418a1e4e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -510,11 +510,20 @@ public class Shulker extends AbstractGolem implements VariantHolder()).forEach(key -> { -@@ -246,6 +247,7 @@ public class PurpurWorldConfig { +@@ -263,6 +264,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0188-Option-to-make-drowned-break-doors.patch b/patches/server/0188-Option-to-make-drowned-break-doors.patch index 65479fdaa..ca6a20307 100644 --- a/patches/server/0188-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0188-Option-to-make-drowned-break-doors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 5ed737a9656546775540c15f81f308d94e7a3444..feef31edb1833da45c42b73894f610ac3add7c8e 100644 +index 31fb0cd50b4263abcdde323e79300c1a88b572c1..d1f5b3900dbb17d262fea85c45a82ba3a2f46cad 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; @@ -34,10 +34,10 @@ index 5ed737a9656546775540c15f81f308d94e7a3444..feef31edb1833da45c42b73894f610ac @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a23419fd4ad0d20900448d9493cc70bd9e34280f..e9554f0881392879c83dec6d18709a671d46f4eb 100644 +index 5f29c9df27495ea34ee22ba2ba8e1fb0cdd85ab9..56b27b640d1cf772c1fe466d51b3aea84065f1ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1062,6 +1062,7 @@ public class PurpurWorldConfig { +@@ -1079,6 +1079,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index a23419fd4ad0d20900448d9493cc70bd9e34280f..e9554f0881392879c83dec6d18709a67 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1077,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1094,6 +1095,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0189-Configurable-hunger-starvation-damage.patch b/patches/server/0189-Configurable-hunger-starvation-damage.patch index 5c3a48b0e..7bb38581e 100644 --- a/patches/server/0189-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0189-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 87f9e03fb5e095396e054a84be60ec455d3fbd35..3d2e3c7dd3bf5c8f483a933e9f686858 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9554f0881392879c83dec6d18709a671d46f4eb..ac2f05bb88ea9c59cbd364e02b9c652ed021d6ee 100644 +index f5ba56624339ff8b3ac87eb2f42ad5339bf83e3c..13877fd45731680332b84c3580ddc0ac5050ad02 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2565,4 +2565,9 @@ public class PurpurWorldConfig { +@@ -2582,4 +2582,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0192-Tool-actionable-options.patch b/patches/server/0192-Tool-actionable-options.patch index e9d109a63..b66addc9f 100644 --- a/patches/server/0192-Tool-actionable-options.patch +++ b/patches/server/0192-Tool-actionable-options.patch @@ -122,10 +122,10 @@ index 180aec596110309aade13d2080f8824d152b07cb..c4aec1e5135a79837918b692e75a7b55 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac2f05bb88ea9c59cbd364e02b9c652ed021d6ee..28f5b612a82eb8933666213a1c23cbd7b3d22ad6 100644 +index eb1d45c456f28bd49131f835b8e8a65253b0ce74..ce8aac7a189c0e4f8240950673066fb3d82dc86d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -503,6 +503,159 @@ public class PurpurWorldConfig { +@@ -520,6 +520,159 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0196-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0196-option-to-disable-shulker-box-items-from-dropping-co.patch index 2662e26b0..d81ef0c07 100644 --- a/patches/server/0196-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0196-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -19,10 +19,10 @@ index b0204af850ee182773ad458208cccd946ad148d5..81eb7092e6172bf9685d4feb52dabb01 CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28f5b612a82eb8933666213a1c23cbd7b3d22ad6..472794b30bc7464cd051e4c8b664819b325c7e84 100644 +index ce8aac7a189c0e4f8240950673066fb3d82dc86d..078d5d8248e8d0bb7f055579628f7d032fef4767 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -204,6 +204,7 @@ public class PurpurWorldConfig { +@@ -221,6 +221,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -30,7 +30,7 @@ index 28f5b612a82eb8933666213a1c23cbd7b3d22ad6..472794b30bc7464cd051e4c8b664819b private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -248,6 +249,7 @@ public class PurpurWorldConfig { +@@ -265,6 +266,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0197-Silk-touchable-budding-amethyst.patch b/patches/server/0197-Silk-touchable-budding-amethyst.patch index 5dc3b4dd8..474564a12 100644 --- a/patches/server/0197-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0197-Silk-touchable-budding-amethyst.patch @@ -24,10 +24,10 @@ index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a90 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 472794b30bc7464cd051e4c8b664819b325c7e84..b22b6054cbda684e59b29f394fbc59c666636f9b 100644 +index ff30b8356a3f3e012f8184fc32d91028a95f1e3a..7eeef57472233160eef67069589ddc22e5cc8222 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -697,6 +697,11 @@ public class PurpurWorldConfig { +@@ -714,6 +714,11 @@ public class PurpurWorldConfig { } } @@ -39,7 +39,7 @@ index 472794b30bc7464cd051e4c8b664819b325c7e84..b22b6054cbda684e59b29f394fbc59c6 public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2726,3 +2731,4 @@ public class PurpurWorldConfig { +@@ -2743,3 +2748,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0198-Big-dripleaf-tilt-delay.patch b/patches/server/0198-Big-dripleaf-tilt-delay.patch index 080768706..e8b0b6577 100644 --- a/patches/server/0198-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0198-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8537581e7ca1f4efb492a2e734f46f947f36cffa..5f89229ff68d923c5cdee40e72e379ba if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b22b6054cbda684e59b29f394fbc59c666636f9b..4342edfce61cd6c978fb4c858d91dabd7cc8c094 100644 +index 132f66e24a84de83327b3cd14069fe3cd4fc21f8..0e3360540a33aae9197200e171dae9a745bbb2d5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -697,6 +697,22 @@ public class PurpurWorldConfig { +@@ -714,6 +714,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0199-Player-ridable-in-water-option.patch b/patches/server/0199-Player-ridable-in-water-option.patch index 7eb49f1b6..cebeb6ac0 100644 --- a/patches/server/0199-Player-ridable-in-water-option.patch +++ b/patches/server/0199-Player-ridable-in-water-option.patch @@ -21,10 +21,10 @@ index 456460e867626ffe4a895d4d78a6afd6526ef695..b2b51b91459786b2004fdf5bf4ed6b24 if (!this.isPassenger() && this.onGround && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4342edfce61cd6c978fb4c858d91dabd7cc8c094..42a027c803ac040f52835c0a5c4472f73d5d4237 100644 +index 0e3360540a33aae9197200e171dae9a745bbb2d5..8c420d6710d3dd97ed488f5a0e00f7c8fbc13b6d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -377,6 +377,7 @@ public class PurpurWorldConfig { +@@ -394,6 +394,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -32,7 +32,7 @@ index 4342edfce61cd6c978fb4c858d91dabd7cc8c094..42a027c803ac040f52835c0a5c4472f7 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -401,6 +402,7 @@ public class PurpurWorldConfig { +@@ -418,6 +419,7 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0200-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0200-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 212d82afc..1190b76fa 100644 --- a/patches/server/0200-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0200-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index 60720f0bad840d35c9d0f1fc327f6069b348a41a..9e5f6666cbc4303d095a4f95db9acd0b 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 42a027c803ac040f52835c0a5c4472f73d5d4237..77d8bf513868c851dc089666d4c9dfb3e8f9b81a 100644 +index 967f131637618e03f119c05aadaefa0dc3a6b6fa..4a7b01606a2fe7aad5ecaf515e2ba8d4fa328539 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1317,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1334,6 +1334,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 42a027c803ac040f52835c0a5c4472f73d5d4237..77d8bf513868c851dc089666d4c9dfb3 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1339,6 +1340,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1357,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/0201-Add-compass-command.patch b/patches/server/0201-Add-compass-command.patch index 59257fd52..e2942fc67 100644 --- a/patches/server/0201-Add-compass-command.patch +++ b/patches/server/0201-Add-compass-command.patch @@ -89,10 +89,10 @@ index 31f5d9bcc11dc78b0d04c55560d5a2fa18bf3896..42532975d8c5558a7598e759838e75f2 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77d8bf513868c851dc089666d4c9dfb3e8f9b81a..288b0a82cb0ae42391e91a3a52362d7538240967 100644 +index 8f43f33e86e012c9e6c199ec159ce34b4e45cdef..4450897735088ca7b126556ebb7ee785241e850b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -205,6 +205,7 @@ public class PurpurWorldConfig { +@@ -222,6 +222,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 77d8bf513868c851dc089666d4c9dfb3e8f9b81a..288b0a82cb0ae42391e91a3a52362d75 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -250,6 +251,7 @@ public class PurpurWorldConfig { +@@ -267,6 +268,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0202-Toggle-for-kinetic-damage.patch b/patches/server/0202-Toggle-for-kinetic-damage.patch index 2ff7019ef..02b8dd962 100644 --- a/patches/server/0202-Toggle-for-kinetic-damage.patch +++ b/patches/server/0202-Toggle-for-kinetic-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 851d12caeedbe86f78056cf7b32b4f2ce9e5fc0c..10dbf4f3fb5b5acb87496c0f06da1d29f7a26521 100644 +index 501b801fc474009bd6f1b43781804edad8eda921..0da0fe3bba883633422a516bf32452772b32ac41 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2836,6 +2836,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -17,10 +17,10 @@ index 851d12caeedbe86f78056cf7b32b4f2ce9e5fc0c..10dbf4f3fb5b5acb87496c0f06da1d29 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 288b0a82cb0ae42391e91a3a52362d7538240967..9de7c49b4d4eae70cec8e1e7394f54c71d6d3e13 100644 +index 4450897735088ca7b126556ebb7ee785241e850b..8725552721e2171a4f00339eb05bd347bab1818f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -167,12 +167,14 @@ public class PurpurWorldConfig { +@@ -184,12 +184,14 @@ public class PurpurWorldConfig { public boolean elytraIgnoreUnbreaking = false; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0203-Add-Option-for-disable-observer-clocks.patch b/patches/server/0203-Add-Option-for-disable-observer-clocks.patch index 050858f2f..630cfe015 100644 --- a/patches/server/0203-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0203-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9de7c49b4d4eae70cec8e1e7394f54c71d6d3e13..4ae489298a03c24c9152d5649bb58d2ce497add1 100644 +index 8725552721e2171a4f00339eb05bd347bab1818f..d7a06f73ee7c1861a0228cb37dbd6e14e938fd17 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -350,6 +350,11 @@ public class PurpurWorldConfig { +@@ -367,6 +367,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0204-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0204-Customizeable-Zombie-Villager-curing-times.patch index 21848c62f..4a9787648 100644 --- a/patches/server/0204-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0204-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 1084adce8dc55b19ed9d90c0c5ad6675fff0afc5..9d981e392143baa43b6006ca9ef319fd return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ae489298a03c24c9152d5649bb58d2ce497add1..4e2f5aeb60d07740990802b778f45324aa27121c 100644 +index b89017929fa6f5353620ce47d06a79346d960286..9500363b31d9fcaec0b647778ff331378626d76b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2710,6 +2710,8 @@ public class PurpurWorldConfig { +@@ -2727,6 +2727,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 4ae489298a03c24c9152d5649bb58d2ce497add1..4e2f5aeb60d07740990802b778f45324 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2725,6 +2727,8 @@ public class PurpurWorldConfig { +@@ -2742,6 +2744,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/0205-Option-for-sponges-to-work-on-lava.patch b/patches/server/0205-Option-for-sponges-to-work-on-lava.patch index 14369f18e..ef102781d 100644 --- a/patches/server/0205-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0205-Option-for-sponges-to-work-on-lava.patch @@ -18,10 +18,10 @@ index d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829..df04a571ebd3c04bc7b58c1ee5661a1f ++i; if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e2f5aeb60d07740990802b778f45324aa27121c..45f4db9629ed674fcc1e779ab54a10e942c92a66 100644 +index c0ff231020261a78202b0dfb35a14b86415353a0..ace4b438823a3580517360e0fa587d5d5562c804 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -908,9 +908,11 @@ public class PurpurWorldConfig { +@@ -925,9 +925,11 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 64; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0206-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0206-Toggle-for-Wither-s-spawn-sound.patch index aeed47609..97834d523 100644 --- a/patches/server/0206-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0206-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index cb869ddaeed10f8edd0a327553bfe5dcbb405e3d..588ff25c19f7c0acc627f2d8425dbae5 // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45f4db9629ed674fcc1e779ab54a10e942c92a66..687578852880f6cd50b9a35749f866a2fef59568 100644 +index f3fc30796a2b117595ae306add12242e6b54e41d..bb4c60d16ad2dc618b08a9cc7c1c6f3d5f57b3dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2555,6 +2555,7 @@ public class PurpurWorldConfig { +@@ -2572,6 +2572,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 45f4db9629ed674fcc1e779ab54a10e942c92a66..687578852880f6cd50b9a35749f866a2 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2576,6 +2577,7 @@ public class PurpurWorldConfig { +@@ -2593,6 +2594,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0207-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0207-Cactus-breaks-from-solid-neighbors-config.patch index e14d299ed..aaefc3d40 100644 --- a/patches/server/0207-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0207-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index 7579946ce222b6ab3685a7fd9821bcd5a4babe33..2fffe4452d8f3fa5b9365dff1cfe5b5d return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 687578852880f6cd50b9a35749f866a2fef59568..2ce9bed69337d9540798e997e6432b81995f2eae 100644 +index 1316968cc4422f8bf60fae492fb4b1056f56111e..28f83de054bc1bc8477db7671a71dcf11f010370 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -729,6 +729,11 @@ public class PurpurWorldConfig { +@@ -746,6 +746,11 @@ public class PurpurWorldConfig { buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch); } diff --git a/patches/server/0208-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0208-Config-to-remove-curse-of-binding-with-weakness.patch index 87fbf2c76..9f00dbbe9 100644 --- a/patches/server/0208-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0208-Config-to-remove-curse-of-binding-with-weakness.patch @@ -26,10 +26,10 @@ index da0f5c5e6ca7ce7b38792e6da52c5cdcdbae3b78..4136bcd49fe05d916ab65de0e8661451 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ce9bed69337d9540798e997e6432b81995f2eae..57a54d0fb86a0b7c5a59428380812a0a21a9db1b 100644 +index 28f83de054bc1bc8477db7671a71dcf11f010370..749e884f3b1149a5d875867ac9fa31b85b72ac40 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -387,6 +387,7 @@ public class PurpurWorldConfig { +@@ -404,6 +404,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -37,7 +37,7 @@ index 2ce9bed69337d9540798e997e6432b81995f2eae..57a54d0fb86a0b7c5a59428380812a0a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -412,6 +413,7 @@ public class PurpurWorldConfig { +@@ -429,6 +430,7 @@ public class PurpurWorldConfig { playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0209-Conduit-behavior-configuration.patch b/patches/server/0209-Conduit-behavior-configuration.patch index a1a5ef073..0f39045ec 100644 --- a/patches/server/0209-Conduit-behavior-configuration.patch +++ b/patches/server/0209-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 57a54d0fb86a0b7c5a59428380812a0a21a9db1b..52987206a5cdb22fcacd050b5b2f2ef4c01cdcf5 100644 +index 34c454ebca52787c77c7db4b197fe2092235f06f..b151ecb65760b18bed6498db598f3de329975998 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2774,5 +2774,28 @@ public class PurpurWorldConfig { +@@ -2791,5 +2791,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0210-Cauldron-fill-chances.patch b/patches/server/0210-Cauldron-fill-chances.patch index 861c307e5..a4bf3b01a 100644 --- a/patches/server/0210-Cauldron-fill-chances.patch +++ b/patches/server/0210-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index 6b909d41ccdf6c1ac3ac0c4e673ff52f0d14a238..b8f69063cec4d31c9d9525a04c46ed89 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52987206a5cdb22fcacd050b5b2f2ef4c01cdcf5..6b453b85be946dd4f55456839552c0dcd581ebec 100644 +index b151ecb65760b18bed6498db598f3de329975998..5db387cf0b8e0fdf31da1f5b957332381590f4b3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2797,5 +2797,16 @@ public class PurpurWorldConfig { +@@ -2814,5 +2814,16 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0211-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0211-Config-to-allow-mobs-to-pathfind-over-rails.patch index a488ff2b4..11c71a21e 100644 --- a/patches/server/0211-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0211-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index 94a0fde36dda9404e5eb62d323c71dac1929a46b..17a7fab20b4174273354fdc2fc700b7f if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b453b85be946dd4f55456839552c0dcd581ebec..7f1fd8e0846ac4d852378a2d3d12ee1cb414b49d 100644 +index 912b53d574e3dc329f3727706ffe9c8b6a98b3b6..79d12e8b16f72badca9cca05bc70423de2fd1e58 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -123,6 +123,7 @@ public class PurpurWorldConfig { +@@ -140,6 +140,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,7 +29,7 @@ index 6b453b85be946dd4f55456839552c0dcd581ebec..7f1fd8e0846ac4d852378a2d3d12ee1c private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -144,6 +145,7 @@ public class PurpurWorldConfig { +@@ -161,6 +162,7 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0212-Shulker-change-color-with-dye.patch b/patches/server/0212-Shulker-change-color-with-dye.patch index dbfee0ef9..688562d9f 100644 --- a/patches/server/0212-Shulker-change-color-with-dye.patch +++ b/patches/server/0212-Shulker-change-color-with-dye.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shulker change color with dye diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index b10ad3b4bd57e9273d677b268767f9e288b05e4c..be7e8364c66466eb1206b7f91c61f82cebcec0bf 100644 +index b64c492a245494ab60c325d66dc6ec65418a1e4e..893141e599c6e1917831110470b6b1c0bb0ba1d5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -47,10 +47,10 @@ index b10ad3b4bd57e9273d677b268767f9e288b05e4c..be7e8364c66466eb1206b7f91c61f82c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f1fd8e0846ac4d852378a2d3d12ee1cb414b49d..295afe0d1093d561910b06431688720cd9c57bdc 100644 +index 79d12e8b16f72badca9cca05bc70423de2fd1e58..8418214dce4920bb42e0042dc4d11cb4764c2f78 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2125,6 +2125,7 @@ public class PurpurWorldConfig { +@@ -2142,6 +2142,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 7f1fd8e0846ac4d852378a2d3d12ee1cb414b49d..295afe0d1093d561910b06431688720c private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2141,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2159,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/0215-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0215-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index a2192a23a..0f02b9a8f 100644 --- a/patches/server/0215-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0215-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,10 +25,10 @@ index da8549ce25ce06d100baa4c36149ea5797841914..59d07b07ea81e5462ff7e57c6bc9e6f8 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 295afe0d1093d561910b06431688720cd9c57bdc..d9c758a567ba6e75d652c4c5f034e3c58612374f 100644 +index 8418214dce4920bb42e0042dc4d11cb4764c2f78..a0adc2d1bec20b8feb170dab5cc40c306ef453e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -124,6 +124,8 @@ public class PurpurWorldConfig { +@@ -141,6 +141,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 295afe0d1093d561910b06431688720cd9c57bdc..d9c758a567ba6e75d652c4c5f034e3c5 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -146,6 +148,8 @@ public class PurpurWorldConfig { +@@ -163,6 +165,8 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0216-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0216-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 7bd26a8ac..2ee5a5615 100644 --- a/patches/server/0216-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0216-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index 8584a65433555133cdcfc24a078fb0b53b9f83bc..4afc4670f9b00a4087410ec366fe45fe public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of(Material.PLANT).noCollission().sound(SoundType.PINK_PETALS).requiredFeatures(FeatureFlags.UPDATE_1_20))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d9c758a567ba6e75d652c4c5f034e3c58612374f..0935e98641218e0a54640b960fa17f45007a298e 100644 +index a0adc2d1bec20b8feb170dab5cc40c306ef453e9..13cb469e9bdde5db59bd93711fe2d2e02cff0722 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -684,6 +684,11 @@ public class PurpurWorldConfig { +@@ -701,6 +701,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -60,7 +60,7 @@ index d9c758a567ba6e75d652c4c5f034e3c58612374f..0935e98641218e0a54640b960fa17f45 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -826,6 +831,11 @@ public class PurpurWorldConfig { +@@ -843,6 +848,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0217-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0217-Shift-right-click-to-use-exp-for-mending.patch index 6440c0692..0a4b07709 100644 --- a/patches/server/0217-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0217-Shift-right-click-to-use-exp-for-mending.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 49335b4fc2a9caab1418531a814210bf52b3cc43..ebf1ac089202c06fd2cc593dc12c21fe2d0a8de8 100644 +index 88c8f2c53c024021e7bad1e4666e3438b53ab588..41d9bba8466ad9500ff02b9926e5e3cb15561e56 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -509,6 +509,7 @@ public class ServerPlayerGameMode { @@ -36,7 +36,7 @@ index 49335b4fc2a9caab1418531a814210bf52b3cc43..ebf1ac089202c06fd2cc593dc12c21fe + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fb4852272753747ba925962e51cff848fd1af9e3..4357b0f9d7d14052279442f8023097099472aca4 100644 +index 2b8d8dafc0df272ad095130021795cfa7716ef46..f6350fbe18a87a27db70e70bbcb628231a57977c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2076,6 +2076,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -48,10 +48,10 @@ index fb4852272753747ba925962e51cff848fd1af9e3..4357b0f9d7d14052279442f802309709 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0935e98641218e0a54640b960fa17f45007a298e..fd0a6e0cd2b0c1ba932bb0b4fa467460e3acbe24 100644 +index 13cb469e9bdde5db59bd93711fe2d2e02cff0722..e71f3d9fe397392c68fc8a3de600f4551c7ccd5f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -394,6 +394,7 @@ public class PurpurWorldConfig { +@@ -411,6 +411,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 0935e98641218e0a54640b960fa17f45007a298e..fd0a6e0cd2b0c1ba932bb0b4fa467460 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -420,6 +421,7 @@ public class PurpurWorldConfig { +@@ -437,6 +438,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0218-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0218-Dolphins-naturally-aggressive-to-players-chance.patch index bcca684cf..6c524aa51 100644 --- a/patches/server/0218-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0218-Dolphins-naturally-aggressive-to-players-chance.patch @@ -47,10 +47,10 @@ index f8d3a5d2dc254501c7e4405444ed4439f9af915e..c038a23c4e19c5bf160792cf599acc8f public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd0a6e0cd2b0c1ba932bb0b4fa467460e3acbe24..032a289eb2bc7915fa1d14c018664884698f6eeb 100644 +index e71f3d9fe397392c68fc8a3de600f4551c7ccd5f..6ff66f88aa0c9e16b67bbc057acd4f65b7a604df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1223,6 +1223,7 @@ public class PurpurWorldConfig { +@@ -1240,6 +1240,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index fd0a6e0cd2b0c1ba932bb0b4fa467460e3acbe24..032a289eb2bc7915fa1d14c018664884 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1237,6 +1238,7 @@ public class PurpurWorldConfig { +@@ -1254,6 +1255,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/0219-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0219-Cows-naturally-aggressive-to-players-chance.patch index 290880b4b..11133be55 100644 --- a/patches/server/0219-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0219-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index ece8f5c4277d6b42fd19df64bfa624f96f1390ca..17c94ffb73b6bc2fbf7b700934a0eb01e117756a 100644 +index 48d20fcd481e76e180410c11040b2164315fce23..7bf4b399d68b04a43465e85061113249d7ecf0d3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -38,6 +38,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -59,10 +59,10 @@ index ece8f5c4277d6b42fd19df64bfa624f96f1390ca..17c94ffb73b6bc2fbf7b700934a0eb01 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 032a289eb2bc7915fa1d14c018664884698f6eeb..73188e026f461f45a63a3b583acf3edc257dcdb1 100644 +index 6ff66f88aa0c9e16b67bbc057acd4f65b7a604df..d99280d34614bc01303ad0de23dc39400131b915 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1172,7 +1172,14 @@ public class PurpurWorldConfig { +@@ -1189,7 +1189,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -77,7 +77,7 @@ index 032a289eb2bc7915fa1d14c018664884698f6eeb..73188e026f461f45a63a3b583acf3edc cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1185,6 +1192,8 @@ public class PurpurWorldConfig { +@@ -1202,6 +1209,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/0220-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0220-Option-for-beds-to-explode-on-villager-sleep.patch index 6a2e61fc3..2f55da987 100644 --- a/patches/server/0220-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0220-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 1649070edaf0812dd480429cd6d07af84def8311..4f114d7cf5e6429e74bcf3653568beb1 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 73188e026f461f45a63a3b583acf3edc257dcdb1..e17c083d0f38c1758780ec168bc264746a6308ec 100644 +index e38e3ab793a26e47b0a7882757e0dd99985070c8..d8ae27755319b4655286099ca38d054c07874b8a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -703,6 +703,7 @@ public class PurpurWorldConfig { +@@ -720,6 +720,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 73188e026f461f45a63a3b583acf3edc257dcdb1..e17c083d0f38c1758780ec168bc26474 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -713,6 +714,7 @@ public class PurpurWorldConfig { +@@ -730,6 +731,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0221-Halloween-options-and-optimizations.patch b/patches/server/0221-Halloween-options-and-optimizations.patch index 01e90aabf..0f9094ed7 100644 --- a/patches/server/0221-Halloween-options-and-optimizations.patch +++ b/patches/server/0221-Halloween-options-and-optimizations.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index fa9ed6d5ae13ddd14ef8677ca9ad30398a2333f4..3541479dac8404b9c2ec3788cd521aec3fae7c24 100644 +index a108716b9945fafc8c51835151bc7e0ff903be35..68878b236a21a6fec7cbea0eec8e602188bc774e 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -314,7 +314,7 @@ public class Bat extends AmbientCreature { @@ -43,7 +43,7 @@ index ea897da752c96c58d137af56544e9bf50135c6ec..32a303f9ac9768daf621e3aa561cd6b3 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index f4b9d73f5ce95c7725dbffbafc29c837fe1f87e6..074cbcf451f0f524510b4ab0273fceedfba143e3 100644 +index d6093557894789eb20f79b83547620b47bb65ffb..dfa2806faedf70ca5ffe77087a67822a21e6aac2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -593,11 +593,7 @@ public class Zombie extends Monster { @@ -60,10 +60,10 @@ index f4b9d73f5ce95c7725dbffbafc29c837fe1f87e6..074cbcf451f0f524510b4ab0273fceed 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 e17c083d0f38c1758780ec168bc264746a6308ec..7debacac0f3045a2a428ce76b024d34e4832ff9f 100644 +index 06d6dacdf928c67fd336da111c1c50142aab523f..1a569f7c27e4880baeaa5b6a1aa2f9542573cb29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1565,6 +1565,13 @@ public class PurpurWorldConfig { +@@ -1582,6 +1582,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0224-Campfire-option-for-lit-when-placed.patch b/patches/server/0224-Campfire-option-for-lit-when-placed.patch index 9455d661f..92fc0fd90 100644 --- a/patches/server/0224-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0224-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 219c87dcf065e86512f330fbeec59e55f4675083..f8fd3b320494d1c1e8ee3d170f2feebd @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7debacac0f3045a2a428ce76b024d34e4832ff9f..add3c8a76950a69a0a3bf4e1a99e9477229b251d 100644 +index 1a569f7c27e4880baeaa5b6a1aa2f9542573cb29..26277dd2df640b83e823e386b4ab61d66473faf5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -751,6 +751,11 @@ public class PurpurWorldConfig { +@@ -768,6 +768,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0225-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0225-options-to-extinguish-fire-blocks-with-snowballs.patch index a276dc35d..e66dfcd84 100644 --- a/patches/server/0225-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0225-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index 5827236f351cd0679af764644bb22bb286ac361d..9a84e8cc1d1b2803a061fe9ef6297c9c protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index add3c8a76950a69a0a3bf4e1a99e9477229b251d..b6e7e55ddb65770eab39dabe7ff06e39b833d532 100644 +index 26277dd2df640b83e823e386b4ab61d66473faf5..26cd4abf4e14122ad9e02542c4a901c00eb9c471 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -214,6 +214,9 @@ public class PurpurWorldConfig { +@@ -231,6 +231,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index add3c8a76950a69a0a3bf4e1a99e9477229b251d..b6e7e55ddb65770eab39dabe7ff06e39 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -260,6 +263,9 @@ public class PurpurWorldConfig { +@@ -277,6 +280,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0226-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0226-Add-option-to-disable-zombie-villagers-cure.patch index 41645dee3..dbf1b905e 100644 --- a/patches/server/0226-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0226-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 9d981e392143baa43b6006ca9ef319fd538c304a..ce644b92598f70872e365584844eaefa itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b6e7e55ddb65770eab39dabe7ff06e39b833d532..1940561103a7f96a8ef900c581d08d9a11391025 100644 +index 7c9708769c402a3724bf20d29ee1d5de368f32b3..613dffca78f5120d0c905e62f2f60b1763cd0c55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2774,6 +2774,7 @@ public class PurpurWorldConfig { +@@ -2791,6 +2791,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index b6e7e55ddb65770eab39dabe7ff06e39b833d532..1940561103a7f96a8ef900c581d08d9a private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2791,6 +2792,7 @@ public class PurpurWorldConfig { +@@ -2808,6 +2809,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0227-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0227-Persistent-BlockEntity-Lore-and-DisplayName.patch index fa4d43770..bea97fa9f 100644 --- a/patches/server/0227-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0227-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -195,10 +195,18 @@ index 1b248db497500aa6bd346b306dcb908af77626f3..64c55f3ebdbc27f7f0cea38247ff7b35 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1940561103a7f96a8ef900c581d08d9a11391025..cfa0dee44fcf03c9cc2036d94d8e6b5ae5b0fa4f 100644 +index 613dffca78f5120d0c905e62f2f60b1763cd0c55..fcce194a3a01db4b2433e83d808b2bb7672c3640 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -138,6 +138,7 @@ public class PurpurWorldConfig { +@@ -132,6 +132,7 @@ public class PurpurWorldConfig { + public boolean milkCuresBadOmen = true; + public boolean noteBlockIgnoreAbove = false; + public boolean persistentDroppableEntityDisplayNames = false; ++ public boolean persistentTileEntityDisplayNames = false; + public boolean projectilesBypassMobGriefing = false; + public boolean tickFluids = true; + public double mobsBlindnessMultiplier = 1; +@@ -155,6 +156,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0228-Signs-allow-color-codes.patch b/patches/server/0228-Signs-allow-color-codes.patch index 1bf545f24..301757d4a 100644 --- a/patches/server/0228-Signs-allow-color-codes.patch +++ b/patches/server/0228-Signs-allow-color-codes.patch @@ -17,7 +17,7 @@ index b4544ea2a307c2b89796753e33f64ffaf893f83f..087fd880ec62fed20383ef665b4f4d2e this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4357b0f9d7d14052279442f8023097099472aca4..f6d0fff3c7d71b93f62fc4850fa14e6703517fae 100644 +index f6350fbe18a87a27db70e70bbcb628231a57977c..00981d521fd8e73e586efb46926d5e42520ac4f9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3532,11 +3532,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -70,10 +70,10 @@ index 4da4edae517a0efec6e03a719ec47b700509dab1..9e760a8e8244b15daaf0abdfc5f8a51d public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cfa0dee44fcf03c9cc2036d94d8e6b5ae5b0fa4f..74f52dc66522f7ee44113d8eb1cab96ace4e2464 100644 +index 35e9d41a22a48f05a9bf0e934ecc1f08dc18412d..06dbb9b24a27552133a57573ffa44e22671dc7ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -931,8 +931,10 @@ public class PurpurWorldConfig { +@@ -949,8 +949,10 @@ public class PurpurWorldConfig { } public boolean signRightClickEdit = false; diff --git a/patches/server/0230-Mobs-always-drop-experience.patch b/patches/server/0230-Mobs-always-drop-experience.patch index be1a10100..1550e71c0 100644 --- a/patches/server/0230-Mobs-always-drop-experience.patch +++ b/patches/server/0230-Mobs-always-drop-experience.patch @@ -645,7 +645,7 @@ index 0217eebab2bac9f647ec00888190fafb7c741497..916cf5137808003058a787210fc3343d public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 9e5f6666cbc4303d095a4f95db9acd0bbc38f825..9de39557196e4a25d9227608d20f992b521a55c9 100644 +index 7b6287231131fb39a8bab756f7fda3c9edded93d..8accf3abb5ba38faad29bd7d7e1a594d9ba6ced2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -112,6 +112,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1157,10 +1157,10 @@ index e06f3ee85dde587f1146d4a3d70e8a2e5b9a128b..2e9dd920e5c3943cba4c53ec2a2b48ee @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781ff9a6f254 100644 +index 8a9f7b7d831d2b812f4833835bcba68845f42f39..2261e51166b9bf487bb109977b6db9630b5c9631 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -995,12 +995,14 @@ public class PurpurWorldConfig { +@@ -1013,12 +1013,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean batRidable = false; -@@ -1016,6 +1018,7 @@ public class PurpurWorldConfig { +@@ -1034,6 +1036,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1028,6 +1031,7 @@ public class PurpurWorldConfig { +@@ -1046,6 +1049,7 @@ public class PurpurWorldConfig { } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean beeRidable = false; -@@ -1039,6 +1043,7 @@ public class PurpurWorldConfig { +@@ -1057,6 +1061,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1054,6 +1059,7 @@ public class PurpurWorldConfig { +@@ -1072,6 +1077,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean blazeRidable = false; -@@ -1062,6 +1068,7 @@ public class PurpurWorldConfig { +@@ -1080,6 +1086,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1074,6 +1081,7 @@ public class PurpurWorldConfig { +@@ -1092,6 +1099,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public int camelBreedingTicks = 6000; -@@ -1103,6 +1111,7 @@ public class PurpurWorldConfig { +@@ -1121,6 +1129,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1123,6 +1132,7 @@ public class PurpurWorldConfig { +@@ -1141,6 +1150,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean caveSpiderRidable = false; -@@ -1130,6 +1140,7 @@ public class PurpurWorldConfig { +@@ -1148,6 +1158,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1141,6 +1152,7 @@ public class PurpurWorldConfig { +@@ -1159,6 +1170,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean chickenRidable = false; -@@ -1150,6 +1162,7 @@ public class PurpurWorldConfig { +@@ -1168,6 +1180,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1163,12 +1176,14 @@ public class PurpurWorldConfig { +@@ -1181,12 +1194,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1179,6 +1194,7 @@ public class PurpurWorldConfig { +@@ -1197,6 +1212,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean cowRidable = false; -@@ -1190,6 +1206,7 @@ public class PurpurWorldConfig { +@@ -1208,6 +1224,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1210,6 +1227,7 @@ public class PurpurWorldConfig { +@@ -1228,6 +1245,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean creeperRidable = false; -@@ -1222,6 +1240,7 @@ public class PurpurWorldConfig { +@@ -1240,6 +1258,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1238,6 +1257,7 @@ public class PurpurWorldConfig { +@@ -1256,6 +1275,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean dolphinRidable = false; -@@ -1249,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1267,6 +1287,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1264,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1303,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean donkeyRidableInWater = false; -@@ -1275,6 +1297,7 @@ public class PurpurWorldConfig { +@@ -1293,6 +1315,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; // TODO: re-implement public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1292,6 +1315,7 @@ public class PurpurWorldConfig { +@@ -1310,6 +1333,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean drownedRidable = false; -@@ -1304,6 +1328,7 @@ public class PurpurWorldConfig { +@@ -1322,6 +1346,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1320,12 +1345,14 @@ public class PurpurWorldConfig { +@@ -1338,12 +1363,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1336,6 +1363,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1381,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean enderDragonRidable = false; -@@ -1381,6 +1409,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1427,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1404,6 +1433,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1451,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean endermiteRidable = false; -@@ -1411,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1429,6 +1459,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1422,6 +1453,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1471,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean evokerRidable = false; -@@ -1430,6 +1462,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1480,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1442,6 +1475,7 @@ public class PurpurWorldConfig { +@@ -1460,6 +1493,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean foxRidable = false; -@@ -1452,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1504,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1466,6 +1501,7 @@ public class PurpurWorldConfig { +@@ -1484,6 +1519,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean frogRidable = false; -@@ -1487,6 +1523,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1541,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1499,6 +1536,7 @@ public class PurpurWorldConfig { +@@ -1517,6 +1554,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean giantRidable = false; -@@ -1512,6 +1550,7 @@ public class PurpurWorldConfig { +@@ -1530,6 +1568,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1533,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1590,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean glowSquidRidable = false; -@@ -1540,12 +1580,14 @@ public class PurpurWorldConfig { +@@ -1558,12 +1598,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean goatRidable = false; -@@ -1554,6 +1596,7 @@ public class PurpurWorldConfig { +@@ -1572,6 +1614,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1561,12 +1604,14 @@ public class PurpurWorldConfig { +@@ -1579,12 +1622,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1577,6 +1622,7 @@ public class PurpurWorldConfig { +@@ -1595,6 +1640,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean forceHalloweenSeason = false; -@@ -1592,6 +1638,7 @@ public class PurpurWorldConfig { +@@ -1610,6 +1656,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1604,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1669,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean horseRidableInWater = false; -@@ -1615,6 +1663,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1681,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; // TODO: re-implement public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1632,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1650,6 +1699,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean huskRidable = false; -@@ -1643,6 +1693,7 @@ public class PurpurWorldConfig { +@@ -1661,6 +1711,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1658,6 +1709,7 @@ public class PurpurWorldConfig { +@@ -1676,6 +1727,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean illusionerRidable = false; -@@ -1667,6 +1719,7 @@ public class PurpurWorldConfig { +@@ -1685,6 +1737,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1684,6 +1737,7 @@ public class PurpurWorldConfig { +@@ -1702,6 +1755,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean ironGolemRidable = false; -@@ -1694,6 +1748,7 @@ public class PurpurWorldConfig { +@@ -1712,6 +1766,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1708,6 +1763,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1781,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean llamaRidable = false; -@@ -1722,6 +1778,7 @@ public class PurpurWorldConfig { +@@ -1740,6 +1796,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1742,6 +1799,7 @@ public class PurpurWorldConfig { +@@ -1760,6 +1817,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean magmaCubeRidable = false; -@@ -1752,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1770,6 +1828,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1766,6 +1825,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1843,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean mooshroomRidable = false; -@@ -1774,6 +1834,7 @@ public class PurpurWorldConfig { +@@ -1792,6 +1852,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1786,6 +1847,7 @@ public class PurpurWorldConfig { +@@ -1804,6 +1865,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean muleRidableInWater = false; -@@ -1797,6 +1859,7 @@ public class PurpurWorldConfig { +@@ -1815,6 +1877,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; // TODO: re-implement public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1814,6 +1877,7 @@ public class PurpurWorldConfig { +@@ -1832,6 +1895,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean ocelotRidable = false; -@@ -1822,6 +1886,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1904,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1834,6 +1899,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1917,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean pandaRidable = false; -@@ -1842,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1860,6 +1926,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1854,6 +1921,7 @@ public class PurpurWorldConfig { +@@ -1872,6 +1939,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean parrotRidable = false; -@@ -1863,6 +1931,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +1949,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1876,6 +1945,7 @@ public class PurpurWorldConfig { +@@ -1894,6 +1963,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean phantomRidable = false; -@@ -1903,6 +1973,7 @@ public class PurpurWorldConfig { +@@ -1921,6 +1991,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1938,6 +2009,7 @@ public class PurpurWorldConfig { +@@ -1956,6 +2027,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean pigRidable = false; -@@ -1947,6 +2019,7 @@ public class PurpurWorldConfig { +@@ -1965,6 +2037,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1960,6 +2033,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2051,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean piglinRidable = false; -@@ -1969,6 +2043,7 @@ public class PurpurWorldConfig { +@@ -1987,6 +2061,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1982,6 +2057,7 @@ public class PurpurWorldConfig { +@@ -2000,6 +2075,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean piglinBruteRidable = false; -@@ -1989,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -2007,6 +2083,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2000,6 +2077,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2095,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean pillagerRidable = false; -@@ -2008,6 +2086,7 @@ public class PurpurWorldConfig { +@@ -2026,6 +2104,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2020,6 +2099,7 @@ public class PurpurWorldConfig { +@@ -2038,6 +2117,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean polarBearRidable = false; -@@ -2030,6 +2110,7 @@ public class PurpurWorldConfig { +@@ -2048,6 +2128,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2045,12 +2126,14 @@ public class PurpurWorldConfig { +@@ -2063,12 +2144,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2061,6 +2144,7 @@ public class PurpurWorldConfig { +@@ -2079,6 +2162,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean rabbitRidable = false; -@@ -2072,6 +2156,7 @@ public class PurpurWorldConfig { +@@ -2090,6 +2174,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2087,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2190,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean ravagerRidable = false; -@@ -2096,6 +2182,7 @@ public class PurpurWorldConfig { +@@ -2114,6 +2200,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2125,12 +2212,14 @@ public class PurpurWorldConfig { +@@ -2143,12 +2230,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2141,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2159,6 +2248,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean sheepRidable = false; -@@ -2150,6 +2240,7 @@ public class PurpurWorldConfig { +@@ -2168,6 +2258,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2163,6 +2254,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2272,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean shulkerRidable = false; -@@ -2176,6 +2268,7 @@ public class PurpurWorldConfig { +@@ -2194,6 +2286,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2193,6 +2286,7 @@ public class PurpurWorldConfig { +@@ -2211,6 +2304,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean silverfishRidable = false; -@@ -2201,6 +2295,7 @@ public class PurpurWorldConfig { +@@ -2219,6 +2313,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2213,6 +2308,7 @@ public class PurpurWorldConfig { +@@ -2231,6 +2326,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean skeletonRidable = false; -@@ -2220,6 +2316,7 @@ public class PurpurWorldConfig { +@@ -2238,6 +2334,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2231,6 +2328,7 @@ public class PurpurWorldConfig { +@@ -2249,6 +2346,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean skeletonHorseRidableInWater = true; -@@ -2242,6 +2340,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2358,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; // TODO: re-implement public double skeletonHorseMovementSpeedMax = 0.2D; // TODO: re-implement public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2258,6 +2357,7 @@ public class PurpurWorldConfig { +@@ -2276,6 +2375,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean slimeRidable = false; -@@ -2268,6 +2368,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2386,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2282,6 +2383,7 @@ public class PurpurWorldConfig { +@@ -2300,6 +2401,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean snowGolemRidable = false; -@@ -2297,6 +2399,7 @@ public class PurpurWorldConfig { +@@ -2315,6 +2417,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2316,6 +2419,7 @@ public class PurpurWorldConfig { +@@ -2334,6 +2437,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public int snifferBreedingTicks = 6000; -@@ -2330,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2348,6 +2452,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2343,6 +2448,7 @@ public class PurpurWorldConfig { +@@ -2361,6 +2466,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean spiderRidable = false; -@@ -2350,6 +2456,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2474,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2361,6 +2468,7 @@ public class PurpurWorldConfig { +@@ -2379,6 +2486,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean strayRidable = false; -@@ -2368,6 +2476,7 @@ public class PurpurWorldConfig { +@@ -2386,6 +2494,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2379,6 +2488,7 @@ public class PurpurWorldConfig { +@@ -2397,6 +2506,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean striderRidable = false; -@@ -2388,6 +2498,7 @@ public class PurpurWorldConfig { +@@ -2406,6 +2516,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2401,6 +2512,7 @@ public class PurpurWorldConfig { +@@ -2419,6 +2530,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean tadpoleRidable = false; -@@ -2423,6 +2535,7 @@ public class PurpurWorldConfig { +@@ -2441,6 +2553,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; // TODO: re-implement public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2442,12 +2555,14 @@ public class PurpurWorldConfig { +@@ -2460,12 +2573,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2458,6 +2573,7 @@ public class PurpurWorldConfig { +@@ -2476,6 +2591,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean turtleRidable = false; -@@ -2466,6 +2582,7 @@ public class PurpurWorldConfig { +@@ -2484,6 +2600,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2478,6 +2595,7 @@ public class PurpurWorldConfig { +@@ -2496,6 +2613,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean vexRidable = false; -@@ -2486,6 +2604,7 @@ public class PurpurWorldConfig { +@@ -2504,6 +2622,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2498,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2516,6 +2635,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean villagerRidable = false; -@@ -2513,6 +2633,7 @@ public class PurpurWorldConfig { +@@ -2531,6 +2651,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2532,6 +2653,7 @@ public class PurpurWorldConfig { +@@ -2550,6 +2671,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean vindicatorRidable = false; -@@ -2540,6 +2662,7 @@ public class PurpurWorldConfig { +@@ -2558,6 +2680,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2552,6 +2675,7 @@ public class PurpurWorldConfig { +@@ -2570,6 +2693,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean wanderingTraderRidable = false; -@@ -2562,6 +2686,7 @@ public class PurpurWorldConfig { +@@ -2580,6 +2704,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2576,6 +2701,7 @@ public class PurpurWorldConfig { +@@ -2594,6 +2719,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean wardenRidable = false; -@@ -2592,6 +2718,7 @@ public class PurpurWorldConfig { +@@ -2610,6 +2736,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2603,6 +2730,7 @@ public class PurpurWorldConfig { +@@ -2621,6 +2748,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean witherRidable = false; -@@ -2617,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2635,6 +2763,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2639,6 +2768,7 @@ public class PurpurWorldConfig { +@@ -2657,6 +2786,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean witherSkeletonRidable = false; -@@ -2646,6 +2776,7 @@ public class PurpurWorldConfig { +@@ -2664,6 +2794,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2657,6 +2788,7 @@ public class PurpurWorldConfig { +@@ -2675,6 +2806,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean wolfRidable = false; -@@ -2668,6 +2800,7 @@ public class PurpurWorldConfig { +@@ -2686,6 +2818,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2687,6 +2820,7 @@ public class PurpurWorldConfig { +@@ -2705,6 +2838,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean zoglinRidable = false; -@@ -2694,6 +2828,7 @@ public class PurpurWorldConfig { +@@ -2712,6 +2846,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2705,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2723,6 +2858,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean zombieRidable = false; -@@ -2718,6 +2854,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2872,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2735,6 +2872,7 @@ public class PurpurWorldConfig { +@@ -2753,6 +2890,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean zombieHorseRidableInWater = false; -@@ -2747,6 +2885,7 @@ public class PurpurWorldConfig { +@@ -2765,6 +2903,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; // TODO: re-implement public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2764,6 +2903,7 @@ public class PurpurWorldConfig { +@@ -2782,6 +2921,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean zombieVillagerRidable = false; -@@ -2778,6 +2918,7 @@ public class PurpurWorldConfig { +@@ -2796,6 +2936,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2796,6 +2937,7 @@ public class PurpurWorldConfig { +@@ -2814,6 +2955,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 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f } public boolean zombifiedPiglinRidable = false; -@@ -2808,6 +2950,7 @@ public class PurpurWorldConfig { +@@ -2826,6 +2968,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 74f52dc66522f7ee44113d8eb1cab96ace4e2464..cb95add353917c54e2dc4d0ad204781f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2824,6 +2967,7 @@ public class PurpurWorldConfig { +@@ -2842,6 +2985,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/0233-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0233-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index f582716fc..9c4401c2f 100644 --- a/patches/server/0233-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0233-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index e55720c4d2fbdf6aae526910e87a67c29cf906fd..0e4026e9d39735b840f12e59f84469b9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb95add353917c54e2dc4d0ad204781ff9a6f254..a1661aa333367787fdbb1993f0be0a949ab6dd31 100644 +index cc5b1dfd4f28823a40185ea70928a5b90a3e9835..d3fd9a7ad777543811d95044ed461d26ba9c1195 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -537,6 +537,8 @@ public class PurpurWorldConfig { +@@ -555,6 +555,8 @@ public class PurpurWorldConfig { public Map axeWaxables = new HashMap<>(); public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); @@ -86,7 +86,7 @@ index cb95add353917c54e2dc4d0ad204781ff9a6f254..a1661aa333367787fdbb1993f0be0a94 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -684,6 +686,8 @@ public class PurpurWorldConfig { +@@ -702,6 +704,8 @@ public class PurpurWorldConfig { }); hoeTillables.put(block, new Tillable(condition, into, drops)); }); diff --git a/patches/server/0234-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0234-Shearing-jeb-produces-random-color-wool.patch index f7743be6f..0adb44403 100644 --- a/patches/server/0234-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0234-Shearing-jeb-produces-random-color-wool.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shearing jeb produces random color wool diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 507526b0961f0f22f6ac67d60bb1de039d1ccf10..f168b84507a821f279a3341460dbd8dce0a5569c 100644 +index 411fa176dd1b6368437da593140204fdec7721f8..004552b0730a2b35e6a2c973a9f9f8fa9e487967 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -314,7 +314,7 @@ public class Sheep extends Animal implements Shearable { @@ -18,10 +18,10 @@ index 507526b0961f0f22f6ac67d60bb1de039d1ccf10..f168b84507a821f279a3341460dbd8dc if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1661aa333367787fdbb1993f0be0a949ab6dd31..ba2ef02296280aba44661c0ea740f05552f21dab 100644 +index d3fd9a7ad777543811d95044ed461d26ba9c1195..32701d1c4456059b61a034879bd837e5b27b8f50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2245,6 +2245,7 @@ public class PurpurWorldConfig { +@@ -2263,6 +2263,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index a1661aa333367787fdbb1993f0be0a949ab6dd31..ba2ef02296280aba44661c0ea740f055 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2259,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2277,6 +2278,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/0235-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0235-Turtle-eggs-random-tick-crack-chance.patch index 765b14d0b..c5b18bbd3 100644 --- a/patches/server/0235-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0235-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 7495e0e8beedad59fff24ebf189b58b307f7d796..70997b83fd7631ebf3c5bda67ef77bef @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba2ef02296280aba44661c0ea740f05552f21dab..b961823fd479eb835639791ea5f962528a146e03 100644 +index 32701d1c4456059b61a034879bd837e5b27b8f50..077c1769df4dbebfe5d0c5759b9766d12ee8b601 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -964,11 +964,13 @@ public class PurpurWorldConfig { +@@ -982,11 +982,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0236-Mob-head-visibility-percent.patch b/patches/server/0236-Mob-head-visibility-percent.patch index 3319e3d44..44e081531 100644 --- a/patches/server/0236-Mob-head-visibility-percent.patch +++ b/patches/server/0236-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 10dbf4f3fb5b5acb87496c0f06da1d29f7a26521..6da57caf6ed0deb17bb99d0ba0a7344f // 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 b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f28492fb1859 100644 +index 9622f8be1d3a4c46ad63868cc237c5ca6f1a25f5..84d3449f19e91098797c9e32139024f5419477b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1247,6 +1247,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1265,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1264,6 +1265,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1283,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 b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 } public boolean dolphinRidable = false; -@@ -2050,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -2068,6 +2070,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2064,6 +2067,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2085,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 b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 } public boolean piglinBruteRidable = false; -@@ -2325,6 +2329,7 @@ public class PurpurWorldConfig { +@@ -2343,6 +2347,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2337,6 +2342,7 @@ public class PurpurWorldConfig { +@@ -2355,6 +2360,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 b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 } public boolean skeletonHorseRidableInWater = true; -@@ -2863,6 +2869,7 @@ public class PurpurWorldConfig { +@@ -2881,6 +2887,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index b961823fd479eb835639791ea5f962528a146e03..bf3f1415ec7a8dee5ac21b272b48f284 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2881,6 +2888,7 @@ public class PurpurWorldConfig { +@@ -2899,6 +2906,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/0239-Stop-bees-from-dying-after-stinging.patch b/patches/server/0239-Stop-bees-from-dying-after-stinging.patch index 1939e97f0..34a51725f 100644 --- a/patches/server/0239-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0239-Stop-bees-from-dying-after-stinging.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stop bees from dying after stinging diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index d87b3bca72d4e4866d41053b47adb96555851b3a..0660eb12f47f02cfff9ded1cdb965acbacb0d077 100644 +index 2c3967d2b9d3e7999def21af521bfc443f50c02f..7d7f95d8197214505a8309f947aba1a7c8b780e4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -455,6 +455,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -17,10 +17,10 @@ index d87b3bca72d4e4866d41053b47adb96555851b3a..0660eb12f47f02cfff9ded1cdb965acb ++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 bf3f1415ec7a8dee5ac21b272b48f28492fb1859..75610dd50cd1d5a56b7562e7dcda17dce250caa4 100644 +index 559c010dcb476ba7a54b64550a384634180c2a09..c8c1b23c2a3147c236ed1d71a64703697ad7e91f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1050,6 +1050,7 @@ public class PurpurWorldConfig { +@@ -1068,6 +1068,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index bf3f1415ec7a8dee5ac21b272b48f28492fb1859..75610dd50cd1d5a56b7562e7dcda17dc private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1066,6 +1067,7 @@ public class PurpurWorldConfig { +@@ -1084,6 +1085,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/0241-Configurable-farmland-trample-height.patch b/patches/server/0241-Configurable-farmland-trample-height.patch index 7e3de90ea..a703df310 100644 --- a/patches/server/0241-Configurable-farmland-trample-height.patch +++ b/patches/server/0241-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index eed062c9cf1103d7ac96695e3620d4276edcd2aa..69cc276fecd4cac51d38bd3cc7de490a org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75610dd50cd1d5a56b7562e7dcda17dce250caa4..472c8f948f31ce9c0f0cdcdb7070b0e5f0c5b82b 100644 +index c8c1b23c2a3147c236ed1d71a64703697ad7e91f..5de3a54fa24576b0badb77cd08a97d9c7f63afa8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -842,6 +842,7 @@ public class PurpurWorldConfig { +@@ -860,6 +860,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 75610dd50cd1d5a56b7562e7dcda17dce250caa4..472c8f948f31ce9c0f0cdcdb7070b0e5 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -849,6 +850,7 @@ public class PurpurWorldConfig { +@@ -867,6 +868,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/0242-Configurable-player-pickup-exp-delay.patch b/patches/server/0242-Configurable-player-pickup-exp-delay.patch index 7120a8f09..c1cb87062 100644 --- a/patches/server/0242-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0242-Configurable-player-pickup-exp-delay.patch @@ -24,7 +24,7 @@ index 7043f15f84d6c847bf376025c8e2150bdf650457..df8d8f85f8db396b7db9fa6e46aa55c9 int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index b2b51b91459786b2004fdf5bf4ed6b24cabc384e..a1d0f65a9ec3618b19dd748b7036a2c138e860f0 100644 +index bc6aef5141ce87e96d2c267ad10a12fc2858a186..e61f7ab7fb711e2567ddae4bf7580d9d26aa6037 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -624,7 +624,7 @@ public abstract class Player extends LivingEntity { @@ -37,10 +37,10 @@ index b2b51b91459786b2004fdf5bf4ed6b24cabc384e..a1d0f65a9ec3618b19dd748b7036a2c1 } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 472c8f948f31ce9c0f0cdcdb7070b0e5f0c5b82b..0ee304e96b09a8be90555e2c33900a5747f61a5e 100644 +index 5de3a54fa24576b0badb77cd08a97d9c7f63afa8..e2c06ca454ea6dc56f24a3848f5cd14997185ab1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -402,6 +402,7 @@ public class PurpurWorldConfig { +@@ -420,6 +420,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -48,7 +48,7 @@ index 472c8f948f31ce9c0f0cdcdb7070b0e5f0c5b82b..0ee304e96b09a8be90555e2c33900a57 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -429,6 +430,7 @@ public class PurpurWorldConfig { +@@ -447,6 +448,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0243-Allow-void-trading.patch b/patches/server/0243-Allow-void-trading.patch index 17b74adfd..692f2279e 100644 --- a/patches/server/0243-Allow-void-trading.patch +++ b/patches/server/0243-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 59d07b07ea81e5462ff7e57c6bc9e6f8d7213b79..2d61a0c7dfeb868403d64abbf847121f } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ee304e96b09a8be90555e2c33900a5747f61a5e..7a540c9cbbfc1f308e3d2e5b30a79abfe48492a2 100644 +index e2c06ca454ea6dc56f24a3848f5cd14997185ab1..abed53c92f4face32811aa0979c595cbd34d4901 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -403,6 +403,7 @@ public class PurpurWorldConfig { +@@ -421,6 +421,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 0ee304e96b09a8be90555e2c33900a5747f61a5e..7a540c9cbbfc1f308e3d2e5b30a79abf private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -431,6 +432,7 @@ public class PurpurWorldConfig { +@@ -449,6 +450,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0245-Configurable-phantom-size.patch b/patches/server/0245-Configurable-phantom-size.patch index bcf5f8c95..6761151a7 100644 --- a/patches/server/0245-Configurable-phantom-size.patch +++ b/patches/server/0245-Configurable-phantom-size.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable phantom size diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 7b1c6aebc7d3327a1ad35b936a017b5eeaff8d99..f292ff4225ee0120732a9d4c784cea7e9ba4480f 100644 +index f7a6ed9f9fd0c76222beffff0748261020aa4fd4..86096fb78f98c0ab86a26567b6fa78c30ee92613 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -272,7 +272,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -22,10 +22,10 @@ index 7b1c6aebc7d3327a1ad35b936a017b5eeaff8d99..f292ff4225ee0120732a9d4c784cea7e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7a540c9cbbfc1f308e3d2e5b30a79abfe48492a2..444e5d46f0795b6461f12c156b15ffc0ae2a419e 100644 +index abed53c92f4face32811aa0979c595cbd34d4901..94a6a30f186b0080920d1260df896cf62ef85ed4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1990,6 +1990,8 @@ public class PurpurWorldConfig { +@@ -2008,6 +2008,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 7a540c9cbbfc1f308e3d2e5b30a79abfe48492a2..444e5d46f0795b6461f12c156b15ffc0 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2026,6 +2028,13 @@ public class PurpurWorldConfig { +@@ -2044,6 +2046,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/0248-Configurable-minimum-demand-for-trades.patch b/patches/server/0248-Configurable-minimum-demand-for-trades.patch index c77e14e59..acaef5c79 100644 --- a/patches/server/0248-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0248-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index fd50d1c2435b82215bc5b3fdbe5044d426bc342e..68ffea572045634f1ad67a6954d480e6 public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 444e5d46f0795b6461f12c156b15ffc0ae2a419e..045f191e843c97229da66dd5ee2db368dac8d30f 100644 +index b76778dde88408667e43c0ea54906051157067b0..12aac9a21d8ded7429bcda4dc62fcd52787982a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2665,6 +2665,7 @@ public class PurpurWorldConfig { +@@ -2683,6 +2683,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 444e5d46f0795b6461f12c156b15ffc0ae2a419e..045f191e843c97229da66dd5ee2db368 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2685,6 +2686,7 @@ public class PurpurWorldConfig { +@@ -2703,6 +2704,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/0249-Lobotomize-stuck-villagers.patch b/patches/server/0249-Lobotomize-stuck-villagers.patch index 4ff6f1e76..5eae28b0c 100644 --- a/patches/server/0249-Lobotomize-stuck-villagers.patch +++ b/patches/server/0249-Lobotomize-stuck-villagers.patch @@ -108,10 +108,10 @@ index a1a8ac55e572156671e47317ba061855be79e5ac..ec3fb8865211bd7625103c37af7b96df + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 045f191e843c97229da66dd5ee2db368dac8d30f..9ec31e504d63b4a41a7f46014e2c6e70d2caa6b0 100644 +index 12aac9a21d8ded7429bcda4dc62fcd52787982a8..da09ff6ee051cc811fdcbbe134126bc98b9964fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2666,6 +2666,8 @@ public class PurpurWorldConfig { +@@ -2684,6 +2684,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -120,7 +120,7 @@ index 045f191e843c97229da66dd5ee2db368dac8d30f..9ec31e504d63b4a41a7f46014e2c6e70 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2687,6 +2689,17 @@ public class PurpurWorldConfig { +@@ -2705,6 +2707,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/0250-Option-for-villager-display-trade-item.patch b/patches/server/0250-Option-for-villager-display-trade-item.patch index 7130b2fbb..cf3fa4898 100644 --- a/patches/server/0250-Option-for-villager-display-trade-item.patch +++ b/patches/server/0250-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 98373e013748817209b811d4adbb40a8787242a6..567b501f4de7556e55e2418d2f5700b4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9ec31e504d63b4a41a7f46014e2c6e70d2caa6b0..37a145f13375902d1824c26e8ed975251daa7093 100644 +index da09ff6ee051cc811fdcbbe134126bc98b9964fa..8908383b77c638ef3d224c5c7d055eca959efee4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2668,6 +2668,7 @@ public class PurpurWorldConfig { +@@ -2686,6 +2686,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 9ec31e504d63b4a41a7f46014e2c6e70d2caa6b0..37a145f13375902d1824c26e8ed97525 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2700,6 +2701,7 @@ public class PurpurWorldConfig { +@@ -2718,6 +2719,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0251-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0251-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 3bb5c401c..b73ea9aef 100644 --- a/patches/server/0251-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0251-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 35cfa366baf6747105faa93f1220bb9cc31a5bd5..ff3a6755d04f2280a36bd363ab1722e0 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 37a145f13375902d1824c26e8ed975251daa7093..2c498e2ad2e85eed3cb592e1b62011923c982899 100644 +index 6a94ed9fc3a40b95dfba420935b0103098bcdbc6..a874dbc550040d6f802408661640f8111600bfd4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -953,8 +953,10 @@ public class PurpurWorldConfig { +@@ -971,8 +971,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0252-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0252-Config-for-mob-last-hurt-by-player-time.patch index 8ea8ae736..12eb47915 100644 --- a/patches/server/0252-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0252-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6da57caf6ed0deb17bb99d0ba0a7344ff5143767..9ff8a54f48d0f3c8a4b434f5dae7bf31c7a334e5 100644 +index 8a38970579e9ffefb4dcb09a6970b2573a6e0a2d..f1c4ee3416592b91a255a482c272d3df8114e8c8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1455,13 +1455,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,10 +38,10 @@ index d7261e00c993eb96014373001b158c3525b43ec3..cf7ba8724ab68f6955b5ebfa1ba46c43 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c498e2ad2e85eed3cb592e1b62011923c982899..46780bb225fe039b2f2718e564343086255357d0 100644 +index a874dbc550040d6f802408661640f8111600bfd4..7125f8af5c76ce43128bb747c9f2cd869117dbe6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -126,6 +126,7 @@ public class PurpurWorldConfig { +@@ -144,6 +144,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index 2c498e2ad2e85eed3cb592e1b62011923c982899..46780bb225fe039b2f2718e564343086 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -151,6 +152,7 @@ public class PurpurWorldConfig { +@@ -169,6 +170,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0253-Anvil-repair-damage-options.patch b/patches/server/0253-Anvil-repair-damage-options.patch index db11c9ca9..947cb3513 100644 --- a/patches/server/0253-Anvil-repair-damage-options.patch +++ b/patches/server/0253-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548f return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46780bb225fe039b2f2718e564343086255357d0..ba68bb0a077bdb51850713f13512b1e02e48a2ca 100644 +index 7125f8af5c76ce43128bb747c9f2cd869117dbe6..100c12b51b1122cc2eea567df575a848ace71f15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -698,9 +698,13 @@ public class PurpurWorldConfig { +@@ -716,9 +716,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0255-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0255-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 2a3228a4d..ccc55b87a 100644 --- a/patches/server/0255-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0255-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 70997b83fd7631ebf3c5bda67ef77bef605eb464..a8c227e2cb62cfa8225798329cde9078 return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba68bb0a077bdb51850713f13512b1e02e48a2ca..039b41ad52eba9f831f4615c51fb9a9bb498b83f 100644 +index 100c12b51b1122cc2eea567df575a848ace71f15..6167910078b7beb8a8a56e2a5794e8c882fdc6a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -979,12 +979,14 @@ public class PurpurWorldConfig { +@@ -997,12 +997,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0258-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0258-Implement-configurable-search-radius-for-villagers-t.patch index 60b0b9374..382b079c9 100644 --- a/patches/server/0258-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0258-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 45579a592f519b54df5761a22f4abb0deff7feb6..d5fce1215d99de3393d06fdc65939920 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 039b41ad52eba9f831f4615c51fb9a9bb498b83f..be847310d2ed7d077e672be69e538a378d68e1a5 100644 +index 2d6b1f21daa9813e50c5e8ae1773169ba4f63ef2..a333c3daae7e6416ec1ff897ca5fc6629c31a9c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2679,6 +2679,8 @@ public class PurpurWorldConfig { +@@ -2697,6 +2697,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 039b41ad52eba9f831f4615c51fb9a9bb498b83f..be847310d2ed7d077e672be69e538a37 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2712,6 +2714,8 @@ public class PurpurWorldConfig { +@@ -2730,6 +2732,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/0259-Stonecutter-damage.patch b/patches/server/0259-Stonecutter-damage.patch index c5bf0419c..855d01736 100644 --- a/patches/server/0259-Stonecutter-damage.patch +++ b/patches/server/0259-Stonecutter-damage.patch @@ -63,10 +63,10 @@ index 636c032127c2026509764745f805ae0693e4a983..3734f6279005872eac6697e6e22c3a2e 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 be847310d2ed7d077e672be69e538a378d68e1a5..f149d751a19be432a4c9495cd8feadd893f8dcd3 100644 +index a333c3daae7e6416ec1ff897ca5fc6629c31a9c8..608db11e2569ea93b5192cc443c580ebf837f70d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -974,6 +974,11 @@ public class PurpurWorldConfig { +@@ -992,6 +992,11 @@ public class PurpurWorldConfig { spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava); } diff --git a/patches/server/0260-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0260-Configurable-damage-settings-for-magma-blocks.patch index e2696b3ea..0556e0ee3 100644 --- a/patches/server/0260-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0260-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 12ffb5714f088f4aeafa1ad6a36f5b64a86c4c96..293aa5c8f91a997045f8d9f2951fe3a7 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f149d751a19be432a4c9495cd8feadd893f8dcd3..92fc8b89ee91c1df455811ce40b61cc9ab2c1e59 100644 +index 89323ca8142bea7125c18720bbf26dddbf9f94e5..62c5179454c787369daccd8a5e5a084f771db33e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -905,6 +905,13 @@ public class PurpurWorldConfig { +@@ -923,6 +923,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0261-Add-config-for-snow-on-blue-ice.patch b/patches/server/0261-Add-config-for-snow-on-blue-ice.patch index 1d6abc592..43078d46f 100644 --- a/patches/server/0261-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0261-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92fc8b89ee91c1df455811ce40b61cc9ab2c1e59..64925c063bd13bcd0a643d476fd141a48597550f 100644 +index 62c5179454c787369daccd8a5e5a084f771db33e..9b71955ad0416fcfd074c01c296fa5d67a937b0d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -886,9 +886,11 @@ public class PurpurWorldConfig { +@@ -904,9 +904,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0262-Skeletons-eat-wither-roses.patch b/patches/server/0262-Skeletons-eat-wither-roses.patch index d87f9ce1b..cc1e5c17b 100644 --- a/patches/server/0262-Skeletons-eat-wither-roses.patch +++ b/patches/server/0262-Skeletons-eat-wither-roses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 875f1ae6a16301b48ddcf7005c601a161dee124d..35146853e991420f1c97921699d0d220a7f51dc0 100644 +index f5e8fbccd819f6fb66918bceb93d000da038d7ef..e0352f073c95f8caf47d6789c0bd10e5a8c329c8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -14,6 +14,16 @@ import net.minecraft.world.item.Items; @@ -94,10 +94,10 @@ index 875f1ae6a16301b48ddcf7005c601a161dee124d..35146853e991420f1c97921699d0d220 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 64925c063bd13bcd0a643d476fd141a48597550f..9621f6e4dcb911ba15bdeade8baff7f518a0417d 100644 +index 9b71955ad0416fcfd074c01c296fa5d67a937b0d..b18b30020d14260cc8417aafdcf4978cac31dc15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2371,6 +2371,7 @@ public class PurpurWorldConfig { +@@ -2389,6 +2389,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 64925c063bd13bcd0a643d476fd141a48597550f..9621f6e4dcb911ba15bdeade8baff7f5 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2384,6 +2385,7 @@ public class PurpurWorldConfig { +@@ -2402,6 +2403,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/0263-Enchantment-Table-Persists-Lapis.patch b/patches/server/0263-Enchantment-Table-Persists-Lapis.patch index 38f91cd3a..d66ff8045 100644 --- a/patches/server/0263-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0263-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 9621f6e4dcb911ba15bdeade8baff7f518a0417d..f35904860513b7622607380f06f1d2e68e932949 100644 +index b18b30020d14260cc8417aafdcf4978cac31dc15..457abb8a30e622648c40324aae1f2c76a903320e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1406,6 +1406,11 @@ public class PurpurWorldConfig { +@@ -1424,6 +1424,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0266-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0266-Config-for-sculk-shrieker-can_summon-state.patch index c4e73b337..00dfb5f55 100644 --- a/patches/server/0266-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0266-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 437b44fb68bcbe81d1c431689431225b6a17a1a6..06d091b7c4df949c4abda16c4f73c194 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f35904860513b7622607380f06f1d2e68e932949..228fe6b5624fe46ad88ff9a3356e68515ae3cb73 100644 +index 457abb8a30e622648c40324aae1f2c76a903320e..51679edc97086340a0dbc4d0f0a48bbcd3a35285 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -950,6 +950,11 @@ public class PurpurWorldConfig { +@@ -968,6 +968,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0267-Config-to-not-let-coral-die.patch b/patches/server/0267-Config-to-not-let-coral-die.patch index 657db936c..eebfc41d2 100644 --- a/patches/server/0267-Config-to-not-let-coral-die.patch +++ b/patches/server/0267-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 228fe6b5624fe46ad88ff9a3356e68515ae3cb73..59b83b66efca44cc43daceb0f782ede1f17dd340 100644 +index 51679edc97086340a0dbc4d0f0a48bbcd3a35285..8be28314335e2242c12f9e4b2e49c614ca7d10b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -787,6 +787,11 @@ public class PurpurWorldConfig { +@@ -805,6 +805,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0269-Add-toggle-for-RNG-manipulation.patch b/patches/server/0269-Add-toggle-for-RNG-manipulation.patch index 20e3eff95..bc5931269 100644 --- a/patches/server/0269-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0269-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6f876403388f95a5b52f00985df2cde2f4d991f8..b7f1dad5ffe5a0f5d337fbe39345242940b82e4b 100644 +index 51bb177a52ea52d642ec3300ccd6fd28b3b66bb3..6bb9b0b84367e6b670aeb2de51f94714821db53d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -550,7 +550,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,7 +20,7 @@ index 6f876403388f95a5b52f00985df2cde2f4d991f8..b7f1dad5ffe5a0f5d337fbe393452429 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 2a2b56940cd39ca0f14dc8246b41cf6640caa3bd..31c89a6b8f766e1fd03608723c2d03f7f64e2e9b 100644 +index 802afd3dc36bc9be97b39d20288dec3c6ed496eb..6de0017e3a3aebdb726f327ffa970a1d268200b4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -46,7 +46,7 @@ public class Squid extends WaterAnimal { @@ -33,10 +33,10 @@ index 2a2b56940cd39ca0f14dc8246b41cf6640caa3bd..31c89a6b8f766e1fd03608723c2d03f7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59b83b66efca44cc43daceb0f782ede1f17dd340..153577716cafbe1baf9870c2e6d54d908642f746 100644 +index 8be28314335e2242c12f9e4b2e49c614ca7d10b5..7f8bfb94cbbe7b8c569a5df638cc5607c2ea5951 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -188,9 +188,11 @@ public class PurpurWorldConfig { +@@ -206,9 +206,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0279-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0279-mob-spawning-option-to-ignore-creative-players.patch index 095b23cf1..e230e9eb6 100644 --- a/patches/server/0279-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0279-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 6d9af03d434c372f3d306c37809365659122d019..d36e301a1c46c457bc94edb1bab8685f if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 153577716cafbe1baf9870c2e6d54d908642f746..a83d59205d9fde026459461cc33756941aaf18ff 100644 +index 7f8bfb94cbbe7b8c569a5df638cc5607c2ea5951..1913edafb83663f9aeacb7a525ee0f8f1f6719d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -357,6 +357,7 @@ public class PurpurWorldConfig { +@@ -375,6 +375,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index 153577716cafbe1baf9870c2e6d54d908642f746..a83d59205d9fde026459461cc3375694 private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -365,6 +366,7 @@ public class PurpurWorldConfig { +@@ -383,6 +384,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0280-Add-skeleton-bow-accuracy-option.patch b/patches/server/0280-Add-skeleton-bow-accuracy-option.patch index 45215c1b3..8038ed301 100644 --- a/patches/server/0280-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0280-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 32a303f9ac9768daf621e3aa561cd6b31e5f5dff..9c8713ef3aeb2ff203bd0328d15d80c2 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a83d59205d9fde026459461cc33756941aaf18ff..88f6dea87ac7cbff16ff9e5f0c027e4b305a1380 100644 +index 1913edafb83663f9aeacb7a525ee0f8f1f6719d6..3437bdba19c1bf8a711e4d27d9900928c17c2fb5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2391,6 +2391,8 @@ public class PurpurWorldConfig { +@@ -2409,6 +2409,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index a83d59205d9fde026459461cc33756941aaf18ff..88f6dea87ac7cbff16ff9e5f0c027e4b private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2405,6 +2407,28 @@ public class PurpurWorldConfig { +@@ -2423,6 +2425,28 @@ 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/0281-Allay-respect-item-NBT.patch b/patches/server/0281-Allay-respect-item-NBT.patch index d6ead9c66..ded14ff48 100644 --- a/patches/server/0281-Allay-respect-item-NBT.patch +++ b/patches/server/0281-Allay-respect-item-NBT.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allay respect item NBT diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index afbce4fdece213e456ef4e993f07bfb448bb2dd1..6051737b8e16d0790aec73757d13d7862ad74ef4 100644 +index 4c4b27a762d4faf0467136ee92a3bbba5ab7322d..380cb6baaf934e77a9899647824b5eb96e821a1c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -407,9 +407,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier { @@ -44,10 +44,10 @@ index afbce4fdece213e456ef4e993f07bfb448bb2dd1..6051737b8e16d0790aec73757d13d786 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 88f6dea87ac7cbff16ff9e5f0c027e4b305a1380..1ef890bfe30829c2972578180fd26f6ac9162f4a 100644 +index 3437bdba19c1bf8a711e4d27d9900928c17c2fb5..40aaa43eb061d80d3ec479c53584e96f5018d3e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1034,10 +1034,13 @@ public class PurpurWorldConfig { +@@ -1052,10 +1052,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = false; public boolean allayControllable = true; diff --git a/patches/server/0286-Implement-squid-colors-for-rainglow-fabric-mod.patch b/patches/server/0286-Implement-squid-colors-for-rainglow-fabric-mod.patch index fe9550d66..bf755fb18 100644 --- a/patches/server/0286-Implement-squid-colors-for-rainglow-fabric-mod.patch +++ b/patches/server/0286-Implement-squid-colors-for-rainglow-fabric-mod.patch @@ -40,10 +40,10 @@ index c2309434b4d48a44587590623ac98dbf997b9578..6f723171fa71d74b351b5cf0cd167bb6 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ef890bfe30829c2972578180fd26f6ac9162f4a..709b1b6709ece417e367ab1c710fc3cf7e6e4159 100644 +index 40aaa43eb061d80d3ec479c53584e96f5018d3e2..80d042bddc4f51eadeca3a8efe190f6936516fc9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1643,6 +1643,7 @@ public class PurpurWorldConfig { +@@ -1661,6 +1661,7 @@ public class PurpurWorldConfig { public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; public boolean glowSquidAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 1ef890bfe30829c2972578180fd26f6ac9162f4a..709b1b6709ece417e367ab1c710fc3cf private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1650,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1669,7 @@ public class PurpurWorldConfig { glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); glowSquidAlwaysDropExp = getBoolean("mobs.glow_squid.always-drop-exp", glowSquidAlwaysDropExp); diff --git a/patches/server/0291-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0291-Milk-Keeps-Beneficial-Effects.patch index 1d1656492..0d56978d8 100644 --- a/patches/server/0291-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0291-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 64ddf35722640fa764b6b508196f0303676193cb..70b52346a42daaa82a56d324ad3290971692da6d 100644 +index a0500cab65501a7a0ac2e8aa0efacc3105731c6b..7c3e5ec2503be1206955ddcc2374a2673b91f3da 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1108,6 +1108,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -17,7 +17,7 @@ index 64ddf35722640fa764b6b508196f0303676193cb..70b52346a42daaa82a56d324ad329097 if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 2e9dd920e5c3943cba4c53ec2a2b48eeaf3889a7..076326de62f395cb932dae33e73703a7ee7c84a7 100644 +index 62e6028cce6b7867b4f68ac6760fd78791101a55..829d64041fb1ab1774e9318b3f3268aba59c5eb3 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -113,7 +113,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -30,10 +30,18 @@ index 2e9dd920e5c3943cba4c53ec2a2b48eeaf3889a7..076326de62f395cb932dae33e73703a7 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 709b1b6709ece417e367ab1c710fc3cf7e6e4159..0cac4c1e907521ece4053942671058f58206d5bd 100644 +index 80d042bddc4f51eadeca3a8efe190f6936516fc9..6c0136eb8c8b7815aa07bc6614e052c8cab257a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -138,6 +138,7 @@ public class PurpurWorldConfig { +@@ -130,6 +130,7 @@ public class PurpurWorldConfig { + public boolean fireballsBypassMobGriefing = false; + public boolean imposeTeleportRestrictionsOnGateways = false; + public boolean milkCuresBadOmen = true; ++ public boolean milkClearsBeneficialEffects = true; + public boolean noteBlockIgnoreAbove = false; + public boolean persistentDroppableEntityDisplayNames = false; + public boolean persistentTileEntityDisplayNames = false; +@@ -156,6 +157,7 @@ public class PurpurWorldConfig { fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0295-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0295-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 47ef6bd7f..83f52a1c1 100644 --- a/patches/server/0295-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0295-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc5 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0cac4c1e907521ece4053942671058f58206d5bd..03d63b5b5c360bbaa8ec378e961858f79362ff00 100644 +index 6c0136eb8c8b7815aa07bc6614e052c8cab257a3..2b9e60201af155bb3f871c53844663504ed2a4a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1298,6 +1298,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1317,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 0cac4c1e907521ece4053942671058f58206d5bd..03d63b5b5c360bbaa8ec378e961858f7 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1316,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1336,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/0297-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0297-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 3b334db55..545233200 100644 --- a/patches/server/0297-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0297-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -30,10 +30,10 @@ index 099b7da30aaf2dca7fe556d26c1395f662fbf80a..3f59268a8e01cebd9e08984ae754e928 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03d63b5b5c360bbaa8ec378e961858f79362ff00..4364eda5f9b63c7ab4195200d317135996f12824 100644 +index 2b9e60201af155bb3f871c53844663504ed2a4a6..db8e647e043c7d89c8cf7b5c13dd290e7d8b3050 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -398,6 +398,7 @@ public class PurpurWorldConfig { +@@ -417,6 +417,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -41,7 +41,7 @@ index 03d63b5b5c360bbaa8ec378e961858f79362ff00..4364eda5f9b63c7ab4195200d3171359 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -427,6 +428,7 @@ public class PurpurWorldConfig { +@@ -446,6 +447,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0300-End-Crystal-Cramming.patch b/patches/server/0300-End-Crystal-Cramming.patch index ff1109725..4d48508a9 100644 --- a/patches/server/0300-End-Crystal-Cramming.patch +++ b/patches/server/0300-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index a4fc0e9cb52bb5937effe5cd09f8bbefcf8dd531..e3fe5f18c77e36479eaeb7edfd2a3eb9 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4364eda5f9b63c7ab4195200d317135996f12824..a8e80a5db816f70573469f2731473848eac411c3 100644 +index 69b04d74e3a44b01fc24c67ce9ce627ce2b5a992..ea8e4ad5ba1d5894747e11674bbc63ba57c9a061 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -829,6 +829,7 @@ public class PurpurWorldConfig { +@@ -848,6 +848,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 4364eda5f9b63c7ab4195200d317135996f12824..a8e80a5db816f70573469f2731473848 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -856,6 +857,7 @@ public class PurpurWorldConfig { +@@ -875,6 +876,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/0301-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0301-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index c212c59eb..9b27df419 100644 --- a/patches/server/0301-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0301-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index c787019b5cbadec81dd33ef4021708b9b423485a..8f82b0ce87afc8890c5b3386d5f6e22c BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a8e80a5db816f70573469f2731473848eac411c3..9bb2019bda1e104cd5c04a13b525deb8471953fd 100644 +index 9efeff43abf589fbb2ffe865cdc010d1ddf7db63..3ae4c95763caf2b4a815c1e4553ead37ea80eb30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -723,11 +723,13 @@ public class PurpurWorldConfig { +@@ -742,11 +742,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0303-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0303-Config-to-remove-explosion-radius-clamp.patch index 8b01c2dfd..133b9d0df 100644 --- a/patches/server/0303-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0303-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index c5346f06175846aecbf30f9bea28be3b0fdb6397..bf8e4ccf99d293c31141a89d7947b1d9e881ac35 100644 +index 7c0d7aa465b2a04aa4808d2346ea4eb5c6ae47e4..8b4c924c21f09ea37d997a11d42e7ee05e51010c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -108,6 +108,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -39,10 +39,10 @@ index 4392336d28aa3cc7a767a2e638e2227c16a597f4..4929149dde7630a2249a86f4ed0bf00e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9bb2019bda1e104cd5c04a13b525deb8471953fd..414ceacaa649b5cca1b75cf43e3e2596006019ea 100644 +index 3ae4c95763caf2b4a815c1e4553ead37ea80eb30..401803ac4e2d176d8509f240629ad3fb7d1eabc4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -196,6 +196,11 @@ public class PurpurWorldConfig { +@@ -215,6 +215,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } diff --git a/patches/server/0304-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0304-bonemealable-sugarcane-cactus-and-netherwart.patch index 7e02339ac..8b80f6e54 100644 --- a/patches/server/0304-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0304-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index 6b400a4759c8c8612a3b5c96ca0d87ef9dc71435..992de1ab2c00a2545a857f1b5533926b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 414ceacaa649b5cca1b75cf43e3e2596006019ea..fb9d048f9d452b210bb7c9c13b68e144711d0e43 100644 +index 401803ac4e2d176d8509f240629ad3fb7d1eabc4..7acc69b1a2c5f862b5520631ac8d2baf815ca4c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -782,8 +782,20 @@ public class PurpurWorldConfig { +@@ -801,8 +801,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true;