diff --git a/patches/dropped-server/0083-Entities-can-use-portals-configuration.patch b/patches/server/0084-Entities-can-use-portals.patch similarity index 59% rename from patches/dropped-server/0083-Entities-can-use-portals-configuration.patch rename to patches/server/0084-Entities-can-use-portals.patch index 779a74ef8..50f822626 100644 --- a/patches/dropped-server/0083-Entities-can-use-portals-configuration.patch +++ b/patches/server/0084-Entities-can-use-portals.patch @@ -1,36 +1,36 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 17 Aug 2020 19:32:05 -0500 -Subject: [PATCH] Entities can use portals configuration +Subject: [PATCH] Entities can use portals diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b3fe632b18e5dfa18d37ef23a5a62f3a0f9ccf42..e29f56c83e8ce237e9135fabcf2381130a1a790d 100644 +index 02e31827de699c6df409fbc3b88f7ded68236e20..51eebbee1c46062b35a2703713f2e1dfafcb0b26 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3225,7 +3225,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - public void handleInsidePortal(BlockPos pos) { +@@ -3266,7 +3266,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + public void setAsInsidePortal(Portal portal, BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); - } else { -+ } else if (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { - this.portalEntrancePos = pos.immutable(); - } -@@ -3919,7 +3919,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } ++ } else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals + if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) { + this.portalProcess.updateEntryPosition(pos.immutable()); + this.portalProcess.setAsInsidePortalThisTick(true); +@@ -3889,7 +3889,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + // CraftBukkit end - public boolean canChangeDimensions() { -- return !this.isPassenger() && !this.isVehicle() && isAlive() && valid; // Paper - Fix item duplication and teleport issues -+ return !this.isPassenger() && !this.isVehicle() && isAlive() && valid && (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper - Fix item duplication and teleport issues // Purpur + public boolean canUsePortal(boolean allowVehicles) { +- return (allowVehicles || !this.isPassenger()) && this.isAlive(); ++ return (allowVehicles || !this.isPassenger()) && this.isAlive() && (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Purpur - Entities can use portals } - public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { + public boolean canChangeDimensions(Level from, Level to) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c..1f25407aafba71762a482f0b1982302fed14387f 100644 +index b3a9e307d1bed0c53a42119fa74c3a0f1be12d36..9f00ee2e9882226973c6846211574809c18b52bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -98,6 +98,7 @@ public class PurpurWorldConfig { +@@ -99,6 +99,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; @@ -38,7 +38,7 @@ index 56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c..1f25407aafba71762a482f0b1982302f public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; -@@ -106,6 +107,7 @@ public class PurpurWorldConfig { +@@ -107,6 +108,7 @@ public class PurpurWorldConfig { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); diff --git a/patches/server/0084-Customizable-wither-health-and-healing.patch b/patches/server/0085-Customizable-wither-health-and-healing.patch similarity index 92% rename from patches/server/0084-Customizable-wither-health-and-healing.patch rename to patches/server/0085-Customizable-wither-health-and-healing.patch index 79e9adfed..ddf755e18 100644 --- a/patches/server/0084-Customizable-wither-health-and-healing.patch +++ b/patches/server/0085-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 0e2e7f935deb674bfcbdf4f1ba7de7834ed1c61a..e3ee5d5eb80d689eb77731b3f26d0c31 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b3a9e307d1bed0c53a42119fa74c3a0f1be12d36..36b2b377f3253e5013c307b82c6ed893d5b58ffd 100644 +index 9f00ee2e9882226973c6846211574809c18b52bc..0fbb32272453df331df54e8eda37da0b9b7af954 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1861,6 +1861,8 @@ public class PurpurWorldConfig { +@@ -1863,6 +1863,8 @@ public class PurpurWorldConfig { public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; public double witherScale = 1.0D; @@ -35,7 +35,7 @@ index b3a9e307d1bed0c53a42119fa74c3a0f1be12d36..36b2b377f3253e5013c307b82c6ed893 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1877,6 +1879,8 @@ public class PurpurWorldConfig { +@@ -1879,6 +1881,8 @@ public class PurpurWorldConfig { } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); diff --git a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch similarity index 97% rename from patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch index b03021b4f..a2063f2a7 100644 --- a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch @@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36b2b377f3253e5013c307b82c6ed893d5b58ffd..e43e5facf44978994c8a515a20906dc8fbf8b9b8 100644 +index 0fbb32272453df331df54e8eda37da0b9b7af954..03aa9b6bc1095475c21a93544c14e5f5bfa1e141 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -70,6 +70,12 @@ public class PurpurWorldConfig { @@ -75,7 +75,7 @@ index 36b2b377f3253e5013c307b82c6ed893d5b58ffd..e43e5facf44978994c8a515a20906dc8 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -234,6 +240,21 @@ public class PurpurWorldConfig { +@@ -236,6 +242,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0086-Raid-cooldown-setting.patch b/patches/server/0087-Raid-cooldown-setting.patch similarity index 95% rename from patches/server/0086-Raid-cooldown-setting.patch rename to patches/server/0087-Raid-cooldown-setting.patch index 4acab0a44..84f4093ae 100644 --- a/patches/server/0086-Raid-cooldown-setting.patch +++ b/patches/server/0087-Raid-cooldown-setting.patch @@ -49,10 +49,10 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948 if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e43e5facf44978994c8a515a20906dc8fbf8b9b8..092b8854470cb034205f2cf708186d559be5d609 100644 +index 03aa9b6bc1095475c21a93544c14e5f5bfa1e141..0549d17b69e869d9014040528e9163d56a316972 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -109,6 +109,7 @@ public class PurpurWorldConfig { +@@ -110,6 +110,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -60,7 +60,7 @@ index e43e5facf44978994c8a515a20906dc8fbf8b9b8..092b8854470cb034205f2cf708186d55 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -117,6 +118,7 @@ public class PurpurWorldConfig { +@@ -119,6 +120,7 @@ public class PurpurWorldConfig { 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); diff --git a/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch similarity index 94% rename from patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch index 4dc8395c2..a5f344de4 100644 --- a/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch @@ -7,10 +7,10 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 092b8854470cb034205f2cf708186d559be5d609..6cda920dca61ce781ecfb4b49da31e7c297d3b39 100644 +index 0549d17b69e869d9014040528e9163d56a316972..f10a009ad72789015861fbc35d490f6c72dd036c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -315,6 +315,40 @@ public class PurpurWorldConfig { +@@ -317,6 +317,40 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 96% rename from patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch index f7ef84e51..c2dfbac95 100644 --- a/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,10 +70,10 @@ index ada1f9f9bf8770c48ff25d562cf84cb04be17ca2..21e0028ad33f8de0211dd733d98a00af this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6cda920dca61ce781ecfb4b49da31e7c297d3b39..e7b7ec38bd2be51a03dace23d0af90d72404d9e8 100644 +index f10a009ad72789015861fbc35d490f6c72dd036c..b7af904f30fdbb9a3f680d1d8244edf1e0061e25 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2003,6 +2003,7 @@ public class PurpurWorldConfig { +@@ -2005,6 +2005,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 6cda920dca61ce781ecfb4b49da31e7c297d3b39..e7b7ec38bd2be51a03dace23d0af90d7 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2018,6 +2019,7 @@ public class PurpurWorldConfig { +@@ -2020,6 +2021,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0090-Flying-squids-Oh-my.patch b/patches/server/0091-Flying-squids-Oh-my.patch similarity index 94% rename from patches/server/0090-Flying-squids-Oh-my.patch rename to patches/server/0091-Flying-squids-Oh-my.patch index 9fcc90783..a3a45c8bc 100644 --- a/patches/server/0090-Flying-squids-Oh-my.patch +++ b/patches/server/0091-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2 float g = Mth.cos(f) * 0.2F; float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7b7ec38bd2be51a03dace23d0af90d72404d9e8..a0e89374b94852352400d5089052433b6de0fd92 100644 +index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0a679aa93 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -969,11 +969,13 @@ public class PurpurWorldConfig { +@@ -971,11 +971,13 @@ public class PurpurWorldConfig { public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; @@ -75,7 +75,7 @@ index e7b7ec38bd2be51a03dace23d0af90d72404d9e8..a0e89374b94852352400d5089052433b } public boolean goatRidable = false; -@@ -1660,6 +1662,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1664,7 @@ public class PurpurWorldConfig { public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -83,7 +83,7 @@ index e7b7ec38bd2be51a03dace23d0af90d72404d9e8..a0e89374b94852352400d5089052433b private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1672,6 +1675,7 @@ public class PurpurWorldConfig { +@@ -1674,6 +1677,7 @@ public class PurpurWorldConfig { squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0091-Infinity-bow-settings.patch b/patches/server/0092-Infinity-bow-settings.patch similarity index 95% rename from patches/server/0091-Infinity-bow-settings.patch rename to patches/server/0092-Infinity-bow-settings.patch index a20b597a7..766e11325 100644 --- a/patches/server/0091-Infinity-bow-settings.patch +++ b/patches/server/0092-Infinity-bow-settings.patch @@ -30,10 +30,10 @@ index 6eb5c0f23d9dc61e69ad5ad493c89602a9dcd4b5..4db2032178471860baddc6b669c9a4f8 } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0e89374b94852352400d5089052433b6de0fd92..85e16939a1ac27037b1959e4fc1ec57324a7c11e 100644 +index 8ee07ea25cbc5d59b972116c09ec57f0a679aa93..22522af6a0b0894c798399456303d951ca884fe6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -137,6 +137,11 @@ public class PurpurWorldConfig { +@@ -139,6 +139,11 @@ public class PurpurWorldConfig { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } diff --git a/patches/server/0092-Configurable-daylight-cycle.patch b/patches/server/0093-Configurable-daylight-cycle.patch similarity index 97% rename from patches/server/0092-Configurable-daylight-cycle.patch rename to patches/server/0093-Configurable-daylight-cycle.patch index 202b5bc3c..9ca36820b 100644 --- a/patches/server/0092-Configurable-daylight-cycle.patch +++ b/patches/server/0093-Configurable-daylight-cycle.patch @@ -88,10 +88,10 @@ index 648aa9ec26ee2291a0caf2c61a3da4429566c343..ce5da7fc2d94a4b54e2a33de1e3ac629 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 85e16939a1ac27037b1959e4fc1ec57324a7c11e..fde8c013bb398f924d8c6a7fbfabf276f0a96936 100644 +index 22522af6a0b0894c798399456303d951ca884fe6..34aafc5bac4e7876fdf50289748df5070126139e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -121,6 +121,13 @@ public class PurpurWorldConfig { +@@ -123,6 +123,13 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } diff --git a/patches/server/0093-Furnace-uses-lava-from-underneath.patch b/patches/server/0094-Furnace-uses-lava-from-underneath.patch similarity index 95% rename from patches/server/0093-Furnace-uses-lava-from-underneath.patch rename to patches/server/0094-Furnace-uses-lava-from-underneath.patch index 272595b32..bfd2a23c0 100644 --- a/patches/server/0093-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0094-Furnace-uses-lava-from-underneath.patch @@ -39,10 +39,10 @@ index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec3 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fde8c013bb398f924d8c6a7fbfabf276f0a96936..95e79149153de9328c40934a064d2a5a2d25e2d4 100644 +index 34aafc5bac4e7876fdf50289748df5070126139e..b398af642abe85747cc416f49cc229c1f491c1a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -401,6 +401,17 @@ public class PurpurWorldConfig { +@@ -403,6 +403,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch similarity index 91% rename from patches/server/0094-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0095-Arrows-should-not-reset-despawn-counter.patch index 72dd614bf..59200c3f2 100644 --- a/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch @@ -7,7 +7,7 @@ This prevents keeping arrows alive indefinitely (such as when the block the arrow is stuck in gets removed, like a piston head going up/down) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index ddf47dab1ab92c45e3eea09239d418a9798ed59e..8d8944a0455b3401d84cab636d61447e7d51ab19 100644 +index 9ca29b3d4bf8bca5f51f3644e12fcbec2cb5d35e..2ace900721f4aa185b8ed28ac95feb50cb89453f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -356,7 +356,7 @@ public abstract class AbstractArrow extends Projectile { @@ -20,7 +20,7 @@ index ddf47dab1ab92c45e3eea09239d418a9798ed59e..8d8944a0455b3401d84cab636d61447e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95e79149153de9328c40934a064d2a5a2d25e2d4..1bfbc2cba2b81d2e2aef50c32dc1eb590afc5f1e 100644 +index b398af642abe85747cc416f49cc229c1f491c1a3..61585b3e964f5f80d6c3dba8ee5dfae7e59e53f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 15c277b3c..a096f45e4 100644 --- a/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1bfbc2cba2b81d2e2aef50c32dc1eb590afc5f1e..3a3f096f5edb65d854f81d96100bdf133647916c 100644 +index 61585b3e964f5f80d6c3dba8ee5dfae7e59e53f3..af9c365025df231f53ffe1c28013c4b36c325ea2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -402,8 +402,10 @@ public class PurpurWorldConfig { +@@ -404,8 +404,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch similarity index 97% rename from patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch index dcf26343d..d776c2f51 100644 --- a/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,10 +104,10 @@ index a922bb0c65e4cee8cb693eb6e48ecaa26bdf7e71..10df967d7694c5806453bb4abbb14dea this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a3f096f5edb65d854f81d96100bdf133647916c..a32fa43357885730ae4b5d641ab3bc2e7333d78a 100644 +index af9c365025df231f53ffe1c28013c4b36c325ea2..d2ecc35e4c20549c71b32ae444b3c4e98ed3561a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -115,6 +115,7 @@ public class PurpurWorldConfig { +@@ -116,6 +116,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -115,7 +115,7 @@ index 3a3f096f5edb65d854f81d96100bdf133647916c..a32fa43357885730ae4b5d641ab3bc2e private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -124,6 +125,7 @@ public class PurpurWorldConfig { +@@ -126,6 +127,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/server/0097-Make-entity-breeding-times-configurable.patch b/patches/server/0098-Make-entity-breeding-times-configurable.patch similarity index 94% rename from patches/server/0097-Make-entity-breeding-times-configurable.patch rename to patches/server/0098-Make-entity-breeding-times-configurable.patch index 0875fc114..e03febba8 100644 --- a/patches/server/0097-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0098-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index 66ebc75ddfd944277e7f7be43ed0d215eb2030f1..1bd16c9243df4500b9d965ba260f7dd1 public boolean canBeLeashed() { return true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a829966d9059a 100644 +index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339b457ffdc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -499,23 +499,27 @@ public class PurpurWorldConfig { +@@ -501,23 +501,27 @@ public class PurpurWorldConfig { public boolean armadilloControllable = true; public double armadilloMaxHealth = 12.0D; public double armadilloScale = 1.0D; @@ -569,7 +569,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean batRidable = false; -@@ -558,6 +562,7 @@ public class PurpurWorldConfig { +@@ -560,6 +564,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; @@ -577,7 +577,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -570,6 +575,7 @@ public class PurpurWorldConfig { +@@ -572,6 +577,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); @@ -585,7 +585,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean blazeRidable = false; -@@ -612,6 +618,7 @@ public class PurpurWorldConfig { +@@ -614,6 +620,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -593,7 +593,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -620,6 +627,7 @@ public class PurpurWorldConfig { +@@ -622,6 +629,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -601,7 +601,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean catRidable = false; -@@ -630,6 +638,7 @@ public class PurpurWorldConfig { +@@ -632,6 +640,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -609,7 +609,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -644,6 +653,7 @@ public class PurpurWorldConfig { +@@ -646,6 +655,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -617,7 +617,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean caveSpiderRidable = false; -@@ -670,6 +680,7 @@ public class PurpurWorldConfig { +@@ -672,6 +682,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public double chickenScale = 1.0D; public boolean chickenRetaliate = false; @@ -625,7 +625,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -682,6 +693,7 @@ public class PurpurWorldConfig { +@@ -684,6 +695,7 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -633,7 +633,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean codRidable = false; -@@ -706,6 +718,7 @@ public class PurpurWorldConfig { +@@ -708,6 +720,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public double cowScale = 1.0D; public int cowFeedMushrooms = 0; @@ -641,7 +641,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -718,6 +731,7 @@ public class PurpurWorldConfig { +@@ -720,6 +733,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -649,7 +649,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean creeperRidable = false; -@@ -773,6 +787,7 @@ public class PurpurWorldConfig { +@@ -775,6 +789,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -657,7 +657,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -788,6 +803,7 @@ public class PurpurWorldConfig { +@@ -790,6 +805,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -665,7 +665,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean drownedRidable = false; -@@ -918,6 +934,7 @@ public class PurpurWorldConfig { +@@ -920,6 +936,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; @@ -673,7 +673,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -930,17 +947,20 @@ public class PurpurWorldConfig { +@@ -932,17 +949,20 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -694,7 +694,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean ghastRidable = false; -@@ -1015,12 +1035,14 @@ public class PurpurWorldConfig { +@@ -1017,12 +1037,14 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; @@ -709,7 +709,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean guardianRidable = false; -@@ -1044,6 +1066,7 @@ public class PurpurWorldConfig { +@@ -1046,6 +1068,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; @@ -717,7 +717,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1055,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1057,6 +1080,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); @@ -725,7 +725,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean horseRidableInWater = false; -@@ -1064,6 +1088,7 @@ public class PurpurWorldConfig { +@@ -1066,6 +1090,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -733,7 +733,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1079,6 +1104,7 @@ public class PurpurWorldConfig { +@@ -1081,6 +1106,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -741,7 +741,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean huskRidable = false; -@@ -1162,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1164,6 +1190,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -749,7 +749,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1179,6 +1206,7 @@ public class PurpurWorldConfig { +@@ -1181,6 +1208,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -757,7 +757,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean magmaCubeRidable = false; -@@ -1208,6 +1236,7 @@ public class PurpurWorldConfig { +@@ -1210,6 +1238,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; @@ -765,7 +765,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1219,6 +1248,7 @@ public class PurpurWorldConfig { +@@ -1221,6 +1250,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); @@ -773,7 +773,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean muleRidableInWater = false; -@@ -1228,6 +1258,7 @@ public class PurpurWorldConfig { +@@ -1230,6 +1260,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -781,7 +781,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1243,6 +1274,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1276,7 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -789,7 +789,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean ocelotRidable = false; -@@ -1250,6 +1282,7 @@ public class PurpurWorldConfig { +@@ -1252,6 +1284,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; @@ -797,7 +797,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1261,6 +1294,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1296,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); @@ -805,7 +805,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean pandaRidable = false; -@@ -1268,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1270,6 +1304,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; @@ -813,7 +813,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1279,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1281,6 +1316,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); @@ -821,7 +821,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean parrotRidable = false; -@@ -1365,6 +1401,7 @@ public class PurpurWorldConfig { +@@ -1367,6 +1403,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; @@ -829,7 +829,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1377,6 +1414,7 @@ public class PurpurWorldConfig { +@@ -1379,6 +1416,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -837,7 +837,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean piglinRidable = false; -@@ -1440,6 +1478,7 @@ public class PurpurWorldConfig { +@@ -1442,6 +1480,7 @@ public class PurpurWorldConfig { public double polarBearScale = 1.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -845,7 +845,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1454,6 +1493,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1495,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -853,7 +853,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean pufferfishRidable = false; -@@ -1479,6 +1519,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1521,7 @@ public class PurpurWorldConfig { public double rabbitScale = 1.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -861,7 +861,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1492,6 +1533,7 @@ public class PurpurWorldConfig { +@@ -1494,6 +1535,7 @@ public class PurpurWorldConfig { rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -869,7 +869,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean ravagerRidable = false; -@@ -1533,6 +1575,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1577,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; @@ -877,7 +877,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1544,6 +1587,7 @@ public class PurpurWorldConfig { +@@ -1546,6 +1589,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); @@ -885,7 +885,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean shulkerRidable = false; -@@ -1680,12 +1724,14 @@ public class PurpurWorldConfig { +@@ -1682,12 +1726,14 @@ public class PurpurWorldConfig { public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; @@ -900,7 +900,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean squidRidable = false; -@@ -1751,6 +1797,7 @@ public class PurpurWorldConfig { +@@ -1753,6 +1799,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; @@ -908,7 +908,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1762,6 +1809,7 @@ public class PurpurWorldConfig { +@@ -1764,6 +1811,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); @@ -916,7 +916,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean tadpoleRidable = false; -@@ -1782,6 +1830,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1832,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -924,7 +924,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1799,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1801,6 +1850,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -932,7 +932,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean tropicalFishRidable = false; -@@ -1822,6 +1872,7 @@ public class PurpurWorldConfig { +@@ -1824,6 +1874,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; @@ -940,7 +940,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1833,6 +1884,7 @@ public class PurpurWorldConfig { +@@ -1835,6 +1886,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); @@ -948,7 +948,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean vexRidable = false; -@@ -1863,6 +1915,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1917,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -956,7 +956,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1877,6 +1930,7 @@ public class PurpurWorldConfig { +@@ -1879,6 +1932,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -964,7 +964,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 } public boolean vindicatorRidable = false; -@@ -1999,6 +2053,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2055,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -972,7 +972,7 @@ index a32fa43357885730ae4b5d641ab3bc2e7333d78a..62164c41e09912834bd8bf25cb7a8299 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2010,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -2012,6 +2067,7 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 96% rename from patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch index 20c8d1bf2..fc3c92ca5 100644 --- a/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -126,7 +126,7 @@ index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414 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 62164c41e09912834bd8bf25cb7a829966d9059a..2db5c567e696441448eb977e3e260da57e19e8d0 100644 +index 3cb0f571577a1377f339362434a6d339b457ffdc..79eb0e3553a3f9b2fb8059e882fed0427be67043 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,8 +98,10 @@ public class PurpurWorldConfig { @@ -140,17 +140,17 @@ index 62164c41e09912834bd8bf25cb7a829966d9059a..2db5c567e696441448eb977e3e260da5 } public boolean arrowMovementResetsDespawnCounter = true; -@@ -111,6 +113,7 @@ public class PurpurWorldConfig { - public boolean boatEjectPlayersOnLand = false; +@@ -112,6 +114,7 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; + public boolean persistentDroppableEntityDisplayNames = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -121,6 +124,7 @@ public class PurpurWorldConfig { - boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); +@@ -123,6 +126,7 @@ public class PurpurWorldConfig { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); diff --git a/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 9528c58a1..76c6cdc7b 100644 --- a/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8 // Paper end - Add PlayerNameEntityEvent mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2db5c567e696441448eb977e3e260da57e19e8d0..75de05805f08748c17c95f9a62a3f8351f62f783 100644 +index 79eb0e3553a3f9b2fb8059e882fed0427be67043..39aa800ecca20af51d7d07288c8db2f16969fc20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,9 +99,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 92% rename from patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index c5dc5eb4a..0732e3833 100644 --- a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 28b2303ce9459b6038f35e3e470324392753b67f..f969164a67f98f5a9925f98a9595f0b5 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 75de05805f08748c17c95f9a62a3f8351f62f783..df43ccdf64377f0e66058d0c55068c9c237330c4 100644 +index 39aa800ecca20af51d7d07288c8db2f16969fc20..82cd55f78f957875514213c21c36586fc1f27c10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -884,6 +884,7 @@ public class PurpurWorldConfig { +@@ -886,6 +886,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 75de05805f08748c17c95f9a62a3f8351f62f783..df43ccdf64377f0e66058d0c55068c9c private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -896,6 +897,7 @@ public class PurpurWorldConfig { +@@ -898,6 +899,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0101-Add-configurable-snowball-damage.patch b/patches/server/0102-Add-configurable-snowball-damage.patch similarity index 92% rename from patches/server/0101-Add-configurable-snowball-damage.patch rename to patches/server/0102-Add-configurable-snowball-damage.patch index 87fa51256..9df460563 100644 --- a/patches/server/0101-Add-configurable-snowball-damage.patch +++ b/patches/server/0102-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df43ccdf64377f0e66058d0c55068c9c237330c4..e33857a15ffc56b32f4849f9d8f9af6368a62e10 100644 +index 82cd55f78f957875514213c21c36586fc1f27c10..cf3d1d188cb3a83cf81bf6a5af2640db4c0a2785 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -374,6 +374,11 @@ public class PurpurWorldConfig { +@@ -376,6 +376,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch similarity index 92% rename from patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch index 1314a804a..077927ca6 100644 --- a/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch @@ -18,10 +18,10 @@ index 1a8b081aae4bbe538eb3230d415583f318ade86f..4bcd6dc324b49165ae4ad6ab93e46ecd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e33857a15ffc56b32f4849f9d8f9af6368a62e10..ac1a1f6036a4d2ed2401cf07dc834df997788cd4 100644 +index cf3d1d188cb3a83cf81bf6a5af2640db4c0a2785..56c7b913fb598d40eae8d966acbac66e8bed827d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -153,8 +153,10 @@ public class PurpurWorldConfig { +@@ -155,8 +155,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0103-Add-boat-fall-damage-config.patch b/patches/server/0104-Add-boat-fall-damage-config.patch similarity index 88% rename from patches/server/0103-Add-boat-fall-damage-config.patch rename to patches/server/0104-Add-boat-fall-damage-config.patch index 995bf102b..4dad76a17 100644 --- a/patches/server/0103-Add-boat-fall-damage-config.patch +++ b/patches/server/0104-Add-boat-fall-damage-config.patch @@ -27,7 +27,7 @@ index 855b8920eb5119ea6bf4726a9b77e3149779d0b3..d38a94ad94e09e71200d59e4d6a1d751 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac1a1f6036a4d2ed2401cf07dc834df997788cd4..fa91c4afeaf1a01d27fea3741e85cc5721d80d14 100644 +index 56c7b913fb598d40eae8d966acbac66e8bed827d..2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,7 @@ public class PurpurWorldConfig { @@ -36,13 +36,13 @@ index ac1a1f6036a4d2ed2401cf07dc834df997788cd4..fa91c4afeaf1a01d27fea3741e85cc57 public boolean boatEjectPlayersOnLand = false; + public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; - public boolean persistentDroppableEntityDisplayNames = true; -@@ -124,6 +125,7 @@ public class PurpurWorldConfig { +@@ -125,6 +126,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); + 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); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); - persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); diff --git a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch b/patches/server/0105-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0104-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0105-Snow-Golem-rate-of-fire-config.patch index e7a076d2b..011255274 100644 --- a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0105-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index dc5af0b71ec82a8f22e64b03950e35845110a331..5b910b4168b7f7825916c14e402f7f00 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 fa91c4afeaf1a01d27fea3741e85cc5721d80d14..ef7ef1c1d02b6ab51b7ac1c944c18e303a39e27b 100644 +index 2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a..d3f7829ba6059a89cdcd51e1efc99c644a89e87d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1721,6 +1721,10 @@ public class PurpurWorldConfig { +@@ -1723,6 +1723,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public double snowGolemScale = 1.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index fa91c4afeaf1a01d27fea3741e85cc5721d80d14..ef7ef1c1d02b6ab51b7ac1c944c18e30 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1734,6 +1738,10 @@ public class PurpurWorldConfig { +@@ -1736,6 +1740,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemScale = Mth.clamp(getDouble("mobs.snow_golem.attributes.scale", snowGolemScale), 0.0625D, 16.0D); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0105-EMC-Configurable-disable-give-dropping.patch b/patches/server/0106-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0105-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0106-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 6ff862927..b24749cd8 100644 --- a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef7ef1c1d02b6ab51b7ac1c944c18e303a39e27b..e25ba23071d89b1a9866adbd427b7bdaa73efb2a 100644 +index d3f7829ba6059a89cdcd51e1efc99c644a89e87d..5a650cca4475e5fd2c130b3c1c5f8370df7d53ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1941,6 +1941,8 @@ public class PurpurWorldConfig { +@@ -1943,6 +1943,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index ef7ef1c1d02b6ab51b7ac1c944c18e303a39e27b..e25ba23071d89b1a9866adbd427b7bda private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1956,6 +1958,8 @@ public class PurpurWorldConfig { +@@ -1958,6 +1960,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/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 94% rename from patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index c791da0fc..d136176e9 100644 --- a/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 53b8f46bda60289ec310cb45513a2b729fcbea76..2756319fd1e53eca6a3dfa094d7c6690 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e25ba23071d89b1a9866adbd427b7bdaa73efb2a..c2a42bd6b2347c559048cb0f718920c9ff0ea142 100644 +index 5a650cca4475e5fd2c130b3c1c5f8370df7d53ad..76a4fb37b908a1f8523ae3fa5a56a7ef3726391f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2207,6 +2207,7 @@ public class PurpurWorldConfig { +@@ -2209,6 +2209,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index e25ba23071d89b1a9866adbd427b7bdaa73efb2a..c2a42bd6b2347c559048cb0f718920c9 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2222,5 +2223,6 @@ public class PurpurWorldConfig { +@@ -2224,5 +2225,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/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch index 690c283ce..b2e780d91 100644 --- a/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,10 +182,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2a42bd6b2347c559048cb0f718920c9ff0ea142..1d64122cda959967d60294cb69be2854f7f9d5bd 100644 +index 76a4fb37b908a1f8523ae3fa5a56a7ef3726391f..c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2082,6 +2082,8 @@ public class PurpurWorldConfig { +@@ -2084,6 +2084,8 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -194,7 +194,7 @@ index c2a42bd6b2347c559048cb0f718920c9ff0ea142..1d64122cda959967d60294cb69be2854 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -2094,6 +2096,8 @@ public class PurpurWorldConfig { +@@ -2096,6 +2098,8 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0109-Configurable-default-collar-color.patch b/patches/server/0110-Configurable-default-collar-color.patch similarity index 93% rename from patches/server/0109-Configurable-default-collar-color.patch rename to patches/server/0110-Configurable-default-collar-color.patch index 68d83c356..34f0963a0 100644 --- a/patches/server/0109-Configurable-default-collar-color.patch +++ b/patches/server/0110-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index d159d573d5f87c31cf61baacbaae193d24ab6801..143717d64651ffd75124973ca7a15fc1 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d64122cda959967d60294cb69be2854f7f9d5bd..aa2038f6038987a218bd779de37d797b7a3291ee 100644 +index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee305471173726 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -654,6 +654,7 @@ public class PurpurWorldConfig { +@@ -656,6 +656,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index 1d64122cda959967d60294cb69be2854f7f9d5bd..aa2038f6038987a218bd779de37d797b private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -669,6 +670,11 @@ public class PurpurWorldConfig { +@@ -671,6 +672,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 1d64122cda959967d60294cb69be2854f7f9d5bd..aa2038f6038987a218bd779de37d797b } public boolean caveSpiderRidable = false; -@@ -2082,6 +2088,7 @@ public class PurpurWorldConfig { +@@ -2084,6 +2090,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -74,7 +74,7 @@ index 1d64122cda959967d60294cb69be2854f7f9d5bd..aa2038f6038987a218bd779de37d797b public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -2096,6 +2103,11 @@ public class PurpurWorldConfig { +@@ -2098,6 +2105,11 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0110-Phantom-flames-on-swoop.patch b/patches/server/0111-Phantom-flames-on-swoop.patch similarity index 91% rename from patches/server/0110-Phantom-flames-on-swoop.patch rename to patches/server/0111-Phantom-flames-on-swoop.patch index bd7f2ba89..22dc1293f 100644 --- a/patches/server/0110-Phantom-flames-on-swoop.patch +++ b/patches/server/0111-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa2038f6038987a218bd779de37d797b7a3291ee..0e5c2c9edab519044bdfb4cc70022cd5bb10e8e2 100644 +index 0d5ad3c193841bdb08853ceadeee305471173726..561398fe6cf4d20a8418582e6d002edfe7060125 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1383,6 +1383,7 @@ public class PurpurWorldConfig { +@@ -1385,6 +1385,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index aa2038f6038987a218bd779de37d797b7a3291ee..0e5c2c9edab519044bdfb4cc70022cd5 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1416,6 +1417,7 @@ public class PurpurWorldConfig { +@@ -1418,6 +1419,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/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 91% rename from patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 886cca40a..d06d82b2c 100644 --- a/patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 8fbfd18b3caeed769396b3ffb1b1778b2f38edc0..dbfe8f5d4df244cb694b73ea8763628c 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 0e5c2c9edab519044bdfb4cc70022cd5bb10e8e2..080446acffc6150b8c578946bfcfa99e2ba13d79 100644 +index 561398fe6cf4d20a8418582e6d002edfe7060125..c2d9ec6da2d4c6523a073c8bda10ce8486953574 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -411,6 +411,11 @@ public class PurpurWorldConfig { +@@ -413,6 +413,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0112-Implement-TPSBar.patch b/patches/server/0113-Implement-TPSBar.patch similarity index 100% rename from patches/server/0112-Implement-TPSBar.patch rename to patches/server/0113-Implement-TPSBar.patch diff --git a/patches/server/0113-Striders-give-saddle-back.patch b/patches/server/0114-Striders-give-saddle-back.patch similarity index 92% rename from patches/server/0113-Striders-give-saddle-back.patch rename to patches/server/0114-Striders-give-saddle-back.patch index 8e23c256f..8905acf44 100644 --- a/patches/server/0113-Striders-give-saddle-back.patch +++ b/patches/server/0114-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 8c233a90d07db7959b778a84c4ed0589a6a10dd4..d534eaa9231602f8fa73d0230223f083 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 080446acffc6150b8c578946bfcfa99e2ba13d79..cb948241a14bf7348a37ac6f885ecfe49ef858e2 100644 +index c2d9ec6da2d4c6523a073c8bda10ce8486953574..cc5a653f534b4050e2129e3746bf06d28132a252 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1836,6 +1836,7 @@ public class PurpurWorldConfig { +@@ -1838,6 +1838,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 080446acffc6150b8c578946bfcfa99e2ba13d79..cb948241a14bf7348a37ac6f885ecfe4 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1848,6 +1849,7 @@ public class PurpurWorldConfig { +@@ -1850,6 +1851,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0114-PlayerBookTooLargeEvent.patch b/patches/server/0115-PlayerBookTooLargeEvent.patch similarity index 96% rename from patches/server/0114-PlayerBookTooLargeEvent.patch rename to patches/server/0115-PlayerBookTooLargeEvent.patch index 350a1e740..a8c1b44c3 100644 --- a/patches/server/0114-PlayerBookTooLargeEvent.patch +++ b/patches/server/0115-PlayerBookTooLargeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ce1901c683c44893780342f7a3914613abc44b0b..aba962f4e706f2698f3729a304816965d788d7e3 100644 +index 600b8280c11032339c056b2b3ad371674072e2c2..46cc4aabf1fb349d1ecead78c0041b9de8cde99d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1152,10 +1152,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch similarity index 96% rename from patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch index 830c68c89..54d492f2d 100644 --- a/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index 9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45..33c1b2b387e7412a001841d1bcbb3966 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb948241a14bf7348a37ac6f885ecfe49ef858e2..a3cdaaa530d43ddfb5dcf312f39425372e18a0a6 100644 +index cc5a653f534b4050e2129e3746bf06d28132a252..03380ffce492af4620d613ef8af0a11c3c322cd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -286,6 +286,19 @@ public class PurpurWorldConfig { +@@ -288,6 +288,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 95% rename from patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch index a6aa05cfd..689018f47 100644 --- a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch @@ -375,13 +375,13 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdcca3488cf 100644 +index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56bebf1c5f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -115,8 +115,11 @@ public class PurpurWorldConfig { - public boolean boatEjectPlayersOnLand = false; +@@ -116,8 +116,11 @@ public class PurpurWorldConfig { public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesCanUsePortals = true; + public boolean entitiesPickUpLootBypassMobGriefing = false; + public boolean fireballsBypassMobGriefing = false; public boolean milkCuresBadOmen = true; @@ -390,10 +390,10 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -127,8 +130,11 @@ public class PurpurWorldConfig { - boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); +@@ -129,8 +132,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); + 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); @@ -402,7 +402,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc 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); -@@ -436,9 +442,11 @@ public class PurpurWorldConfig { +@@ -438,9 +444,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -414,7 +414,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -463,6 +471,11 @@ public class PurpurWorldConfig { +@@ -465,6 +473,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -426,7 +426,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -492,10 +505,12 @@ public class PurpurWorldConfig { +@@ -494,10 +507,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; @@ -439,7 +439,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public int waterInfiniteRequiredSources = 2; -@@ -780,6 +795,7 @@ public class PurpurWorldConfig { +@@ -782,6 +797,7 @@ public class PurpurWorldConfig { public double creeperScale = 1.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -447,7 +447,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -793,6 +809,7 @@ public class PurpurWorldConfig { +@@ -795,6 +811,7 @@ public class PurpurWorldConfig { creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -455,7 +455,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean dolphinRidable = false; -@@ -893,6 +910,7 @@ public class PurpurWorldConfig { +@@ -895,6 +912,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -463,7 +463,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -909,6 +927,7 @@ public class PurpurWorldConfig { +@@ -911,6 +929,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -471,7 +471,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean endermanRidable = false; -@@ -918,6 +937,7 @@ public class PurpurWorldConfig { +@@ -920,6 +939,7 @@ public class PurpurWorldConfig { public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -479,7 +479,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -931,6 +951,7 @@ public class PurpurWorldConfig { +@@ -933,6 +953,7 @@ public class PurpurWorldConfig { endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -487,7 +487,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean endermiteRidable = false; -@@ -956,6 +977,7 @@ public class PurpurWorldConfig { +@@ -958,6 +979,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; @@ -495,7 +495,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -967,6 +989,7 @@ public class PurpurWorldConfig { +@@ -969,6 +991,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); @@ -503,7 +503,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean foxRidable = false; -@@ -976,6 +999,7 @@ public class PurpurWorldConfig { +@@ -978,6 +1001,7 @@ public class PurpurWorldConfig { public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -511,7 +511,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -989,6 +1013,7 @@ public class PurpurWorldConfig { +@@ -991,6 +1015,7 @@ public class PurpurWorldConfig { foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -519,7 +519,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean frogRidable = false; -@@ -1465,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1492,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; @@ -527,7 +527,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1476,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1504,7 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); @@ -535,7 +535,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean piglinBruteRidable = false; -@@ -1501,6 +1528,7 @@ public class PurpurWorldConfig { +@@ -1503,6 +1530,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; @@ -543,7 +543,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1512,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1514,6 +1542,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); @@ -551,7 +551,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean polarBearRidable = false; -@@ -1563,6 +1592,7 @@ public class PurpurWorldConfig { +@@ -1565,6 +1594,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -559,7 +559,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1577,6 +1607,7 @@ public class PurpurWorldConfig { +@@ -1579,6 +1609,7 @@ 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); @@ -567,7 +567,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean ravagerRidable = false; -@@ -1584,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1586,6 +1617,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; @@ -575,7 +575,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1595,6 +1627,7 @@ public class PurpurWorldConfig { +@@ -1597,6 +1629,7 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); @@ -583,7 +583,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean salmonRidable = false; -@@ -1619,6 +1652,7 @@ public class PurpurWorldConfig { +@@ -1621,6 +1654,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; @@ -591,7 +591,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1631,6 +1665,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1667,7 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -599,7 +599,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean shulkerRidable = false; -@@ -1658,6 +1693,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1695,7 @@ public class PurpurWorldConfig { public double silverfishScale = 1.0D; public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; @@ -607,7 +607,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1671,6 +1707,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1709,7 @@ public class PurpurWorldConfig { silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D); silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); @@ -615,7 +615,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean skeletonRidable = false; -@@ -1751,6 +1788,7 @@ public class PurpurWorldConfig { +@@ -1753,6 +1790,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -623,7 +623,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1768,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1770,6 +1808,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); @@ -631,7 +631,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean snifferRidable = false; -@@ -1971,6 +2010,7 @@ public class PurpurWorldConfig { +@@ -1973,6 +2012,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -639,7 +639,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1988,6 +2028,7 @@ public class PurpurWorldConfig { +@@ -1990,6 +2030,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); @@ -647,7 +647,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean vindicatorRidable = false; -@@ -2067,6 +2108,7 @@ public class PurpurWorldConfig { +@@ -2069,6 +2110,7 @@ public class PurpurWorldConfig { public double witherScale = 1.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -655,7 +655,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2085,6 +2127,7 @@ public class PurpurWorldConfig { +@@ -2087,6 +2129,7 @@ public class PurpurWorldConfig { witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -663,7 +663,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc } public boolean witherSkeletonRidable = false; -@@ -2163,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2165,6 +2208,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -671,7 +671,7 @@ index a3cdaaa530d43ddfb5dcf312f39425372e18a0a6..3d6b6f262aaf354b57973db247c73fdc private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2179,6 +2223,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2225,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/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 94% rename from patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch index 2800db08e..23ebd4f13 100644 --- a/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,10 +22,10 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7 // 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 3d6b6f262aaf354b57973db247c73fdcca3488cf..489beb355db7ea1119470164c987408e9c34a60f 100644 +index 0a6eea1ff455da964acf85e24d2d1e56bebf1c5f..4712bd3d2221bd0b54977cf671cecab6120ab1fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -118,6 +118,7 @@ public class PurpurWorldConfig { +@@ -119,6 +119,7 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; public boolean milkCuresBadOmen = true; @@ -33,7 +33,7 @@ index 3d6b6f262aaf354b57973db247c73fdcca3488cf..489beb355db7ea1119470164c987408e public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; -@@ -133,6 +134,7 @@ public class PurpurWorldConfig { +@@ -135,6 +136,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/0118-Add-EntityTeleportHinderedEvent.patch b/patches/server/0119-Add-EntityTeleportHinderedEvent.patch similarity index 95% rename from patches/server/0118-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0119-Add-EntityTeleportHinderedEvent.patch index 3eff09156..a84f84c27 100644 --- a/patches/server/0118-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0119-Add-EntityTeleportHinderedEvent.patch @@ -71,7 +71,7 @@ index ddab7de1d376e9e486e2f920174397ea8804aa29..e170176497b833e9addbdc652edcc074 EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.NETHER); // Paper - add portal type world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 84479dad6078a2a12e6b977185bdbbe7f6b36576..4be205b10229b238039e4221df043e47cba68511 100644 +index edaaaf0ecc412504b32fe7481f95e5947e0f922a..0d497b26eeb53ca65bbb936e2c1bed3d47560ea2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -245,6 +245,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -95,11 +95,11 @@ index 1faf1c4b777333030d164e277ee3552900f10cd3..c24aaffc141d8d75c18ae9a1dc35579f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 489beb355db7ea1119470164c987408e9c34a60f..ea8288b00d7a9cf5d1529a13011b7df7aac55a3a 100644 +index 4712bd3d2221bd0b54977cf671cecab6120ab1fa..fbe6c149be4b0d46a6092c97f52cf125e5aa2e7b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -117,6 +117,9 @@ public class PurpurWorldConfig { - public boolean disableDropsOnCrammingDeath = false; +@@ -118,6 +118,9 @@ public class PurpurWorldConfig { + public boolean entitiesCanUsePortals = true; public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; + public boolean imposeTeleportRestrictionsOnGateways = false; @@ -108,8 +108,8 @@ index 489beb355db7ea1119470164c987408e9c34a60f..ea8288b00d7a9cf5d1529a13011b7df7 public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; -@@ -133,6 +136,9 @@ public class PurpurWorldConfig { - disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); +@@ -135,6 +138,9 @@ 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); + imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); diff --git a/patches/server/0119-Farmland-trampling-changes.patch b/patches/server/0120-Farmland-trampling-changes.patch similarity index 95% rename from patches/server/0119-Farmland-trampling-changes.patch rename to patches/server/0120-Farmland-trampling-changes.patch index 4352c43e8..0484fff77 100644 --- a/patches/server/0119-Farmland-trampling-changes.patch +++ b/patches/server/0120-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ea8288b00d7a9cf5d1529a13011b7df7aac55a3a..6958742eb8bafab17f79bb29137dde3f9d9ba5e2 100644 +index fbe6c149be4b0d46a6092c97f52cf125e5aa2e7b..3fba79b4520d7fb3345ba3e9fda6ea015471428e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -453,10 +453,16 @@ public class PurpurWorldConfig { +@@ -455,10 +455,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0120-Movement-options-for-armor-stands.patch b/patches/server/0121-Movement-options-for-armor-stands.patch similarity index 96% rename from patches/server/0120-Movement-options-for-armor-stands.patch rename to patches/server/0121-Movement-options-for-armor-stands.patch index 74afb5e6f..a0edc4b5d 100644 --- a/patches/server/0120-Movement-options-for-armor-stands.patch +++ b/patches/server/0121-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 ffb83e96b070179467ddedbe7d24752752fffbeb..1731853a58788a5e9c036c4158503b00e3d0a7ca 100644 +index 51eebbee1c46062b35a2703713f2e1dfafcb0b26..885b0385aa78ffba8f2f7e0d0d3d03e457512ef3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1926,7 +1926,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -66,7 +66,7 @@ index 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6958742eb8bafab17f79bb29137dde3f9d9ba5e2..fe262538b7c4f3f69cb481303d4b16b55e8b1082 100644 +index 3fba79b4520d7fb3345ba3e9fda6ea015471428e..59e5f8f9e2a7b782b4e20334515252afaaaf4036 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,10 +100,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0121-Fix-stuck-in-portals.patch b/patches/server/0122-Fix-stuck-in-portals.patch similarity index 81% rename from patches/server/0121-Fix-stuck-in-portals.patch rename to patches/server/0122-Fix-stuck-in-portals.patch index 63cd37236..925308f75 100644 --- a/patches/server/0121-Fix-stuck-in-portals.patch +++ b/patches/server/0122-Fix-stuck-in-portals.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 53d02ab56e3d3f15147d76861bd498d456f59d13..883e5095498badab26c7bcf51d78bbc20de644d4 100644 +index 53d02ab56e3d3f15147d76861bd498d456f59d13..8f7ab2445ff9ab74c6de0f29218a231d91998adf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1425,6 +1425,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end -+ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur ++ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur - Fix stuck in portals this.setServerLevel(worldserver); this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1731853a58788a5e9c036c4158503b00e3d0a7ca..13c3f64cc1740a2f9f726e32eaf60989bcf9eb2a 100644 +index 885b0385aa78ffba8f2f7e0d0d3d03e457512ef3..c4df88e56216209f4acd0d2441d8973bd6bce5f8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3263,13 +3263,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -27,21 +27,21 @@ index 1731853a58788a5e9c036c4158503b00e3d0a7ca..13c3f64cc1740a2f9f726e32eaf60989 + public BlockPos portalPos = BlockPos.ZERO; // Purpur public void setAsInsidePortal(Portal portal, BlockPos pos) { if (this.isOnPortalCooldown()) { -+ if (!(level().purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur ++ if (!(level().purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(this.portalPos))) // Purpur - Fix stuck in portals this.setPortalCooldown(); - } else { + } else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) { this.portalProcess.updateEntryPosition(pos.immutable()); this.portalProcess.setAsInsidePortalThisTick(true); -+ portalPos = BlockPos.ZERO; // Purpur ++ this.portalPos = BlockPos.ZERO; // Purpur - Fix stuck in portals } else { this.portalProcess = new PortalProcessor(portal, pos.immutable()); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe262538b7c4f3f69cb481303d4b16b55e8b1082..17a57de1513c635640167b90334aca6cb3384a8d 100644 +index 59e5f8f9e2a7b782b4e20334515252afaaaf4036..e65d5ce9833e4e949290016d0a85eff329dcd2e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -328,6 +328,7 @@ public class PurpurWorldConfig { +@@ -330,6 +330,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -49,7 +49,7 @@ index fe262538b7c4f3f69cb481303d4b16b55e8b1082..17a57de1513c635640167b90334aca6c private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -343,6 +344,7 @@ public class PurpurWorldConfig { +@@ -345,6 +346,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/0122-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch similarity index 94% rename from patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch index f9734183c..b551f326c 100644 --- a/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch @@ -1199,10 +1199,10 @@ index 0d5e828a7fb6fd6facc04a27175541ac463c918e..05c63eb6cf8a7067105c58d244c7cc27 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526fb8e50d27 100644 +index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a97e3d4897 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -584,12 +584,14 @@ public class PurpurWorldConfig { +@@ -586,12 +586,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; @@ -1217,7 +1217,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean batRidable = false; -@@ -605,6 +607,7 @@ public class PurpurWorldConfig { +@@ -607,6 +609,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1225,7 +1225,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -624,6 +627,7 @@ public class PurpurWorldConfig { +@@ -626,6 +629,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1233,7 +1233,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean beeRidable = false; -@@ -633,6 +637,7 @@ public class PurpurWorldConfig { +@@ -635,6 +639,7 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; public int beeBreedingTicks = 6000; @@ -1241,7 +1241,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -646,6 +651,7 @@ public class PurpurWorldConfig { +@@ -648,6 +653,7 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1249,7 +1249,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean blazeRidable = false; -@@ -654,6 +660,7 @@ public class PurpurWorldConfig { +@@ -656,6 +662,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; @@ -1257,7 +1257,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -666,6 +673,7 @@ public class PurpurWorldConfig { +@@ -668,6 +675,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D); @@ -1265,7 +1265,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean boggedRidable = false; -@@ -710,6 +718,7 @@ public class PurpurWorldConfig { +@@ -712,6 +720,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1273,7 +1273,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -730,6 +739,7 @@ public class PurpurWorldConfig { +@@ -732,6 +741,7 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1281,7 +1281,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean caveSpiderRidable = false; -@@ -737,6 +747,7 @@ public class PurpurWorldConfig { +@@ -739,6 +749,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; @@ -1289,7 +1289,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -748,6 +759,7 @@ public class PurpurWorldConfig { +@@ -750,6 +761,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D); @@ -1297,7 +1297,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean chickenRidable = false; -@@ -757,6 +769,7 @@ public class PurpurWorldConfig { +@@ -759,6 +771,7 @@ public class PurpurWorldConfig { public double chickenScale = 1.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1305,7 +1305,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -770,12 +783,14 @@ public class PurpurWorldConfig { +@@ -772,12 +785,14 @@ public class PurpurWorldConfig { chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1320,7 +1320,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -786,6 +801,7 @@ public class PurpurWorldConfig { +@@ -788,6 +803,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D); @@ -1328,7 +1328,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean cowRidable = false; -@@ -795,6 +811,7 @@ public class PurpurWorldConfig { +@@ -797,6 +813,7 @@ public class PurpurWorldConfig { public double cowScale = 1.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1336,7 +1336,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -808,6 +825,7 @@ public class PurpurWorldConfig { +@@ -810,6 +827,7 @@ public class PurpurWorldConfig { cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1344,7 +1344,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean creeperRidable = false; -@@ -818,6 +836,7 @@ public class PurpurWorldConfig { +@@ -820,6 +838,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1352,7 +1352,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -832,6 +851,7 @@ public class PurpurWorldConfig { +@@ -834,6 +853,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); @@ -1360,7 +1360,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean dolphinRidable = false; -@@ -842,6 +862,7 @@ public class PurpurWorldConfig { +@@ -844,6 +864,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1368,7 +1368,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -856,6 +877,7 @@ public class PurpurWorldConfig { +@@ -858,6 +879,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1376,7 +1376,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean donkeyRidableInWater = false; -@@ -866,6 +888,7 @@ public class PurpurWorldConfig { +@@ -868,6 +890,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1384,7 +1384,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -882,6 +905,7 @@ public class PurpurWorldConfig { +@@ -884,6 +907,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); @@ -1392,7 +1392,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean drownedRidable = false; -@@ -893,6 +917,7 @@ public class PurpurWorldConfig { +@@ -895,6 +919,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1400,7 +1400,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -908,12 +933,14 @@ public class PurpurWorldConfig { +@@ -910,12 +935,14 @@ 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); @@ -1415,7 +1415,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -924,6 +951,7 @@ public class PurpurWorldConfig { +@@ -926,6 +953,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); @@ -1423,7 +1423,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean enderDragonRidable = false; -@@ -933,6 +961,7 @@ public class PurpurWorldConfig { +@@ -935,6 +963,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1431,7 +1431,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -950,6 +979,7 @@ public class PurpurWorldConfig { +@@ -952,6 +981,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); @@ -1439,7 +1439,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean endermanRidable = false; -@@ -960,6 +990,7 @@ public class PurpurWorldConfig { +@@ -962,6 +992,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1447,7 +1447,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -974,6 +1005,7 @@ public class PurpurWorldConfig { +@@ -976,6 +1007,7 @@ 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); @@ -1455,7 +1455,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean endermiteRidable = false; -@@ -981,6 +1013,7 @@ public class PurpurWorldConfig { +@@ -983,6 +1015,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; @@ -1463,7 +1463,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -992,6 +1025,7 @@ public class PurpurWorldConfig { +@@ -994,6 +1027,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); @@ -1471,7 +1471,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean evokerRidable = false; -@@ -1000,6 +1034,7 @@ public class PurpurWorldConfig { +@@ -1002,6 +1036,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; @@ -1479,7 +1479,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1012,6 +1047,7 @@ public class PurpurWorldConfig { +@@ -1014,6 +1049,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1487,7 +1487,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean foxRidable = false; -@@ -1022,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1024,6 +1060,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1495,7 +1495,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1036,6 +1073,7 @@ public class PurpurWorldConfig { +@@ -1038,6 +1075,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); @@ -1503,7 +1503,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean frogRidable = false; -@@ -1057,6 +1095,7 @@ public class PurpurWorldConfig { +@@ -1059,6 +1097,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; @@ -1511,7 +1511,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1069,6 +1108,7 @@ public class PurpurWorldConfig { +@@ -1071,6 +1110,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); @@ -1519,7 +1519,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean giantRidable = false; -@@ -1082,6 +1122,7 @@ public class PurpurWorldConfig { +@@ -1084,6 +1124,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1527,7 +1527,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1103,6 +1144,7 @@ public class PurpurWorldConfig { +@@ -1105,6 +1146,7 @@ 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); @@ -1535,7 +1535,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean glowSquidRidable = false; -@@ -1110,12 +1152,14 @@ public class PurpurWorldConfig { +@@ -1112,12 +1154,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; @@ -1550,7 +1550,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean goatRidable = false; -@@ -1124,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1126,6 +1170,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; public int goatBreedingTicks = 6000; @@ -1558,7 +1558,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1131,12 +1176,14 @@ public class PurpurWorldConfig { +@@ -1133,12 +1178,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); @@ -1573,7 +1573,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1147,6 +1194,7 @@ public class PurpurWorldConfig { +@@ -1149,6 +1196,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); @@ -1581,7 +1581,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean hoglinRidable = false; -@@ -1155,6 +1203,7 @@ public class PurpurWorldConfig { +@@ -1157,6 +1205,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; @@ -1589,7 +1589,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1167,6 +1216,7 @@ public class PurpurWorldConfig { +@@ -1169,6 +1218,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1597,7 +1597,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean horseRidableInWater = false; -@@ -1177,6 +1227,7 @@ public class PurpurWorldConfig { +@@ -1179,6 +1229,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1605,7 +1605,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1193,6 +1244,7 @@ public class PurpurWorldConfig { +@@ -1195,6 +1246,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); @@ -1613,7 +1613,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean huskRidable = false; -@@ -1204,6 +1256,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1258,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1621,7 +1621,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1219,6 +1272,7 @@ public class PurpurWorldConfig { +@@ -1221,6 +1274,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); @@ -1629,7 +1629,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean illusionerRidable = false; -@@ -1228,6 +1282,7 @@ public class PurpurWorldConfig { +@@ -1230,6 +1284,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; @@ -1637,7 +1637,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1245,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1247,6 +1302,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); @@ -1645,7 +1645,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean ironGolemRidable = false; -@@ -1253,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1255,6 +1311,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; @@ -1653,7 +1653,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1265,6 +1322,7 @@ public class PurpurWorldConfig { +@@ -1267,6 +1324,7 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); @@ -1661,7 +1661,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean llamaRidable = false; -@@ -1277,6 +1335,7 @@ public class PurpurWorldConfig { +@@ -1279,6 +1337,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1669,7 +1669,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1295,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1297,6 +1356,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); @@ -1677,7 +1677,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean magmaCubeRidable = false; -@@ -1304,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1306,6 +1366,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1685,7 +1685,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1317,6 +1378,7 @@ public class PurpurWorldConfig { +@@ -1319,6 +1380,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1693,7 +1693,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean mooshroomRidable = false; -@@ -1325,6 +1387,7 @@ public class PurpurWorldConfig { +@@ -1327,6 +1389,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; @@ -1701,7 +1701,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1337,6 +1400,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1402,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1709,7 +1709,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean muleRidableInWater = false; -@@ -1347,6 +1411,7 @@ public class PurpurWorldConfig { +@@ -1349,6 +1413,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1717,7 +1717,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1363,6 +1428,7 @@ public class PurpurWorldConfig { +@@ -1365,6 +1430,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); @@ -1725,7 +1725,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean ocelotRidable = false; -@@ -1371,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1373,6 +1439,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; @@ -1733,7 +1733,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1383,6 +1450,7 @@ public class PurpurWorldConfig { +@@ -1385,6 +1452,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1741,7 +1741,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean pandaRidable = false; -@@ -1391,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1393,6 +1461,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; @@ -1749,7 +1749,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1403,6 +1472,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1474,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1757,7 +1757,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean parrotRidable = false; -@@ -1411,6 +1481,7 @@ public class PurpurWorldConfig { +@@ -1413,6 +1483,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; @@ -1765,7 +1765,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1423,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1496,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); @@ -1773,7 +1773,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean phantomRidable = false; -@@ -1449,6 +1521,7 @@ public class PurpurWorldConfig { +@@ -1451,6 +1523,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1781,7 +1781,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1483,6 +1556,7 @@ public class PurpurWorldConfig { +@@ -1485,6 +1558,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); @@ -1789,7 +1789,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean pigRidable = false; -@@ -1492,6 +1566,7 @@ public class PurpurWorldConfig { +@@ -1494,6 +1568,7 @@ public class PurpurWorldConfig { public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1797,7 +1797,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1505,6 +1580,7 @@ public class PurpurWorldConfig { +@@ -1507,6 +1582,7 @@ public class PurpurWorldConfig { pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1805,7 +1805,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean piglinRidable = false; -@@ -1513,6 +1589,7 @@ public class PurpurWorldConfig { +@@ -1515,6 +1591,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; @@ -1813,7 +1813,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1525,6 +1602,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1604,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1821,7 +1821,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean piglinBruteRidable = false; -@@ -1532,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1534,6 +1612,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; @@ -1829,7 +1829,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1543,6 +1622,7 @@ public class PurpurWorldConfig { +@@ -1545,6 +1624,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); @@ -1837,7 +1837,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean pillagerRidable = false; -@@ -1551,6 +1631,7 @@ public class PurpurWorldConfig { +@@ -1553,6 +1633,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; @@ -1845,7 +1845,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1563,6 +1644,7 @@ public class PurpurWorldConfig { +@@ -1565,6 +1646,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1853,7 +1853,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean polarBearRidable = false; -@@ -1573,6 +1655,7 @@ public class PurpurWorldConfig { +@@ -1575,6 +1657,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1861,7 +1861,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1588,12 +1671,14 @@ public class PurpurWorldConfig { +@@ -1590,12 +1673,14 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1876,7 +1876,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1604,6 +1689,7 @@ public class PurpurWorldConfig { +@@ -1606,6 +1691,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); @@ -1884,7 +1884,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean rabbitRidable = false; -@@ -1615,6 +1701,7 @@ public class PurpurWorldConfig { +@@ -1617,6 +1703,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1892,7 +1892,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1630,6 +1717,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1719,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); @@ -1900,7 +1900,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean ravagerRidable = false; -@@ -1638,6 +1726,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1728,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; @@ -1908,7 +1908,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1650,12 +1739,14 @@ public class PurpurWorldConfig { +@@ -1652,12 +1741,14 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1923,7 +1923,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1666,6 +1757,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1759,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); @@ -1931,7 +1931,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean sheepRidable = false; -@@ -1675,6 +1767,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1769,7 @@ public class PurpurWorldConfig { public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1939,7 +1939,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1688,6 +1781,7 @@ public class PurpurWorldConfig { +@@ -1690,6 +1783,7 @@ public class PurpurWorldConfig { sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1947,7 +1947,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean shulkerRidable = false; -@@ -1695,6 +1789,7 @@ public class PurpurWorldConfig { +@@ -1697,6 +1791,7 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; @@ -1955,7 +1955,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1706,6 +1801,7 @@ public class PurpurWorldConfig { +@@ -1708,6 +1803,7 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); @@ -1963,7 +1963,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean silverfishRidable = false; -@@ -1716,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1718,6 +1814,7 @@ public class PurpurWorldConfig { public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; @@ -1971,7 +1971,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1730,6 +1827,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1829,7 @@ public class PurpurWorldConfig { silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1979,7 +1979,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean skeletonRidable = false; -@@ -1737,6 +1835,7 @@ public class PurpurWorldConfig { +@@ -1739,6 +1837,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; @@ -1987,7 +1987,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1748,6 +1847,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1849,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); @@ -1995,7 +1995,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean skeletonHorseRidable = false; -@@ -1759,6 +1859,7 @@ public class PurpurWorldConfig { +@@ -1761,6 +1861,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -2003,7 +2003,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1775,6 +1876,7 @@ public class PurpurWorldConfig { +@@ -1777,6 +1878,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); @@ -2011,7 +2011,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean slimeRidable = false; -@@ -1784,6 +1886,7 @@ public class PurpurWorldConfig { +@@ -1786,6 +1888,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2019,7 +2019,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1797,6 +1900,7 @@ public class PurpurWorldConfig { +@@ -1799,6 +1902,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2027,7 +2027,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean snowGolemRidable = false; -@@ -1811,6 +1915,7 @@ public class PurpurWorldConfig { +@@ -1813,6 +1917,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2035,7 +2035,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1829,6 +1934,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1936,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); @@ -2043,7 +2043,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean snifferRidable = false; -@@ -1853,6 +1959,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1961,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2051,7 +2051,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1866,6 +1973,7 @@ public class PurpurWorldConfig { +@@ -1868,6 +1975,7 @@ 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); @@ -2059,7 +2059,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean spiderRidable = false; -@@ -1873,6 +1981,7 @@ public class PurpurWorldConfig { +@@ -1875,6 +1983,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; @@ -2067,7 +2067,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1884,6 +1993,7 @@ public class PurpurWorldConfig { +@@ -1886,6 +1995,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); @@ -2075,7 +2075,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean strayRidable = false; -@@ -1891,6 +2001,7 @@ public class PurpurWorldConfig { +@@ -1893,6 +2003,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; @@ -2083,7 +2083,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1902,6 +2013,7 @@ public class PurpurWorldConfig { +@@ -1904,6 +2015,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); @@ -2091,7 +2091,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean striderRidable = false; -@@ -1911,6 +2023,7 @@ public class PurpurWorldConfig { +@@ -1913,6 +2025,7 @@ public class PurpurWorldConfig { public double striderScale = 1.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2099,7 +2099,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1924,6 +2037,7 @@ public class PurpurWorldConfig { +@@ -1926,6 +2039,7 @@ public class PurpurWorldConfig { striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2107,7 +2107,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean tadpoleRidable = false; -@@ -1945,6 +2059,7 @@ public class PurpurWorldConfig { +@@ -1947,6 +2061,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2115,7 +2115,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1963,12 +2078,14 @@ public class PurpurWorldConfig { +@@ -1965,12 +2080,14 @@ 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); @@ -2130,7 +2130,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1979,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -1981,6 +2098,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); @@ -2138,7 +2138,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean turtleRidable = false; -@@ -1987,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -1989,6 +2107,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; @@ -2146,7 +2146,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1999,6 +2118,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2120,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2154,7 +2154,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean vexRidable = false; -@@ -2007,6 +2127,7 @@ public class PurpurWorldConfig { +@@ -2009,6 +2129,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; @@ -2162,7 +2162,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2019,6 +2140,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2142,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); @@ -2170,7 +2170,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean villagerRidable = false; -@@ -2033,6 +2155,7 @@ public class PurpurWorldConfig { +@@ -2035,6 +2157,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2178,7 +2178,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2051,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2053,6 +2176,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); @@ -2186,7 +2186,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean vindicatorRidable = false; -@@ -2059,6 +2183,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2185,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2194,7 +2194,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2071,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2073,6 +2198,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2202,7 +2202,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean wanderingTraderRidable = false; -@@ -2080,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2208,7 @@ public class PurpurWorldConfig { public double wanderingTraderScale = 1.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2210,7 +2210,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2093,6 +2220,7 @@ public class PurpurWorldConfig { +@@ -2095,6 +2222,7 @@ public class PurpurWorldConfig { wanderingTraderScale = Mth.clamp(getDouble("mobs.wandering_trader.attributes.scale", wanderingTraderScale), 0.0625D, 16.0D); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2218,7 +2218,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean wardenRidable = false; -@@ -2109,6 +2237,7 @@ public class PurpurWorldConfig { +@@ -2111,6 +2239,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; @@ -2226,7 +2226,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2120,6 +2249,7 @@ public class PurpurWorldConfig { +@@ -2122,6 +2251,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); @@ -2234,7 +2234,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean witherRidable = false; -@@ -2131,6 +2261,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2263,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2242,7 +2242,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2150,6 +2281,7 @@ public class PurpurWorldConfig { +@@ -2152,6 +2283,7 @@ 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); @@ -2250,7 +2250,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean witherSkeletonRidable = false; -@@ -2157,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2159,6 +2291,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; @@ -2258,7 +2258,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2168,6 +2301,7 @@ public class PurpurWorldConfig { +@@ -2170,6 +2303,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); @@ -2266,7 +2266,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean wolfRidable = false; -@@ -2179,6 +2313,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2315,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2274,7 +2274,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2198,6 +2333,7 @@ public class PurpurWorldConfig { +@@ -2200,6 +2335,7 @@ 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); @@ -2282,7 +2282,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean zoglinRidable = false; -@@ -2205,6 +2341,7 @@ public class PurpurWorldConfig { +@@ -2207,6 +2343,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; @@ -2290,7 +2290,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2216,6 +2353,7 @@ public class PurpurWorldConfig { +@@ -2218,6 +2355,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); @@ -2298,7 +2298,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean zombieRidable = false; -@@ -2229,6 +2367,7 @@ public class PurpurWorldConfig { +@@ -2231,6 +2369,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2306,7 +2306,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2246,6 +2385,7 @@ public class PurpurWorldConfig { +@@ -2248,6 +2387,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); @@ -2314,7 +2314,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean zombieHorseRidable = false; -@@ -2258,6 +2398,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2400,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2322,7 +2322,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2275,6 +2416,7 @@ public class PurpurWorldConfig { +@@ -2277,6 +2418,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); @@ -2330,7 +2330,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean zombieVillagerRidable = false; -@@ -2286,6 +2428,7 @@ public class PurpurWorldConfig { +@@ -2288,6 +2430,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2338,7 +2338,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2301,6 +2444,7 @@ public class PurpurWorldConfig { +@@ -2303,6 +2446,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); @@ -2346,7 +2346,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f } public boolean zombifiedPiglinRidable = false; -@@ -2313,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2315,6 +2459,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2354,7 +2354,7 @@ index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2329,5 +2474,6 @@ public class PurpurWorldConfig { +@@ -2331,5 +2476,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/0123-Config-to-always-tame-in-Creative.patch b/patches/server/0124-Config-to-always-tame-in-Creative.patch similarity index 97% rename from patches/server/0123-Config-to-always-tame-in-Creative.patch rename to patches/server/0124-Config-to-always-tame-in-Creative.patch index 032e3f9f0..8456aa5e1 100644 --- a/patches/server/0123-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0124-Config-to-always-tame-in-Creative.patch @@ -59,7 +59,7 @@ index b6602362b7b450749ae1768572658b756c4e7840..2949adfbe7c71d552a4afb6aca1c166a this.navigation.stop(); this.setTarget((LivingEntity) null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75d45b1c9eb9ad15154454802bc5526fb8e50d27..9110920bbcc32fa3cf67ea92030fa1b4101e44f4 100644 +index a4402d7f5385a3f3db6b7e6d928db4a97e3d4897..8cab49bd3c087afddeec1c90e03ca8df51c7d04c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { @@ -70,7 +70,7 @@ index 75d45b1c9eb9ad15154454802bc5526fb8e50d27..9110920bbcc32fa3cf67ea92030fa1b4 public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; -@@ -137,6 +138,7 @@ public class PurpurWorldConfig { +@@ -138,6 +139,7 @@ public class PurpurWorldConfig { public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0124-End-crystal-explosion-options.patch b/patches/server/0125-End-crystal-explosion-options.patch similarity index 97% rename from patches/server/0124-End-crystal-explosion-options.patch rename to patches/server/0125-End-crystal-explosion-options.patch index 43ac3c550..6c119fb04 100644 --- a/patches/server/0124-End-crystal-explosion-options.patch +++ b/patches/server/0125-End-crystal-explosion-options.patch @@ -53,10 +53,10 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9110920bbcc32fa3cf67ea92030fa1b4101e44f4..6f18225b00fa2b6c46265de0caa761695e3aeaee 100644 +index 8cab49bd3c087afddeec1c90e03ca8df51c7d04c..7ffe7d46a8c7956bad8c0135c61bec3560060488 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -460,6 +460,43 @@ public class PurpurWorldConfig { +@@ -462,6 +462,43 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 92% rename from patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 141bf603a..d1667f73d 100644 --- a/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 714223f131cb4ece988ffacbfc90bb9d7d143636..3cc6db1e0a657468282caaba0d9dccea } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6f18225b00fa2b6c46265de0caa761695e3aeaee..9d44e091645ab76f8b085ff94388788f1ea42b77 100644 +index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583949b4f69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1001,6 +1001,7 @@ public class PurpurWorldConfig { +@@ -1003,6 +1003,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 6f18225b00fa2b6c46265de0caa761695e3aeaee..9d44e091645ab76f8b085ff94388788f private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -1019,6 +1020,7 @@ public class PurpurWorldConfig { +@@ -1021,6 +1022,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index 6f18225b00fa2b6c46265de0caa761695e3aeaee..9d44e091645ab76f8b085ff94388788f } public boolean endermanRidable = false; -@@ -2301,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2303,6 +2305,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 6f18225b00fa2b6c46265de0caa761695e3aeaee..9d44e091645ab76f8b085ff94388788f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2321,6 +2324,7 @@ public class PurpurWorldConfig { +@@ -2323,6 +2326,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0126-Dont-run-with-scissors.patch b/patches/server/0127-Dont-run-with-scissors.patch similarity index 97% rename from patches/server/0126-Dont-run-with-scissors.patch rename to patches/server/0127-Dont-run-with-scissors.patch index 8fde1b96c..d7350f738 100644 --- a/patches/server/0126-Dont-run-with-scissors.patch +++ b/patches/server/0127-Dont-run-with-scissors.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Dont run with scissors! inspired by https://modrinth.com/mod/dont-run-with-scissors diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index aba962f4e706f2698f3729a304816965d788d7e3..e81820761689801c3ca267c500818ff0f48bb858 100644 +index 46cc4aabf1fb349d1ecead78c0041b9de8cde99d..29c567fc3a7e4b30b670eeda2fd28cc55e57e451 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1610,6 +1610,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -149,10 +149,10 @@ index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9d44e091645ab76f8b085ff94388788f1ea42b77..9f5fd26c46daa685cca8382c5f1d410493c0cac6 100644 +index 084298bf0c45f22e7d0ebe0ee15b8583949b4f69..018a87f5435fa47b617a1df319450e3e0802df00 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -192,6 +192,10 @@ public class PurpurWorldConfig { +@@ -194,6 +194,10 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -163,7 +163,7 @@ index 9d44e091645ab76f8b085ff94388788f1ea42b77..9f5fd26c46daa685cca8382c5f1d4104 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -229,6 +233,10 @@ public class PurpurWorldConfig { +@@ -231,6 +235,10 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0127-One-Punch-Man.patch b/patches/server/0128-One-Punch-Man.patch similarity index 94% rename from patches/server/0127-One-Punch-Man.patch rename to patches/server/0128-One-Punch-Man.patch index ce14a1592..98ed598f2 100644 --- a/patches/server/0127-One-Punch-Man.patch +++ b/patches/server/0128-One-Punch-Man.patch @@ -35,10 +35,10 @@ index b07d0fc6cbcf209f5c69f4b43011d3f7182aa16c..fd50a55934d4bb98ad4a1b0d0f6339cd float f1 = amount; final float originalAmount = f1; // Paper - revert to vanilla #hurt - OBFHELPER boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f5fd26c46daa685cca8382c5f1d410493c0cac6..d866d35196055ff4581ee77c6996818ec1e5f977 100644 +index 018a87f5435fa47b617a1df319450e3e0802df00..bed992248d7ab9753c661ae0e0ac3041609361bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -339,6 +339,7 @@ public class PurpurWorldConfig { +@@ -341,6 +341,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index 9f5fd26c46daa685cca8382c5f1d410493c0cac6..d866d35196055ff4581ee77c6996818e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -355,6 +356,7 @@ public class PurpurWorldConfig { +@@ -357,6 +358,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/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 96% rename from patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index d6ff70eab..9766f381b 100644 --- a/patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff // Paper end - PlayerLaunchProjectileEvent 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 d866d35196055ff4581ee77c6996818ec1e5f977..7c283940d0127eb3800938164c4c20d957a6644d 100644 +index bed992248d7ab9753c661ae0e0ac3041609361bd..7417fcbc7bf1b9da029e674564e2923a3ea3ab62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -196,6 +196,10 @@ public class PurpurWorldConfig { +@@ -198,6 +198,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index d866d35196055ff4581ee77c6996818ec1e5f977..7c283940d0127eb3800938164c4c20d9 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -237,6 +241,10 @@ public class PurpurWorldConfig { +@@ -239,6 +243,10 @@ public class PurpurWorldConfig { ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater); ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 88% rename from patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch index 448e8f68f..4eb24471d 100644 --- a/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 883e5095498badab26c7bcf51d78bbc20de644d4..5c922cc17f7390f3565848de53cdec4d1547b95d 100644 +index c653e8a917b060dd63357541970caf5d8771d66b..b68b3145656b65d1f270abb36f704d55d04d74c2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1530,7 +1530,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -18,10 +18,10 @@ index 883e5095498badab26c7bcf51d78bbc20de644d4..5c922cc17f7390f3565848de53cdec4d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c283940d0127eb3800938164c4c20d957a6644d..13aa8212f010540129b8db25c528c0ac89ab7f9c 100644 +index 7417fcbc7bf1b9da029e674564e2923a3ea3ab62..4eaaa65b907ac6747f5299c5e4979bae6e8b9d06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -348,6 +348,7 @@ public class PurpurWorldConfig { +@@ -350,6 +350,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 7c283940d0127eb3800938164c4c20d957a6644d..13aa8212f010540129b8db25c528c0ac private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -365,6 +366,7 @@ public class PurpurWorldConfig { +@@ -367,6 +368,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/0130-Add-back-player-spawned-endermite-API.patch b/patches/server/0131-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0130-Add-back-player-spawned-endermite-API.patch rename to patches/server/0131-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 94% rename from patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch index 22ab9c950..240a62d6e 100644 --- a/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 21b2709f96b49c77807c9054843505a4fd0155f0..61602040352fe2eacd646ec3dc6728ea } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13aa8212f010540129b8db25c528c0ac89ab7f9c..3f98f85fe5e4a44a8d0ad9900ced62075cfc0ae5 100644 +index 4eaaa65b907ac6747f5299c5e4979bae6e8b9d06..fadcd9822e4a19b4e0e4884805ec3ee793318e05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1052,6 +1052,8 @@ public class PurpurWorldConfig { +@@ -1054,6 +1054,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 13aa8212f010540129b8db25c528c0ac89ab7f9c..3f98f85fe5e4a44a8d0ad9900ced6207 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1061,12 +1063,18 @@ public class PurpurWorldConfig { +@@ -1063,12 +1065,18 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 93% rename from patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 17012fb4e..819e17c6c 100644 --- a/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index 61602040352fe2eacd646ec3dc6728ea733d4ca2..a68f63b73785e7db68127151aca5138d } 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 3f98f85fe5e4a44a8d0ad9900ced62075cfc0ae5..126c4d3653b75c3aeccf46608ff32a07a2702add 100644 +index fadcd9822e4a19b4e0e4884805ec3ee793318e05..8eb86d2ae656f28bb0976218c53af40b14e0dbdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1054,6 +1054,8 @@ public class PurpurWorldConfig { +@@ -1056,6 +1056,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 3f98f85fe5e4a44a8d0ad9900ced62075cfc0ae5..126c4d3653b75c3aeccf46608ff32a07 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1075,6 +1077,8 @@ public class PurpurWorldConfig { +@@ -1077,6 +1079,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/0133-Tick-fluids-config.patch b/patches/server/0134-Tick-fluids-config.patch similarity index 94% rename from patches/server/0133-Tick-fluids-config.patch rename to patches/server/0134-Tick-fluids-config.patch index 4323cc2f7..cd2548b0a 100644 --- a/patches/server/0133-Tick-fluids-config.patch +++ b/patches/server/0134-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 126c4d3653b75c3aeccf46608ff32a07a2702add..a3e30ce28e2255711101724dbf7bcafcea3a3e57 100644 +index 8eb86d2ae656f28bb0976218c53af40b14e0dbdd..167edac3a00fc097b55ac2e6b8e43b47d2593891 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 { +@@ -132,6 +132,7 @@ public class PurpurWorldConfig { public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; @@ -47,7 +47,7 @@ index 126c4d3653b75c3aeccf46608ff32a07a2702add..a3e30ce28e2255711101724dbf7bcafc public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -151,6 +152,7 @@ public class PurpurWorldConfig { +@@ -153,6 +154,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/0134-Config-to-disable-Llama-caravans.patch b/patches/server/0135-Config-to-disable-Llama-caravans.patch similarity index 94% rename from patches/server/0134-Config-to-disable-Llama-caravans.patch rename to patches/server/0135-Config-to-disable-Llama-caravans.patch index 06255e633..ef35019fd 100644 --- a/patches/server/0134-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0135-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab 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 a3e30ce28e2255711101724dbf7bcafcea3a3e57..49172ba9126c728a4495f8c8b151c4b62cc9d0d2 100644 +index 167edac3a00fc097b55ac2e6b8e43b47d2593891..46a52af0755263bba845fee1e251423efbc7d2ae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1411,6 +1411,7 @@ public class PurpurWorldConfig { +@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index a3e30ce28e2255711101724dbf7bcafcea3a3e57..49172ba9126c728a4495f8c8b151c4b6 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1430,6 +1431,7 @@ public class PurpurWorldConfig { +@@ -1432,6 +1433,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/0135-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0136-Config-to-make-Creepers-explode-on-death.patch similarity index 94% rename from patches/server/0135-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0136-Config-to-make-Creepers-explode-on-death.patch index 60e756c4e..e454ba052 100644 --- a/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0136-Config-to-make-Creepers-explode-on-death.patch @@ -52,10 +52,10 @@ index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb63894 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 49172ba9126c728a4495f8c8b151c4b62cc9d0d2..b820fae29b891ffbde87eed8166802e7187f7131 100644 +index 46a52af0755263bba845fee1e251423efbc7d2ae..b4d5bf7483366df8515ecd7dbb27415ba8325b45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -898,6 +898,7 @@ public class PurpurWorldConfig { +@@ -900,6 +900,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -63,7 +63,7 @@ index 49172ba9126c728a4495f8c8b151c4b62cc9d0d2..b820fae29b891ffbde87eed8166802e7 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -913,6 +914,7 @@ public class PurpurWorldConfig { +@@ -915,6 +916,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/0136-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0137-Configurable-ravager-griefable-blocks-list.patch similarity index 95% rename from patches/server/0136-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0137-Configurable-ravager-griefable-blocks-list.patch index 2c58e97a8..d34493766 100644 --- a/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0137-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b820fae29b891ffbde87eed8166802e7187f7131..297edd2b0cf792713d41a7323f2cfd4d680482ed 100644 +index b4d5bf7483366df8515ecd7dbb27415ba8325b45..34011e65a7bcb8e6a57cdb8776293389ea662b39 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1806,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1808,6 +1808,7 @@ public class PurpurWorldConfig { public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index b820fae29b891ffbde87eed8166802e7187f7131..297edd2b0cf792713d41a7323f2cfd4d private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1819,6 +1820,23 @@ public class PurpurWorldConfig { +@@ -1821,6 +1822,23 @@ public class PurpurWorldConfig { ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0137-Sneak-to-bulk-process-composter.patch b/patches/server/0138-Sneak-to-bulk-process-composter.patch similarity index 97% rename from patches/server/0137-Sneak-to-bulk-process-composter.patch rename to patches/server/0138-Sneak-to-bulk-process-composter.patch index eab7d94ce..0f8467e47 100644 --- a/patches/server/0137-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0138-Sneak-to-bulk-process-composter.patch @@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { 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 297edd2b0cf792713d41a7323f2cfd4d680482ed..17093e3c696dc0f05735ed3514c37af9968083e2 100644 +index 34011e65a7bcb8e6a57cdb8776293389ea662b39..d1f5a8e74af76ee10c70598a45ff7b7aeab5139f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -475,6 +475,11 @@ public class PurpurWorldConfig { +@@ -477,6 +477,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0138-Config-for-skipping-night.patch b/patches/server/0139-Config-for-skipping-night.patch similarity index 92% rename from patches/server/0138-Config-for-skipping-night.patch rename to patches/server/0139-Config-for-skipping-night.patch index 9c68f7139..a7ad06b22 100644 --- a/patches/server/0138-Config-for-skipping-night.patch +++ b/patches/server/0139-Config-for-skipping-night.patch @@ -18,10 +18,10 @@ index ce5da7fc2d94a4b54e2a33de1e3ac629e4ed80bc..0d690ba8f752cc95812da2cad5b7c297 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 17093e3c696dc0f05735ed3514c37af9968083e2..fe46a714e5eaf260c39803b9e644f62a5f211dd2 100644 +index d1f5a8e74af76ee10c70598a45ff7b7aeab5139f..9db6f638cf9d8f41dcbe956108c02081b4380c6c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -351,6 +351,7 @@ public class PurpurWorldConfig { +@@ -353,6 +353,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 17093e3c696dc0f05735ed3514c37af9968083e2..fe46a714e5eaf260c39803b9e644f62a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -369,6 +370,7 @@ public class PurpurWorldConfig { +@@ -371,6 +372,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/0139-Add-config-for-villager-trading.patch b/patches/server/0140-Add-config-for-villager-trading.patch similarity index 93% rename from patches/server/0139-Add-config-for-villager-trading.patch rename to patches/server/0140-Add-config-for-villager-trading.patch index bb4f3fbcc..ae99005c3 100644 --- a/patches/server/0139-Add-config-for-villager-trading.patch +++ b/patches/server/0140-Add-config-for-villager-trading.patch @@ -32,10 +32,10 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247 return InteractionResult.sidedSuccess(this.level().isClientSide); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe46a714e5eaf260c39803b9e644f62a5f211dd2..9bf0c00ab7ad5c112250d908fd2fc32b7d955cde 100644 +index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aaefcaddfd6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2260,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2262,6 +2262,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index fe46a714e5eaf260c39803b9e644f62a5f211dd2..9bf0c00ab7ad5c112250d908fd2fc32b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2279,6 +2280,7 @@ public class PurpurWorldConfig { +@@ -2281,6 +2282,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); @@ -51,7 +51,7 @@ index fe46a714e5eaf260c39803b9e644f62a5f211dd2..9bf0c00ab7ad5c112250d908fd2fc32b } public boolean vindicatorRidable = false; -@@ -2311,6 +2313,7 @@ public class PurpurWorldConfig { +@@ -2313,6 +2315,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index fe46a714e5eaf260c39803b9e644f62a5f211dd2..9bf0c00ab7ad5c112250d908fd2fc32b private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2325,6 +2328,7 @@ public class PurpurWorldConfig { +@@ -2327,6 +2330,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/0140-Drowning-Settings.patch b/patches/server/0141-Drowning-Settings.patch similarity index 93% rename from patches/server/0140-Drowning-Settings.patch rename to patches/server/0141-Drowning-Settings.patch index 192dac695..ff4b29f68 100644 --- a/patches/server/0140-Drowning-Settings.patch +++ b/patches/server/0141-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 13c3f64cc1740a2f9f726e32eaf60989bcf9eb2a..3993769068556926eb30e32d90204ceb4287119d 100644 +index d1a00b9881f56d4c1abae4d3a5759dafbb07b864..f8342a0254be24dd74846734977a19e349b58b11 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3482,7 +3482,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -40,10 +40,10 @@ index fd50a55934d4bb98ad4a1b0d0f6339cdd98b4e03..d076f7f42e98ca240c169e1c165097bf } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9bf0c00ab7ad5c112250d908fd2fc32b7d955cde..140dd4ebdb18fee2e5ab13ca1ff37bc3101e5a0e 100644 +index fad95eb77677ff644a3dcf76dcf02aaefcaddfd6..d54bb97b4402cfa6fc8a1af58693dc37d73101d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -167,6 +167,15 @@ public class PurpurWorldConfig { +@@ -169,6 +169,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0141-Break-individual-slabs-when-sneaking.patch b/patches/server/0142-Break-individual-slabs-when-sneaking.patch similarity index 95% rename from patches/server/0141-Break-individual-slabs-when-sneaking.patch rename to patches/server/0142-Break-individual-slabs-when-sneaking.patch index b0c5aa9b2..e21e7cdeb 100644 --- a/patches/server/0141-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0142-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 140dd4ebdb18fee2e5ab13ca1ff37bc3101e5a0e..575b2fe79c5d6ca5c19ee3026abf7ce4618c98dc 100644 +index d54bb97b4402cfa6fc8a1af58693dc37d73101d1..2e52cee2fb2c4e0d01e47d1cc485a72e027f0dd2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -596,6 +596,11 @@ public class PurpurWorldConfig { +@@ -598,6 +598,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0142-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 94% rename from patches/server/0142-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch index bf9b9ed8f..cfacda790 100644 --- a/patches/server/0142-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index e7bfce0534c7ef3a1480a1082ae8514caf78778b..6511b8c737a57fbc72122dd04e2b5449 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 575b2fe79c5d6ca5c19ee3026abf7ce4618c98dc..92b722c01699f5889da25b7e2ac31862b6df956f 100644 +index 2e52cee2fb2c4e0d01e47d1cc485a72e027f0dd2..b5abcab534811be6dde85b41bbfc9a6dc09c9d3b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -561,6 +561,13 @@ public class PurpurWorldConfig { +@@ -563,6 +563,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0143-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 96% rename from patches/server/0143-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch index 73a84faff..119a28a0c 100644 --- a/patches/server/0143-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,7 +17,7 @@ index 7180d65afee6216a0bc6ff2dc7888f64b9b6c22d..c0383771b08e1d89dfa4996b979248da 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 92b722c01699f5889da25b7e2ac31862b6df956f..f72e3c436911acc9b91f61e0ef4cc36c0dc0cb54 100644 +index b5abcab534811be6dde85b41bbfc9a6dc09c9d3b..38fa2e38d3b83a95c0d8b9cd1cd37df9127dd1f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -103,6 +103,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0144-Option-to-make-doors-require-redstone.patch b/patches/server/0145-Option-to-make-doors-require-redstone.patch similarity index 97% rename from patches/server/0144-Option-to-make-doors-require-redstone.patch rename to patches/server/0145-Option-to-make-doors-require-redstone.patch index cf302c572..227a1dcce 100644 --- a/patches/server/0144-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0145-Option-to-make-doors-require-redstone.patch @@ -82,10 +82,10 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f72e3c436911acc9b91f61e0ef4cc36c0dc0cb54..146e2b193703f065dc42968f91ca84a6025ed7b5 100644 +index 38fa2e38d3b83a95c0d8b9cd1cd37df9127dd1f8..7e3ba83828654d33603869ea9fce1473ab87cc4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -500,6 +500,16 @@ public class PurpurWorldConfig { +@@ -502,6 +502,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0145-Config-to-allow-unsafe-enchants.patch b/patches/server/0146-Config-to-allow-unsafe-enchants.patch similarity index 100% rename from patches/server/0145-Config-to-allow-unsafe-enchants.patch rename to patches/server/0146-Config-to-allow-unsafe-enchants.patch diff --git a/patches/server/0146-Configurable-sponge-absorption.patch b/patches/server/0147-Configurable-sponge-absorption.patch similarity index 93% rename from patches/server/0146-Configurable-sponge-absorption.patch rename to patches/server/0147-Configurable-sponge-absorption.patch index a33064c8d..8820d6a57 100644 --- a/patches/server/0146-Configurable-sponge-absorption.patch +++ b/patches/server/0147-Configurable-sponge-absorption.patch @@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06 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 146e2b193703f065dc42968f91ca84a6025ed7b5..5bae9a1553b81a5a1afb0dbef30725e2ecfe088d 100644 +index 7e3ba83828654d33603869ea9fce1473ab87cc4a..7f492cd27bd3e4031aef82bb0c20dfcc2a433dfc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -625,6 +625,13 @@ public class PurpurWorldConfig { +@@ -627,6 +627,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0147-Projectile-offset-config.patch b/patches/server/0148-Projectile-offset-config.patch similarity index 98% rename from patches/server/0147-Projectile-offset-config.patch rename to patches/server/0148-Projectile-offset-config.patch index 2c20434e3..75a6a8080 100644 --- a/patches/server/0147-Projectile-offset-config.patch +++ b/patches/server/0148-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580 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 5bae9a1553b81a5a1afb0dbef30725e2ecfe088d..75067fbba5ae696640302158b0e83bf77dd9e59d 100644 +index 7f492cd27bd3e4031aef82bb0c20dfcc2a433dfc..98847a1b630faf901eed10e5e7143d8af4f66533 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -450,6 +450,23 @@ public class PurpurWorldConfig { +@@ -452,6 +452,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0148-Config-for-powered-rail-activation-distance.patch b/patches/server/0149-Config-for-powered-rail-activation-distance.patch similarity index 91% rename from patches/server/0148-Config-for-powered-rail-activation-distance.patch rename to patches/server/0149-Config-for-powered-rail-activation-distance.patch index 08d97e1a3..ac67390f2 100644 --- a/patches/server/0148-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0149-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } 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 75067fbba5ae696640302158b0e83bf77dd9e59d..9cf6098cd7ab85090c279b0737336f515e9645bf 100644 +index 98847a1b630faf901eed10e5e7143d8af4f66533..ef748ba2004601399fc47239e2fe093d89491c4f 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 { +@@ -613,6 +613,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0149-Piglin-portal-spawn-modifier.patch b/patches/server/0150-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/server/0149-Piglin-portal-spawn-modifier.patch rename to patches/server/0150-Piglin-portal-spawn-modifier.patch index 798d80e88..088d7c9c9 100644 --- a/patches/server/0149-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0150-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index e170176497b833e9addbdc652edcc074e598d26a..c3f37df133250e1a948f3b58d432fbee pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9cf6098cd7ab85090c279b0737336f515e9645bf..8e4f9132e04e43c7ae9b9ca11191f24c678920ce 100644 +index ef748ba2004601399fc47239e2fe093d89491c4f..99a0b3d9f0ca86112bdfd727a72a2facbf60b3da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1738,6 +1738,7 @@ public class PurpurWorldConfig { +@@ -1740,6 +1740,7 @@ public class PurpurWorldConfig { public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 9cf6098cd7ab85090c279b0737336f515e9645bf..8e4f9132e04e43c7ae9b9ca11191f24c private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1751,6 +1752,7 @@ public class PurpurWorldConfig { +@@ -1753,6 +1754,7 @@ public class PurpurWorldConfig { piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0150-Config-to-change-max-number-of-bees.patch b/patches/server/0151-Config-to-change-max-number-of-bees.patch similarity index 100% rename from patches/server/0150-Config-to-change-max-number-of-bees.patch rename to patches/server/0151-Config-to-change-max-number-of-bees.patch diff --git a/patches/server/0151-Config-for-wither-explosion-radius.patch b/patches/server/0152-Config-for-wither-explosion-radius.patch similarity index 92% rename from patches/server/0151-Config-for-wither-explosion-radius.patch rename to patches/server/0152-Config-for-wither-explosion-radius.patch index bd5a778d4..72550a2b9 100644 --- a/patches/server/0151-Config-for-wither-explosion-radius.patch +++ b/patches/server/0152-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index e472df057d087fe46bd40b798c050ed6e38a283c..999453409c19abf7f5b5c2dc39969985 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e4f9132e04e43c7ae9b9ca11191f24c678920ce..b0c40b8c47d3fff4c1c6ab5903a062995cead9c7 100644 +index 99a0b3d9f0ca86112bdfd727a72a2facbf60b3da..a38c503ba822dee75720d021c17c4a7651bac2c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2435,6 +2435,7 @@ public class PurpurWorldConfig { +@@ -2437,6 +2437,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 8e4f9132e04e43c7ae9b9ca11191f24c678920ce..b0c40b8c47d3fff4c1c6ab5903a06299 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2456,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2458,6 +2459,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/0152-Gamemode-extra-permissions.patch b/patches/server/0153-Gamemode-extra-permissions.patch similarity index 100% rename from patches/server/0152-Gamemode-extra-permissions.patch rename to patches/server/0153-Gamemode-extra-permissions.patch diff --git a/patches/server/0153-Configurable-piston-push-limit.patch b/patches/server/0154-Configurable-piston-push-limit.patch similarity index 94% rename from patches/server/0153-Configurable-piston-push-limit.patch rename to patches/server/0154-Configurable-piston-push-limit.patch index ad3463f71..8226de57c 100644 --- a/patches/server/0153-Configurable-piston-push-limit.patch +++ b/patches/server/0154-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b0c40b8c47d3fff4c1c6ab5903a062995cead9c7..9204429711e23019808f2e619aa6d5fa2c738dc5 100644 +index a38c503ba822dee75720d021c17c4a7651bac2c7..1ceec45b0ba2bdb20817ec4a57b58023751dc90f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -606,6 +606,11 @@ public class PurpurWorldConfig { +@@ -608,6 +608,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0154-Configurable-broadcast-settings.patch b/patches/server/0155-Configurable-broadcast-settings.patch similarity index 97% rename from patches/server/0154-Configurable-broadcast-settings.patch rename to patches/server/0155-Configurable-broadcast-settings.patch index 4461e4e7d..1389a180d 100644 --- a/patches/server/0154-Configurable-broadcast-settings.patch +++ b/patches/server/0155-Configurable-broadcast-settings.patch @@ -17,7 +17,7 @@ index b286b157bba78021efa18f01bc91b067b0bd5874..fc87e3cfff1221a6cbaf3463ce972870 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 5c922cc17f7390f3565848de53cdec4d1547b95d..92658ce4e5df51416b31ae55c8a6db6fe6e734a2 100644 +index b68b3145656b65d1f270abb36f704d55d04d74c2..147cc53d0c0e226fc78a63e4ff83feac48f2b749 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1082,6 +1082,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple diff --git a/patches/server/0155-Configurable-mob-blindness.patch b/patches/server/0156-Configurable-mob-blindness.patch similarity index 93% rename from patches/server/0155-Configurable-mob-blindness.patch rename to patches/server/0156-Configurable-mob-blindness.patch index 307b267cd..a9c5dc55e 100644 --- a/patches/server/0155-Configurable-mob-blindness.patch +++ b/patches/server/0156-Configurable-mob-blindness.patch @@ -28,10 +28,10 @@ index d076f7f42e98ca240c169e1c165097bf4c3f46e8..d213e299d7bdba4161bd1a2fee9b1042 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9204429711e23019808f2e619aa6d5fa2c738dc5..c31823497efcabed036951e0daa6e3da64716c14 100644 +index 1ceec45b0ba2bdb20817ec4a57b58023751dc90f..126476ae43733e86b0825ea3fef2620954a10720 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -134,6 +134,7 @@ public class PurpurWorldConfig { +@@ -135,6 +135,7 @@ public class PurpurWorldConfig { public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; @@ -39,7 +39,7 @@ index 9204429711e23019808f2e619aa6d5fa2c738dc5..c31823497efcabed036951e0daa6e3da public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -155,6 +156,7 @@ public class PurpurWorldConfig { +@@ -157,6 +158,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/0156-Hide-hidden-players-from-entity-selector.patch b/patches/server/0157-Hide-hidden-players-from-entity-selector.patch similarity index 100% rename from patches/server/0156-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0157-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 92% rename from patches/server/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch index 4e1c3f0b9..5168d551d 100644 --- a/patches/server/0157-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 902191001a7302872ff661564fb6389457abaa9c..1769c1d31bb68904be426e1069266cec // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c31823497efcabed036951e0daa6e3da64716c14..7af41d5c345861970d25b43b094834b16217c002 100644 +index 126476ae43733e86b0825ea3fef2620954a10720..b760d2ecda916e9797422d2be96dd433d2bc711b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -975,6 +975,7 @@ public class PurpurWorldConfig { +@@ -977,6 +977,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index c31823497efcabed036951e0daa6e3da64716c14..7af41d5c345861970d25b43b094834b1 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -991,6 +992,7 @@ public class PurpurWorldConfig { +@@ -993,6 +994,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/0158-Iron-golem-calm-anger-options.patch b/patches/server/0159-Iron-golem-calm-anger-options.patch similarity index 96% rename from patches/server/0158-Iron-golem-calm-anger-options.patch rename to patches/server/0159-Iron-golem-calm-anger-options.patch index 1e150f2bc..68bea615a 100644 --- a/patches/server/0158-Iron-golem-calm-anger-options.patch +++ b/patches/server/0159-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 0cf985cac3279c0cb6255f02b76a5012027cae99..446a2795aa8f2ddf472f8b379534978f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7af41d5c345861970d25b43b094834b16217c002..1e07d5e1e85517c6d7918f2cd3b2bed62f58fbfd 100644 +index b760d2ecda916e9797422d2be96dd433d2bc711b..8217119bee2fc38567dd583b3c2c6c15d2a67893 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1465,6 +1465,8 @@ public class PurpurWorldConfig { +@@ -1467,6 +1467,8 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 7af41d5c345861970d25b43b094834b16217c002..1e07d5e1e85517c6d7918f2cd3b2bed6 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1478,6 +1480,8 @@ public class PurpurWorldConfig { +@@ -1480,6 +1482,8 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0159-Breedable-parrots.patch b/patches/server/0160-Breedable-parrots.patch similarity index 94% rename from patches/server/0159-Breedable-parrots.patch rename to patches/server/0160-Breedable-parrots.patch index 2242fb923..c02b0cc79 100644 --- a/patches/server/0159-Breedable-parrots.patch +++ b/patches/server/0160-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 884fc114ef70d49fd0d64fcea46fb277950962a1..4fa32a6406e3158369064d39160e4850 @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e07d5e1e85517c6d7918f2cd3b2bed62f58fbfd..ac0fb308e320b48c0b992e9988dcdb28f71ac41b 100644 +index 8217119bee2fc38567dd583b3c2c6c15d2a67893..43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5 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 { +@@ -1645,6 +1645,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 1e07d5e1e85517c6d7918f2cd3b2bed62f58fbfd..ac0fb308e320b48c0b992e9988dcdb28 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1656,6 +1657,7 @@ public class PurpurWorldConfig { +@@ -1658,6 +1659,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0160-Configurable-powered-rail-boost-modifier.patch b/patches/server/0161-Configurable-powered-rail-boost-modifier.patch similarity index 91% rename from patches/server/0160-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0161-Configurable-powered-rail-boost-modifier.patch index deadeaa1f..67212022c 100644 --- a/patches/server/0160-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0161-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index 9ad276a73cba04edbe48f828031a15727d768a5b..337bd2011c471361653c317004f8380c Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac0fb308e320b48c0b992e9988dcdb28f71ac41b..68a38529cde72e0008f48abf01d007cda8ee4749 100644 +index 43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5..d275a24a3017335f147f08b4f71cdcd71435d4bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -270,6 +270,7 @@ public class PurpurWorldConfig { +@@ -272,6 +272,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index ac0fb308e320b48c0b992e9988dcdb28f71ac41b..68a38529cde72e0008f48abf01d007cd private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -322,6 +323,7 @@ public class PurpurWorldConfig { +@@ -324,6 +325,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/0161-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch similarity index 92% rename from patches/server/0161-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch index 1759e693a..b4eae6ad9 100644 --- a/patches/server/0161-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 33c1b2b387e7412a001841d1bcbb3966c188c1a3..40cf2eb78b02adc15e44189021005f14 float f3 = f + f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68a38529cde72e0008f48abf01d007cda8ee4749..14206628ace10ef23ed45a779a8e48ac067a826e 100644 +index d275a24a3017335f147f08b4f71cdcd71435d4bd..dfb38ec06614a8ef5a5a3b26f61bd68aeaec9519 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -367,6 +367,7 @@ public class PurpurWorldConfig { +@@ -369,6 +369,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index 68a38529cde72e0008f48abf01d007cda8ee4749..14206628ace10ef23ed45a779a8e48ac private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -386,6 +387,7 @@ public class PurpurWorldConfig { +@@ -388,6 +389,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/0162-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch similarity index 92% rename from patches/server/0162-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch index ac02a4614..003d4cd02 100644 --- a/patches/server/0162-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642 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 14206628ace10ef23ed45a779a8e48ac067a826e..f801e4e307c37f61ce22a5128e64775722c35eee 100644 +index dfb38ec06614a8ef5a5a3b26f61bd68aeaec9519..957307bb75b7dbc3b47bb24b8f4c720ecb9f004c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -533,6 +533,11 @@ public class PurpurWorldConfig { +@@ -535,6 +535,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0163-Config-for-unverified-username-message.patch b/patches/server/0164-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0163-Config-for-unverified-username-message.patch rename to patches/server/0164-Config-for-unverified-username-message.patch diff --git a/patches/server/0164-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0165-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0164-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0165-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0165-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0166-Bee-can-work-when-raining-or-at-night.patch similarity index 94% rename from patches/server/0165-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0166-Bee-can-work-when-raining-or-at-night.patch index 511869c40..cb8d61ccd 100644 --- a/patches/server/0165-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0166-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index fb84af3b1709101fa572d11a1c27970a316f2eab..5e982bab268746a05b97f5b9f7142254 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f801e4e307c37f61ce22a5128e64775722c35eee..7a70b458ca900e518b24837b0315904021aaefe3 100644 +index 957307bb75b7dbc3b47bb24b8f4c720ecb9f004c..9ab97792c94db16dfff6606ec33fd1c4db83180a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -784,6 +784,8 @@ public class PurpurWorldConfig { +@@ -786,6 +786,8 @@ public class PurpurWorldConfig { public double beeScale = 1.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index f801e4e307c37f61ce22a5128e64775722c35eee..7a70b458ca900e518b24837b03159040 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -798,6 +800,8 @@ public class PurpurWorldConfig { +@@ -800,6 +802,8 @@ public class PurpurWorldConfig { beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0166-API-for-any-mob-to-burn-daylight.patch b/patches/server/0167-API-for-any-mob-to-burn-daylight.patch similarity index 99% rename from patches/server/0166-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0167-API-for-any-mob-to-burn-daylight.patch index f5a867db7..173c14200 100644 --- a/patches/server/0166-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0167-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e2190c3ca38d37042d43be3eedfca29f5bd5a061..9470540c9f7db168e3ba8671d7a1ceab26b8dda3 100644 +index f8342a0254be24dd74846734977a19e349b58b11..979d5942219830cadf756f7f7098b4e77662536f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -556,6 +556,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0167-Config-MobEffect-by-world.patch b/patches/server/0168-Config-MobEffect-by-world.patch similarity index 97% rename from patches/server/0167-Config-MobEffect-by-world.patch rename to patches/server/0168-Config-MobEffect-by-world.patch index d404381aa..99265fa2d 100644 --- a/patches/server/0167-Config-MobEffect-by-world.patch +++ b/patches/server/0168-Config-MobEffect-by-world.patch @@ -72,10 +72,10 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7a70b458ca900e518b24837b0315904021aaefe3..3d3edb700314ca2a368ad2b5e310d4aaa097c8cd 100644 +index 9ab97792c94db16dfff6606ec33fd1c4db83180a..370a9911b16d7b37ebd4269b114a51c65a3aaf4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -326,6 +326,21 @@ public class PurpurWorldConfig { +@@ -328,6 +328,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0168-Beacon-Activation-Range-Configurable.patch b/patches/server/0169-Beacon-Activation-Range-Configurable.patch similarity index 94% rename from patches/server/0168-Beacon-Activation-Range-Configurable.patch rename to patches/server/0169-Beacon-Activation-Range-Configurable.patch index 025ab9ebb..f53021126 100644 --- a/patches/server/0168-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0169-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 814e70f558d7a6186233da0ff86c94c95d390e09..d1fb77d83d48183a9a37dbeec7bb0fda } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d3edb700314ca2a368ad2b5e310d4aaa097c8cd..6ca213635f81bff18c568768d6a05909de8f7bf8 100644 +index 370a9911b16d7b37ebd4269b114a51c65a3aaf4b..acaa994f3678dde7e6febc6061a2c23974dc7f11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -500,6 +500,17 @@ public class PurpurWorldConfig { +@@ -502,6 +502,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0169-Make-lightning-rod-range-configurable.patch b/patches/server/0170-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0169-Make-lightning-rod-range-configurable.patch rename to patches/server/0170-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 95% rename from patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 0ffb6840a..dfadd0900 100644 --- a/patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -55,10 +55,10 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..b702b7270fae8fafc39588fbc39b4e00 public void eat(int food, float saturationModifier) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ca213635f81bff18c568768d6a05909de8f7bf8..60496afdae66f0644dddce5891ed4c2c05eab093 100644 +index acaa994f3678dde7e6febc6061a2c23974dc7f11..900d1e7f87327d869516a3feac2d47e07bf62ca7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -383,6 +383,8 @@ public class PurpurWorldConfig { +@@ -385,6 +385,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -67,7 +67,7 @@ index 6ca213635f81bff18c568768d6a05909de8f7bf8..60496afdae66f0644dddce5891ed4c2c private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -403,6 +405,8 @@ public class PurpurWorldConfig { +@@ -405,6 +407,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/0171-Allow-player-join-full-server-by-permission.patch b/patches/server/0172-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0171-Allow-player-join-full-server-by-permission.patch rename to patches/server/0172-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0172-Add-portal-permission-bypass.patch b/patches/server/0173-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0172-Add-portal-permission-bypass.patch rename to patches/server/0173-Add-portal-permission-bypass.patch diff --git a/patches/server/0173-Shulker-spawn-from-bullet-options.patch b/patches/server/0174-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0173-Shulker-spawn-from-bullet-options.patch rename to patches/server/0174-Shulker-spawn-from-bullet-options.patch index 07724bccf..39d287920 100644 --- a/patches/server/0173-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0174-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 0d04a0107bd1a8a2b9aeb4be55025cd554e8fb79..a050d76233e179a1456b83ccc02bb9a5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60496afdae66f0644dddce5891ed4c2c05eab093..bbdf167f158bfadeb3a940587495ea3538a49b13 100644 +index 900d1e7f87327d869516a3feac2d47e07bf62ca7..674699477cbe2f1aa491488bbb95d819ba665707 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2016,6 +2016,11 @@ public class PurpurWorldConfig { +@@ -2018,6 +2018,11 @@ public class PurpurWorldConfig { public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 60496afdae66f0644dddce5891ed4c2c05eab093..bbdf167f158bfadeb3a940587495ea35 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2028,6 +2033,11 @@ public class PurpurWorldConfig { +@@ -2030,6 +2035,11 @@ public class PurpurWorldConfig { shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0174-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0175-Eating-glow-berries-adds-glow-effect.patch similarity index 95% rename from patches/server/0174-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0175-Eating-glow-berries-adds-glow-effect.patch index 85d32d266..bbaa2bf7e 100644 --- a/patches/server/0174-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0175-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 4eef61323ba54f513e6f251ef7c804b2c91ff477..6b2235281dca67a80cb651e9f8e9bf25 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bbdf167f158bfadeb3a940587495ea3538a49b13..698c54f8ed3a398077a8dcc7b00d3c6c4d67e6e2 100644 +index 674699477cbe2f1aa491488bbb95d819ba665707..7ed6199800ae40e0f9af05e93e611ebb66c884e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -215,6 +215,7 @@ public class PurpurWorldConfig { +@@ -217,6 +217,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index bbdf167f158bfadeb3a940587495ea3538a49b13..698c54f8ed3a398077a8dcc7b00d3c6c private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -260,6 +261,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,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/0175-Option-to-make-drowned-break-doors.patch b/patches/server/0176-Option-to-make-drowned-break-doors.patch similarity index 93% rename from patches/server/0175-Option-to-make-drowned-break-doors.patch rename to patches/server/0176-Option-to-make-drowned-break-doors.patch index 65bf577ea..b1a2a802c 100644 --- a/patches/server/0175-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0176-Option-to-make-drowned-break-doors.patch @@ -26,10 +26,10 @@ index 370f1b76c002f7cecf596767db717da51b2990f8..994dee36ce3aad3a0ef6a06bcaf555bd @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 698c54f8ed3a398077a8dcc7b00d3c6c4d67e6e2..96dc19939587dfdaf65734e2b5280e32d03ff6db 100644 +index 7ed6199800ae40e0f9af05e93e611ebb66c884e0..9c93682cf57f7c90762775c564eabb6eadd25dc8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1104,6 +1104,7 @@ public class PurpurWorldConfig { +@@ -1106,6 +1106,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 698c54f8ed3a398077a8dcc7b00d3c6c4d67e6e2..96dc19939587dfdaf65734e2b5280e32 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1120,6 +1121,7 @@ public class PurpurWorldConfig { +@@ -1122,6 +1123,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/0176-Configurable-hunger-starvation-damage.patch b/patches/server/0177-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0176-Configurable-hunger-starvation-damage.patch rename to patches/server/0177-Configurable-hunger-starvation-damage.patch index 33c28adde..8fbb2f869 100644 --- a/patches/server/0176-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0177-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index b702b7270fae8fafc39588fbc39b4e0014809047..842a908051bdf6c5f0ef8ce3ac84a7ce this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96dc19939587dfdaf65734e2b5280e32d03ff6db..d2f9afca144bd15ca5c0edfa271897537ddf4adc 100644 +index 9c93682cf57f7c90762775c564eabb6eadd25dc8..58319128d7a22bc97bdb0cfbcfb8b9c4bb23a0db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2724,4 +2724,9 @@ public class PurpurWorldConfig { +@@ -2726,4 +2726,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/0177-Enhance-SysoutCatcher.patch b/patches/server/0178-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0177-Enhance-SysoutCatcher.patch rename to patches/server/0178-Enhance-SysoutCatcher.patch diff --git a/patches/server/0178-Add-uptime-command.patch b/patches/server/0179-Add-uptime-command.patch similarity index 98% rename from patches/server/0178-Add-uptime-command.patch rename to patches/server/0179-Add-uptime-command.patch index 25428b056..683d15e71 100644 --- a/patches/server/0178-Add-uptime-command.patch +++ b/patches/server/0179-Add-uptime-command.patch @@ -17,7 +17,7 @@ index c7b7cc0d9ce589b5a0600e9b8c46b2e5d7a520bd..9f86a0397c0b64cb31dad245e2dc84d0 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5300e75cb10c74188fdee49c65e56255652bc82a..8e8cc0b294c89cc9ebabee42d6a6d9ced4f9cd7d 100644 +index f21395bfb83a80dd0b3197870ef162cb5669cbf9..78921a485917012bbebe7d6ac05fb975449f8338 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -304,6 +304,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop()).forEach(key -> { -@@ -262,6 +263,7 @@ public class PurpurWorldConfig { +@@ -264,6 +265,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/0184-Big-dripleaf-tilt-delay.patch b/patches/server/0185-Big-dripleaf-tilt-delay.patch similarity index 94% rename from patches/server/0184-Big-dripleaf-tilt-delay.patch rename to patches/server/0185-Big-dripleaf-tilt-delay.patch index d135fe55a..dd09e49dc 100644 --- a/patches/server/0184-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0185-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 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 a8982914d3fabc9473b8f05e757dd900a765fcd9..a236624e689ee6528f2dd6758dba3cfe56428dc6 100644 +index a1ae495db2a382a3e546cc7ccbe203d08562aeb5..5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -814,6 +814,22 @@ public class PurpurWorldConfig { +@@ -816,6 +816,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0185-Player-ridable-in-water-option.patch b/patches/server/0186-Player-ridable-in-water-option.patch similarity index 91% rename from patches/server/0185-Player-ridable-in-water-option.patch rename to patches/server/0186-Player-ridable-in-water-option.patch index 25bd54907..c27f2bfd0 100644 --- a/patches/server/0185-Player-ridable-in-water-option.patch +++ b/patches/server/0186-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 09e1faae9c22c1062e3de5257c82b2d156e65b4f..05ed7bfd75a1e30d74b12a068303a786 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 a236624e689ee6528f2dd6758dba3cfe56428dc6..9321cba5f280e30fdcf7399349b67bef94eb4f9b 100644 +index 5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea..3f94e8f226322710af2d169d5cb55afb0bc0926c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -389,6 +389,7 @@ public class PurpurWorldConfig { +@@ -391,6 +391,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index a236624e689ee6528f2dd6758dba3cfe56428dc6..9321cba5f280e30fdcf7399349b67bef private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -411,6 +412,7 @@ public class PurpurWorldConfig { +@@ -413,6 +414,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/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 92% rename from patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 9b71218c2..052088461 100644 --- a/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index a68f63b73785e7db68127151aca5138da4d88654..aafecf7d199bbcaa09403ed15bf199f7 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 9321cba5f280e30fdcf7399349b67bef94eb4f9b..990934797fa7aaa5303e4b8a2de3b146350d7517 100644 +index 3f94e8f226322710af2d169d5cb55afb0bc0926c..52771830dfc03dd48467d57bcdb07ee3b85ca9be 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1479,6 +1479,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1481,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 9321cba5f280e30fdcf7399349b67bef94eb4f9b..990934797fa7aaa5303e4b8a2de3b146 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1502,6 +1503,7 @@ public class PurpurWorldConfig { +@@ -1504,6 +1505,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/0187-Add-compass-command.patch b/patches/server/0188-Add-compass-command.patch similarity index 97% rename from patches/server/0187-Add-compass-command.patch rename to patches/server/0188-Add-compass-command.patch index 65bdb17e8..8adc3fb35 100644 --- a/patches/server/0187-Add-compass-command.patch +++ b/patches/server/0188-Add-compass-command.patch @@ -17,7 +17,7 @@ index 9f86a0397c0b64cb31dad245e2dc84d0fadd42d7..a66e2d78722847dec4e9d4aba8e6968e if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 481e535716946ca1f5ffbe2024af22ceeff25dca..c510bfcd9a49deb290fb8bc59e9eca51f719bb17 100644 +index 1e93cc377acc2fc48d76d705dcf2732295bdd1b8..0f2bb388d8d3cf48c2cd95e501696cd09f930d07 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -304,6 +304,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -89,10 +89,10 @@ index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7 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 990934797fa7aaa5303e4b8a2de3b146350d7517..9cd70ca9dfbb0ea6d241e40bc8efb39c04f27d35 100644 +index 52771830dfc03dd48467d57bcdb07ee3b85ca9be..577aa009781c05e836feb7dbecb7b7aac44168e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -217,6 +217,7 @@ public class PurpurWorldConfig { +@@ -219,6 +219,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 990934797fa7aaa5303e4b8a2de3b146350d7517..9cd70ca9dfbb0ea6d241e40bc8efb39c private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -264,6 +265,7 @@ public class PurpurWorldConfig { +@@ -266,6 +267,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/0188-Toggle-for-kinetic-damage.patch b/patches/server/0189-Toggle-for-kinetic-damage.patch similarity index 93% rename from patches/server/0188-Toggle-for-kinetic-damage.patch rename to patches/server/0189-Toggle-for-kinetic-damage.patch index ea336370d..6ff06ccaf 100644 --- a/patches/server/0188-Toggle-for-kinetic-damage.patch +++ b/patches/server/0189-Toggle-for-kinetic-damage.patch @@ -17,10 +17,10 @@ index 936491872bc1d0c260daff8c62223a21d8ab254d..7ff96396797d08d15fe6346678f17203 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9cd70ca9dfbb0ea6d241e40bc8efb39c04f27d35..fa4566561f4a4a67f42b3d617b6c1891bc51296f 100644 +index 577aa009781c05e836feb7dbecb7b7aac44168e3..aef08a0513932723edd38a029a4aef81b1f8dd5b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -184,11 +184,13 @@ public class PurpurWorldConfig { +@@ -186,11 +186,13 @@ public class PurpurWorldConfig { public double elytraDamageMultiplyBySpeed = 0; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0189-Add-Option-for-disable-observer-clocks.patch b/patches/server/0190-Add-Option-for-disable-observer-clocks.patch similarity index 93% rename from patches/server/0189-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0190-Add-Option-for-disable-observer-clocks.patch index 147e6a671..6f35811d4 100644 --- a/patches/server/0189-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0190-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa4566561f4a4a67f42b3d617b6c1891bc51296f..34b6a9d8da2cd06d2267fe6e1f3c4057a6269f67 100644 +index aef08a0513932723edd38a029a4aef81b1f8dd5b..54de76044ba0b9fad821382165af89453ea28019 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -364,6 +364,11 @@ public class PurpurWorldConfig { +@@ -366,6 +366,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch similarity index 93% rename from patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch index d68665f03..68ea97023 100644 --- a/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 3c4cff3f095cdf2dd74df7bf4bb8f3d5600b342d..9bb75b49ea2d0bd8aafbe537b65f86eb return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34b6a9d8da2cd06d2267fe6e1f3c4057a6269f67..bc20b8fae0bd6696a308b22b664aaba26cb4e037 100644 +index 54de76044ba0b9fad821382165af89453ea28019..425f9ae808fa5abbce51fe39c026b5108765ed34 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2982,6 +2982,8 @@ public class PurpurWorldConfig { +@@ -2984,6 +2984,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 34b6a9d8da2cd06d2267fe6e1f3c4057a6269f67..bc20b8fae0bd6696a308b22b664aaba2 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2998,6 +3000,8 @@ public class PurpurWorldConfig { +@@ -3000,6 +3002,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/0191-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 94% rename from patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch index 890344f19..518ce25ed 100644 --- a/patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc20b8fae0bd6696a308b22b664aaba26cb4e037..84041f353d3c969095c98d9e234a7d76ec77f325 100644 +index 425f9ae808fa5abbce51fe39c026b5108765ed34..5223da9ee6ec5f80246e2e1aa0319ab793fd1da6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1000,9 +1000,13 @@ public class PurpurWorldConfig { +@@ -1002,9 +1002,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch similarity index 91% rename from patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch index c8561d9df..979b0567f 100644 --- a/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index cf4161c57c3d8e6e93bce9e20490cd0893e8e0ca..3492cfcb6f0764f54caa1a5658801cd7 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84041f353d3c969095c98d9e234a7d76ec77f325..a72b334ad842e9c0789c6a2dc0d4ab1cca0c3545 100644 +index 5223da9ee6ec5f80246e2e1aa0319ab793fd1da6..36ebc5ea1c84d470372e9a8596084c0b9960efb7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2817,6 +2817,7 @@ public class PurpurWorldConfig { +@@ -2819,6 +2819,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 84041f353d3c969095c98d9e234a7d76ec77f325..a72b334ad842e9c0789c6a2dc0d4ab1c private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2839,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2841,6 +2842,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/0193-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch similarity index 92% rename from patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch index 929faa613..253c2e8d1 100644 --- a/patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a72b334ad842e9c0789c6a2dc0d4ab1cca0c3545..09b753d35c412e102a0d9557326e10f99293a784 100644 +index 36ebc5ea1c84d470372e9a8596084c0b9960efb7..d54414dcb95fe37f76c5abb8ee992e06d81c451b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -841,6 +841,11 @@ public class PurpurWorldConfig { +@@ -843,6 +843,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 92% rename from patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch index 63d102f6b..92b48a568 100644 --- a/patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,10 +18,10 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09b753d35c412e102a0d9557326e10f99293a784..223c94383b315d933be94decc2ceb4646cb2d0e4 100644 +index d54414dcb95fe37f76c5abb8ee992e06d81c451b..027ae0f906363eaa86102c2f23eb03f2c6bcd3aa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -399,6 +399,7 @@ public class PurpurWorldConfig { +@@ -401,6 +401,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index 09b753d35c412e102a0d9557326e10f99293a784..223c94383b315d933be94decc2ceb464 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -422,6 +423,7 @@ public class PurpurWorldConfig { +@@ -424,6 +425,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/0195-Conduit-behavior-configuration.patch b/patches/server/0196-Conduit-behavior-configuration.patch similarity index 98% rename from patches/server/0195-Conduit-behavior-configuration.patch rename to patches/server/0196-Conduit-behavior-configuration.patch index d258f81dc..338b4eb0d 100644 --- a/patches/server/0195-Conduit-behavior-configuration.patch +++ b/patches/server/0196-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 223c94383b315d933be94decc2ceb4646cb2d0e4..9716dc8bddb7063cdfbcbcf6d677026306b27f28 100644 +index 027ae0f906363eaa86102c2f23eb03f2c6bcd3aa..106b6563e6ab69d729b8cd20ae1122cc86137afb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3051,4 +3051,27 @@ public class PurpurWorldConfig { +@@ -3053,4 +3053,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0196-Cauldron-fill-chances.patch b/patches/server/0197-Cauldron-fill-chances.patch similarity index 96% rename from patches/server/0196-Cauldron-fill-chances.patch rename to patches/server/0197-Cauldron-fill-chances.patch index 65c361553..fe21e0825 100644 --- a/patches/server/0196-Cauldron-fill-chances.patch +++ b/patches/server/0197-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9716dc8bddb7063cdfbcbcf6d677026306b27f28..06496178c618c1204ccb6edb71296bf6f08cb686 100644 +index 106b6563e6ab69d729b8cd20ae1122cc86137afb..791a2a91be714844d699e0c6cd15f71c31201c59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3074,4 +3074,15 @@ public class PurpurWorldConfig { +@@ -3076,4 +3076,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 92% rename from patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch index bc4a2f338..c026d6ead 100644 --- a/patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06496178c618c1204ccb6edb71296bf6f08cb686..b5b235ab952c15951cc46db8d517c36f09f08d1e 100644 +index 791a2a91be714844d699e0c6cd15f71c31201c59..a8fa9bd998f24bdb420225b426addce5b005f8ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -140,6 +140,7 @@ public class PurpurWorldConfig { +@@ -141,6 +141,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,7 +29,7 @@ index 06496178c618c1204ccb6edb71296bf6f08cb686..b5b235ab952c15951cc46db8d517c36f private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -162,6 +163,7 @@ public class PurpurWorldConfig { +@@ -164,6 +165,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/0198-Shulker-change-color-with-dye.patch b/patches/server/0199-Shulker-change-color-with-dye.patch similarity index 93% rename from patches/server/0198-Shulker-change-color-with-dye.patch rename to patches/server/0199-Shulker-change-color-with-dye.patch index 10c9c2779..3262819aa 100644 --- a/patches/server/0198-Shulker-change-color-with-dye.patch +++ b/patches/server/0199-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index 6f1deb4d26c851ca99fbadf1eb5b7847eadbf25b..099d6ce14d9c2fa0af1e9bf96c09cd3d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b5b235ab952c15951cc46db8d517c36f09f08d1e..56b631c9689f797b9ae36be89b5e81515700022a 100644 +index a8fa9bd998f24bdb420225b426addce5b005f8ad..82f64caa2a68db0229fa5489c1bfdbda932ef0f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2343,6 +2343,7 @@ public class PurpurWorldConfig { +@@ -2345,6 +2345,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -40,7 +40,7 @@ index b5b235ab952c15951cc46db8d517c36f09f08d1e..56b631c9689f797b9ae36be89b5e8151 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2360,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2362,6 +2363,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/0199-Extended-OfflinePlayer-API.patch b/patches/server/0200-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0199-Extended-OfflinePlayer-API.patch rename to patches/server/0200-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0200-Added-the-ability-to-add-combustible-items.patch b/patches/server/0201-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0200-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0201-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 93% rename from patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index ed4614a36..eac5a2c5f 100644 --- a/patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,10 +25,10 @@ index 9b38adcdabb22c42611aad8d1ed226542d34ac34..40d2472cebbde4a435d1b65ec8062c18 // 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 56b631c9689f797b9ae36be89b5e81515700022a..6803f7ec1717cd1e71b53fdbab2251c8bcdee9d9 100644 +index 82f64caa2a68db0229fa5489c1bfdbda932ef0f8..5e7ae30b6238b744e31719ddf0d7c2df3785b901 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,8 @@ public class PurpurWorldConfig { +@@ -142,6 +142,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 56b631c9689f797b9ae36be89b5e81515700022a..6803f7ec1717cd1e71b53fdbab2251c8 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -164,6 +166,8 @@ public class PurpurWorldConfig { +@@ -166,6 +168,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/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 94% rename from patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 8fd602aee..bd068566f 100644 --- a/patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 223259e7a09ada681b6181c898f6857888594f85..7d58a95f7ae8983b466b275f4f82597d .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6803f7ec1717cd1e71b53fdbab2251c8bcdee9d9..0f923e71fe419f3986d56f9e4b63c99f7edf6dd9 100644 +index 5e7ae30b6238b744e31719ddf0d7c2df3785b901..42961c10933dc7f1f56aa33a865ff260addb79d7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -801,6 +801,11 @@ public class PurpurWorldConfig { +@@ -803,6 +803,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 6803f7ec1717cd1e71b53fdbab2251c8bcdee9d9..0f923e71fe419f3986d56f9e4b63c99f public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -938,6 +943,11 @@ public class PurpurWorldConfig { +@@ -940,6 +945,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch similarity index 93% rename from patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch index 305b39ae9..bc4453a29 100644 --- a/patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index fe734df8b4521101c3e55c042957a531b3bdf945..7c06b284a6cc74c0b31f8921706c7796 + // 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 e81820761689801c3ca267c500818ff0f48bb858..efb72ae3ce609117258dfc9f09b53add4ef0fd8e 100644 +index 29c567fc3a7e4b30b670eeda2fd28cc55e57e451..c0c854296bc920cf79d710ad4896a895ff45c058 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2004,6 +2004,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -48,10 +48,10 @@ index e81820761689801c3ca267c500818ff0f48bb858..efb72ae3ce609117258dfc9f09b53add 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 0f923e71fe419f3986d56f9e4b63c99f7edf6dd9..1a3c950e938ecfe69662cc071111ebfd31c6e3eb 100644 +index 42961c10933dc7f1f56aa33a865ff260addb79d7..31b014854c6e6bf64e8ccfc0dab5677850ad746e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -406,6 +406,7 @@ public class PurpurWorldConfig { +@@ -408,6 +408,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 0f923e71fe419f3986d56f9e4b63c99f7edf6dd9..1a3c950e938ecfe69662cc071111ebfd private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -430,6 +431,7 @@ public class PurpurWorldConfig { +@@ -432,6 +433,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/0204-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch index c418b0d65..4c33069cc 100644 --- a/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index c7bc9e0152419aa44fd2a4dcf2ce1f0b972e432e..ffc29ab9105b20aba15a0ce12d5ec7fa 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 1a3c950e938ecfe69662cc071111ebfd31c6e3eb..adac3e234cd3995a8f8d26f233ebf420184f2f19 100644 +index 31b014854c6e6bf64e8ccfc0dab5677850ad746e..291e9bf78caf6b19ff800b520ccdd25bf86c0ba0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1381,6 +1381,7 @@ public class PurpurWorldConfig { +@@ -1383,6 +1383,7 @@ public class PurpurWorldConfig { public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 1a3c950e938ecfe69662cc071111ebfd31c6e3eb..adac3e234cd3995a8f8d26f233ebf420 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1396,6 +1397,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1399,7 @@ public class PurpurWorldConfig { dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch similarity index 96% rename from patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch index 4fed8b9b0..95cbd4e1f 100644 --- a/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch @@ -61,10 +61,10 @@ index 2b1b1243fa1e60985ab6fcd0dda9f71db7e3352c..a9820dda0ddf1863080f4169d70eff9c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index adac3e234cd3995a8f8d26f233ebf420184f2f19..2c4bdd6a72f9957a2df923db7088951c95c628ed 100644 +index 291e9bf78caf6b19ff800b520ccdd25bf86c0ba0..15f6ec51cbfe4aae5523749f71d10361fdf0744d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1326,7 +1326,14 @@ public class PurpurWorldConfig { +@@ -1328,7 +1328,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index adac3e234cd3995a8f8d26f233ebf420184f2f19..2c4bdd6a72f9957a2df923db7088951c cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1340,6 +1347,8 @@ public class PurpurWorldConfig { +@@ -1342,6 +1349,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/0206-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 92% rename from patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch index ddcab654f..2956e1a8b 100644 --- a/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 77fc9ca8d4a72cdb7db51297a13808f46e497126..884d9074da27a1a8157e0e6d66936375 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 2c4bdd6a72f9957a2df923db7088951c95c628ed..329b2f9ae61df6a69daabb74b2db88b26bb61db5 100644 +index 15f6ec51cbfe4aae5523749f71d10361fdf0744d..218fd4a054f70f33f4e3f6d65f43815edfe8c7ae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -820,6 +820,7 @@ public class PurpurWorldConfig { +@@ -822,6 +822,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 2c4bdd6a72f9957a2df923db7088951c95c628ed..329b2f9ae61df6a69daabb74b2db88b2 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -830,6 +831,7 @@ public class PurpurWorldConfig { +@@ -832,6 +833,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0207-Halloween-options-and-optimizations.patch b/patches/server/0208-Halloween-options-and-optimizations.patch similarity index 97% rename from patches/server/0207-Halloween-options-and-optimizations.patch rename to patches/server/0208-Halloween-options-and-optimizations.patch index 60b206494..b8cbeff82 100644 --- a/patches/server/0207-Halloween-options-and-optimizations.patch +++ b/patches/server/0208-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 1910e22e9ee2d18e86c9f8e3dd06199e73599bf6..29cbb9ae004f657ff3aa6db379716472 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 329b2f9ae61df6a69daabb74b2db88b26bb61db5..390d90b1e02fd96ef02ac902653b52afba25d2fc 100644 +index 218fd4a054f70f33f4e3f6d65f43815edfe8c7ae..e506e6f2a09b2c2f5d9bdbdbd7634e0fdc399d64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1746,6 +1746,13 @@ public class PurpurWorldConfig { +@@ -1748,6 +1748,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0208-Config-for-grindstones.patch b/patches/server/0209-Config-for-grindstones.patch similarity index 100% rename from patches/server/0208-Config-for-grindstones.patch rename to patches/server/0209-Config-for-grindstones.patch diff --git a/patches/server/0209-UPnP-Port-Forwarding.patch b/patches/server/0210-UPnP-Port-Forwarding.patch similarity index 100% rename from patches/server/0209-UPnP-Port-Forwarding.patch rename to patches/server/0210-UPnP-Port-Forwarding.patch diff --git a/patches/server/0210-Campfire-option-for-lit-when-placed.patch b/patches/server/0211-Campfire-option-for-lit-when-placed.patch similarity index 94% rename from patches/server/0210-Campfire-option-for-lit-when-placed.patch rename to patches/server/0211-Campfire-option-for-lit-when-placed.patch index 928a495b8..ad34eb450 100644 --- a/patches/server/0210-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0211-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 7f6058f4def83867971121751acd51c398583651..5a49daf7b6bf9e0ec3d50494287a620d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 390d90b1e02fd96ef02ac902653b52afba25d2fc..c032dc798d02066982127ffa4a83c7506abebd1a 100644 +index e506e6f2a09b2c2f5d9bdbdbd7634e0fdc399d64..34ac5e517a50e166df1da796f2a2dcc7326f5d79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -863,6 +863,11 @@ public class PurpurWorldConfig { +@@ -865,6 +865,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 96% rename from patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch index 71245624e..fff27b685 100644 --- a/patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a 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 c032dc798d02066982127ffa4a83c7506abebd1a..d2747f66aeaa032e58a4f09f5ab36fc44e42e4a8 100644 +index 34ac5e517a50e166df1da796f2a2dcc7326f5d79..d595c6eb65ef7da06c015684ea54525f128ae5c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -226,6 +226,9 @@ public class PurpurWorldConfig { +@@ -228,6 +228,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index c032dc798d02066982127ffa4a83c7506abebd1a..d2747f66aeaa032e58a4f09f5ab36fc4 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -274,6 +277,9 @@ public class PurpurWorldConfig { +@@ -276,6 +279,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/0212-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch similarity index 92% rename from patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch index 6a2f424c4..380342ee3 100644 --- a/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 9bb75b49ea2d0bd8aafbe537b65f86eb04f6cfe2..612907fe87e46b5b13ed80635f203fa9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2747f66aeaa032e58a4f09f5ab36fc44e42e4a8..2d93f7feb8432c3fa7fee91f89eeb907046e7346 100644 +index d595c6eb65ef7da06c015684ea54525f128ae5c6..9eb7872725366fc759fc59509ebae65e7dfb303f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3048,6 +3048,7 @@ public class PurpurWorldConfig { +@@ -3050,6 +3050,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index d2747f66aeaa032e58a4f09f5ab36fc44e42e4a8..2d93f7feb8432c3fa7fee91f89eeb907 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3066,6 +3067,7 @@ public class PurpurWorldConfig { +@@ -3068,6 +3069,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/0213-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 97% rename from patches/server/0213-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch index 60664cd9c..dd384bace 100644 --- a/patches/server/0213-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -135,10 +135,10 @@ index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2d93f7feb8432c3fa7fee91f89eeb907046e7346..abe5832720e034959bc4efcc308828bd2e12decc 100644 +index 9eb7872725366fc759fc59509ebae65e7dfb303f..5cb9f035f2de41d486f456bf3003019eb64725c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -132,6 +132,8 @@ public class PurpurWorldConfig { +@@ -133,6 +133,8 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; @@ -147,7 +147,7 @@ index 2d93f7feb8432c3fa7fee91f89eeb907046e7346..abe5832720e034959bc4efcc308828bd public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -156,6 +158,14 @@ public class PurpurWorldConfig { +@@ -158,6 +160,14 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0214-Signs-allow-color-codes.patch b/patches/server/0215-Signs-allow-color-codes.patch similarity index 96% rename from patches/server/0214-Signs-allow-color-codes.patch rename to patches/server/0215-Signs-allow-color-codes.patch index 653b4e550..3065ccd03 100644 --- a/patches/server/0214-Signs-allow-color-codes.patch +++ b/patches/server/0215-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c510bfcd9a49deb290fb8bc59e9eca51f719bb17..06dab25d9e42f057637f71b663908a33448f4a22 100644 +index 0f2bb388d8d3cf48c2cd95e501696cd09f930d07..9326e785c2e6524e172f6385c1310d44a40f0af8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1708,6 +1708,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -84,10 +84,10 @@ index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c150 public ClientboundBlockEntityDataPacket getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index abe5832720e034959bc4efcc308828bd2e12decc..e1f5f82d227a495a43bb833ce5c555fa45bd7fd9 100644 +index 5cb9f035f2de41d486f456bf3003019eb64725c7..e83dd08d7a74773c4069e076416cbbdc1135e9fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1036,6 +1036,11 @@ public class PurpurWorldConfig { +@@ -1038,6 +1038,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0216-Mobs-always-drop-experience.patch b/patches/server/0217-Mobs-always-drop-experience.patch similarity index 93% rename from patches/server/0216-Mobs-always-drop-experience.patch rename to patches/server/0217-Mobs-always-drop-experience.patch index 6631f4810..375a62cec 100644 --- a/patches/server/0216-Mobs-always-drop-experience.patch +++ b/patches/server/0217-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba..d342752271c76b447bb8cde50d574072 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf329125c7 100644 +index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99827a9a2d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1123,6 +1123,7 @@ public class PurpurWorldConfig { +@@ -1125,6 +1125,7 @@ public class PurpurWorldConfig { public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1168,7 +1168,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void axolotlSettings() { axolotlRidable = getBoolean("mobs.axolotl.ridable", axolotlRidable); axolotlControllable = getBoolean("mobs.axolotl.controllable", axolotlControllable); -@@ -1130,6 +1131,7 @@ public class PurpurWorldConfig { +@@ -1132,6 +1133,7 @@ public class PurpurWorldConfig { axolotlScale = Mth.clamp(getDouble("mobs.axolotl.attributes.scale", axolotlScale), 0.0625D, 16.0D); axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks); axolotlTakeDamageFromWater = getBoolean("mobs.axolotl.takes-damage-from-water", axolotlTakeDamageFromWater); @@ -1176,7 +1176,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean batRidable = false; -@@ -1146,6 +1148,7 @@ public class PurpurWorldConfig { +@@ -1148,6 +1150,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1184,7 +1184,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1166,6 +1169,7 @@ public class PurpurWorldConfig { +@@ -1168,6 +1171,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1192,7 +1192,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean beeRidable = false; -@@ -1178,6 +1182,7 @@ public class PurpurWorldConfig { +@@ -1180,6 +1184,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1200,7 +1200,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1194,6 +1199,7 @@ public class PurpurWorldConfig { +@@ -1196,6 +1201,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); @@ -1208,7 +1208,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean blazeRidable = false; -@@ -1203,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1205,6 +1211,7 @@ public class PurpurWorldConfig { public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; public boolean blazeTakeDamageFromWater = true; @@ -1216,7 +1216,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1216,6 +1223,7 @@ public class PurpurWorldConfig { +@@ -1218,6 +1225,7 @@ public class PurpurWorldConfig { blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1224,7 +1224,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean boggedRidable = false; -@@ -1261,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1271,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1232,7 +1232,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1282,6 +1291,7 @@ public class PurpurWorldConfig { +@@ -1284,6 +1293,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1240,7 +1240,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean caveSpiderRidable = false; -@@ -1290,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1302,7 @@ public class PurpurWorldConfig { public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1248,7 +1248,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1302,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1304,6 +1315,7 @@ public class PurpurWorldConfig { caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1256,7 +1256,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean chickenRidable = false; -@@ -1312,6 +1324,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1326,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1264,7 +1264,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1326,6 +1339,7 @@ public class PurpurWorldConfig { +@@ -1328,6 +1341,7 @@ 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); @@ -1272,7 +1272,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean codRidable = false; -@@ -1333,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1349,7 @@ public class PurpurWorldConfig { public double codMaxHealth = 3.0D; public double codScale = 1.0D; public boolean codTakeDamageFromWater = false; @@ -1280,7 +1280,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1344,6 +1359,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1361,7 @@ public class PurpurWorldConfig { codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1288,7 +1288,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean cowRidable = false; -@@ -1356,6 +1372,7 @@ public class PurpurWorldConfig { +@@ -1358,6 +1374,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1296,7 +1296,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1377,6 +1394,7 @@ public class PurpurWorldConfig { +@@ -1379,6 +1396,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); @@ -1304,7 +1304,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean creeperRidable = false; -@@ -1390,6 +1408,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1410,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1312,7 +1312,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1407,6 +1426,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1428,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); @@ -1320,7 +1320,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean dolphinRidable = false; -@@ -1419,6 +1439,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1441,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1328,7 +1328,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1435,6 +1456,7 @@ public class PurpurWorldConfig { +@@ -1437,6 +1458,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); @@ -1336,7 +1336,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean donkeyRidableInWater = false; -@@ -1446,6 +1468,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1470,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1344,7 +1344,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1463,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1465,6 +1488,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); @@ -1352,7 +1352,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean drownedRidable = false; -@@ -1476,6 +1500,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1502,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1360,7 +1360,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1493,6 +1518,7 @@ public class PurpurWorldConfig { +@@ -1495,6 +1520,7 @@ 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); @@ -1368,7 +1368,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean elderGuardianRidable = false; -@@ -1500,6 +1526,7 @@ public class PurpurWorldConfig { +@@ -1502,6 +1528,7 @@ public class PurpurWorldConfig { public double elderGuardianMaxHealth = 80.0D; public double elderGuardianScale = 1.0D; public boolean elderGuardianTakeDamageFromWater = false; @@ -1376,7 +1376,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1511,6 +1538,7 @@ public class PurpurWorldConfig { +@@ -1513,6 +1540,7 @@ public class PurpurWorldConfig { elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1384,7 +1384,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean enderDragonRidable = false; -@@ -1557,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1587,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1392,7 +1392,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1581,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1612,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); @@ -1400,7 +1400,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean endermiteRidable = false; -@@ -1589,6 +1619,7 @@ public class PurpurWorldConfig { +@@ -1591,6 +1621,7 @@ public class PurpurWorldConfig { public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1408,7 +1408,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1601,6 +1632,7 @@ public class PurpurWorldConfig { +@@ -1603,6 +1634,7 @@ public class PurpurWorldConfig { endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1416,7 +1416,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean evokerRidable = false; -@@ -1610,6 +1642,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1644,7 @@ public class PurpurWorldConfig { public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1424,7 +1424,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1623,6 +1656,7 @@ public class PurpurWorldConfig { +@@ -1625,6 +1658,7 @@ public class PurpurWorldConfig { evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1432,7 +1432,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean foxRidable = false; -@@ -1634,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1636,6 +1670,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1440,7 +1440,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1649,6 +1684,7 @@ public class PurpurWorldConfig { +@@ -1651,6 +1686,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); @@ -1448,7 +1448,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean frogRidable = false; -@@ -1671,6 +1707,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1709,7 @@ public class PurpurWorldConfig { public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; public boolean ghastTakeDamageFromWater = false; @@ -1456,7 +1456,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1684,6 +1721,7 @@ public class PurpurWorldConfig { +@@ -1686,6 +1723,7 @@ public class PurpurWorldConfig { ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1464,7 +1464,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean giantRidable = false; -@@ -1698,6 +1736,7 @@ public class PurpurWorldConfig { +@@ -1700,6 +1738,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1472,7 +1472,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1720,6 +1759,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1761,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); @@ -1480,7 +1480,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean glowSquidRidable = false; -@@ -1728,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1730,6 +1770,7 @@ public class PurpurWorldConfig { public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1488,7 +1488,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1735,6 +1776,7 @@ public class PurpurWorldConfig { +@@ -1737,6 +1778,7 @@ public class PurpurWorldConfig { glowSquidScale = Mth.clamp(getDouble("mobs.glow_squid.attributes.scale", glowSquidScale), 0.0625D, 16.0D); glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); @@ -1496,7 +1496,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean goatRidable = false; -@@ -1744,6 +1786,7 @@ public class PurpurWorldConfig { +@@ -1746,6 +1788,7 @@ public class PurpurWorldConfig { public double goatScale = 1.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1504,7 +1504,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1752,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1754,6 +1797,7 @@ public class PurpurWorldConfig { goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1512,7 +1512,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean guardianRidable = false; -@@ -1759,6 +1803,7 @@ public class PurpurWorldConfig { +@@ -1761,6 +1805,7 @@ public class PurpurWorldConfig { public double guardianMaxHealth = 30.0D; public double guardianScale = 1.0D; public boolean guardianTakeDamageFromWater = false; @@ -1520,7 +1520,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1770,6 +1815,7 @@ public class PurpurWorldConfig { +@@ -1772,6 +1817,7 @@ public class PurpurWorldConfig { guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1528,7 +1528,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean forceHalloweenSeason = false; -@@ -1786,6 +1832,7 @@ public class PurpurWorldConfig { +@@ -1788,6 +1834,7 @@ public class PurpurWorldConfig { public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1536,7 +1536,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1799,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1801,6 +1848,7 @@ public class PurpurWorldConfig { hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1544,7 +1544,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean horseRidableInWater = false; -@@ -1810,6 +1858,7 @@ public class PurpurWorldConfig { +@@ -1812,6 +1860,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1552,7 +1552,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1827,6 +1876,7 @@ public class PurpurWorldConfig { +@@ -1829,6 +1878,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); @@ -1560,7 +1560,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean huskRidable = false; -@@ -1839,6 +1889,7 @@ public class PurpurWorldConfig { +@@ -1841,6 +1891,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1568,7 +1568,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1855,6 +1906,7 @@ public class PurpurWorldConfig { +@@ -1857,6 +1908,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); @@ -1576,7 +1576,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean illusionerRidable = false; -@@ -1865,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1919,7 @@ public class PurpurWorldConfig { public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1584,7 +1584,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1883,6 +1936,7 @@ public class PurpurWorldConfig { +@@ -1885,6 +1938,7 @@ public class PurpurWorldConfig { illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1592,7 +1592,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean ironGolemRidable = false; -@@ -1894,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1896,6 +1950,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1600,7 +1600,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1909,6 +1964,7 @@ public class PurpurWorldConfig { +@@ -1911,6 +1966,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); @@ -1608,7 +1608,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean llamaRidable = false; -@@ -1923,6 +1979,7 @@ public class PurpurWorldConfig { +@@ -1925,6 +1981,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1616,7 +1616,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1943,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +2002,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); @@ -1624,7 +1624,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean magmaCubeRidable = false; -@@ -1953,6 +2011,7 @@ public class PurpurWorldConfig { +@@ -1955,6 +2013,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1632,7 +1632,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1967,6 +2026,7 @@ public class PurpurWorldConfig { +@@ -1969,6 +2028,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1640,7 +1640,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean mooshroomRidable = false; -@@ -1976,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2038,7 @@ public class PurpurWorldConfig { public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1648,7 +1648,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1989,6 +2050,7 @@ public class PurpurWorldConfig { +@@ -1991,6 +2052,7 @@ public class PurpurWorldConfig { mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1656,7 +1656,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean muleRidableInWater = false; -@@ -2000,6 +2062,7 @@ public class PurpurWorldConfig { +@@ -2002,6 +2064,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1664,7 +1664,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -2017,6 +2080,7 @@ public class PurpurWorldConfig { +@@ -2019,6 +2082,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); @@ -1672,7 +1672,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean ocelotRidable = false; -@@ -2026,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -2028,6 +2092,7 @@ public class PurpurWorldConfig { public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1680,7 +1680,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2039,6 +2104,7 @@ public class PurpurWorldConfig { +@@ -2041,6 +2106,7 @@ public class PurpurWorldConfig { ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1688,7 +1688,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean pandaRidable = false; -@@ -2048,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2050,6 +2116,7 @@ public class PurpurWorldConfig { public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1696,7 +1696,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -2061,6 +2128,7 @@ public class PurpurWorldConfig { +@@ -2063,6 +2130,7 @@ public class PurpurWorldConfig { pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1704,7 +1704,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean parrotRidable = false; -@@ -2071,6 +2139,7 @@ public class PurpurWorldConfig { +@@ -2073,6 +2141,7 @@ public class PurpurWorldConfig { public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1712,7 +1712,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2085,6 +2154,7 @@ public class PurpurWorldConfig { +@@ -2087,6 +2156,7 @@ public class PurpurWorldConfig { parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1720,7 +1720,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean phantomRidable = false; -@@ -2112,6 +2182,7 @@ public class PurpurWorldConfig { +@@ -2114,6 +2184,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1728,7 +1728,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2147,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2149,6 +2220,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); @@ -1736,7 +1736,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean pigRidable = false; -@@ -2157,6 +2229,7 @@ public class PurpurWorldConfig { +@@ -2159,6 +2231,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1744,7 +1744,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2171,6 +2244,7 @@ public class PurpurWorldConfig { +@@ -2173,6 +2246,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); @@ -1752,7 +1752,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean piglinRidable = false; -@@ -2181,6 +2255,7 @@ public class PurpurWorldConfig { +@@ -2183,6 +2257,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1760,7 +1760,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2195,6 +2270,7 @@ public class PurpurWorldConfig { +@@ -2197,6 +2272,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); @@ -1768,7 +1768,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean piglinBruteRidable = false; -@@ -2203,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2205,6 +2281,7 @@ public class PurpurWorldConfig { public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2215,6 +2292,7 @@ public class PurpurWorldConfig { +@@ -2217,6 +2294,7 @@ public class PurpurWorldConfig { piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean pillagerRidable = false; -@@ -2224,6 +2302,7 @@ public class PurpurWorldConfig { +@@ -2226,6 +2304,7 @@ public class PurpurWorldConfig { public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2237,6 +2316,7 @@ public class PurpurWorldConfig { +@@ -2239,6 +2318,7 @@ public class PurpurWorldConfig { pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1800,7 +1800,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean polarBearRidable = false; -@@ -2248,6 +2328,7 @@ public class PurpurWorldConfig { +@@ -2250,6 +2330,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1808,7 +1808,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2264,6 +2345,7 @@ public class PurpurWorldConfig { +@@ -2266,6 +2347,7 @@ 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); @@ -1816,7 +1816,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean pufferfishRidable = false; -@@ -2271,6 +2353,7 @@ public class PurpurWorldConfig { +@@ -2273,6 +2355,7 @@ public class PurpurWorldConfig { public double pufferfishMaxHealth = 3.0D; public double pufferfishScale = 1.0D; public boolean pufferfishTakeDamageFromWater = false; @@ -1824,7 +1824,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2282,6 +2365,7 @@ public class PurpurWorldConfig { +@@ -2284,6 +2367,7 @@ public class PurpurWorldConfig { pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1832,7 +1832,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean rabbitRidable = false; -@@ -2294,6 +2378,7 @@ public class PurpurWorldConfig { +@@ -2296,6 +2380,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1840,7 +1840,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2310,6 +2395,7 @@ public class PurpurWorldConfig { +@@ -2312,6 +2397,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); @@ -1848,7 +1848,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean ravagerRidable = false; -@@ -2320,6 +2406,7 @@ public class PurpurWorldConfig { +@@ -2322,6 +2408,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1856,7 +1856,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2350,6 +2437,7 @@ public class PurpurWorldConfig { +@@ -2352,6 +2439,7 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1864,7 +1864,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean salmonRidable = false; -@@ -2357,6 +2445,7 @@ public class PurpurWorldConfig { +@@ -2359,6 +2447,7 @@ public class PurpurWorldConfig { public double salmonMaxHealth = 3.0D; public double salmonScale = 1.0D; public boolean salmonTakeDamageFromWater = false; @@ -1872,7 +1872,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2368,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2370,6 +2459,7 @@ public class PurpurWorldConfig { salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1880,7 +1880,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean sheepRidable = false; -@@ -2378,6 +2468,7 @@ public class PurpurWorldConfig { +@@ -2380,6 +2470,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1888,7 +1888,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2392,6 +2483,7 @@ public class PurpurWorldConfig { +@@ -2394,6 +2485,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); @@ -1896,7 +1896,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean shulkerRidable = false; -@@ -2406,6 +2498,7 @@ public class PurpurWorldConfig { +@@ -2408,6 +2500,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1904,7 +1904,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2424,6 +2517,7 @@ public class PurpurWorldConfig { +@@ -2426,6 +2519,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); @@ -1912,7 +1912,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean silverfishRidable = false; -@@ -2435,6 +2529,7 @@ public class PurpurWorldConfig { +@@ -2437,6 +2531,7 @@ public class PurpurWorldConfig { public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1920,7 +1920,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2450,6 +2545,7 @@ public class PurpurWorldConfig { +@@ -2452,6 +2547,7 @@ public class PurpurWorldConfig { silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1928,7 +1928,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean skeletonRidable = false; -@@ -2458,6 +2554,7 @@ public class PurpurWorldConfig { +@@ -2460,6 +2556,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1936,7 +1936,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2470,6 +2567,7 @@ public class PurpurWorldConfig { +@@ -2472,6 +2569,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1944,7 +1944,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean skeletonHorseRidable = false; -@@ -2482,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2484,6 +2582,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1952,7 +1952,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2499,6 +2598,7 @@ public class PurpurWorldConfig { +@@ -2501,6 +2600,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); @@ -1960,7 +1960,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean slimeRidable = false; -@@ -2509,6 +2609,7 @@ public class PurpurWorldConfig { +@@ -2511,6 +2611,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1968,7 +1968,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2523,6 +2624,7 @@ public class PurpurWorldConfig { +@@ -2525,6 +2626,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1976,7 +1976,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean snowGolemRidable = false; -@@ -2538,6 +2640,7 @@ public class PurpurWorldConfig { +@@ -2540,6 +2642,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1984,7 +1984,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2557,6 +2660,7 @@ public class PurpurWorldConfig { +@@ -2559,6 +2662,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); @@ -1992,7 +1992,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean snifferRidable = false; -@@ -2582,6 +2686,7 @@ public class PurpurWorldConfig { +@@ -2584,6 +2688,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -2000,7 +2000,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2596,6 +2701,7 @@ public class PurpurWorldConfig { +@@ -2598,6 +2703,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); @@ -2008,7 +2008,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean spiderRidable = false; -@@ -2604,6 +2710,7 @@ public class PurpurWorldConfig { +@@ -2606,6 +2712,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; public boolean spiderTakeDamageFromWater = false; @@ -2016,7 +2016,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2616,6 +2723,7 @@ public class PurpurWorldConfig { +@@ -2618,6 +2725,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2024,7 +2024,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean strayRidable = false; -@@ -2624,6 +2732,7 @@ public class PurpurWorldConfig { +@@ -2626,6 +2734,7 @@ public class PurpurWorldConfig { public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; public boolean strayTakeDamageFromWater = false; @@ -2032,7 +2032,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2636,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2638,6 +2747,7 @@ public class PurpurWorldConfig { strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2040,7 +2040,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean striderRidable = false; -@@ -2646,6 +2756,7 @@ public class PurpurWorldConfig { +@@ -2648,6 +2758,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2048,7 +2048,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2660,6 +2771,7 @@ public class PurpurWorldConfig { +@@ -2662,6 +2773,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); @@ -2056,7 +2056,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean tadpoleRidable = false; -@@ -2682,6 +2794,7 @@ public class PurpurWorldConfig { +@@ -2684,6 +2796,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2064,7 +2064,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2701,6 +2814,7 @@ public class PurpurWorldConfig { +@@ -2703,6 +2816,7 @@ 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 e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean tropicalFishRidable = false; -@@ -2708,6 +2822,7 @@ public class PurpurWorldConfig { +@@ -2710,6 +2824,7 @@ public class PurpurWorldConfig { public double tropicalFishMaxHealth = 3.0D; public double tropicalFishScale = 1.0D; public boolean tropicalFishTakeDamageFromWater = false; @@ -2080,7 +2080,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2719,6 +2834,7 @@ public class PurpurWorldConfig { +@@ -2721,6 +2836,7 @@ public class PurpurWorldConfig { tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2088,7 +2088,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean turtleRidable = false; -@@ -2728,6 +2844,7 @@ public class PurpurWorldConfig { +@@ -2730,6 +2846,7 @@ public class PurpurWorldConfig { public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2096,7 +2096,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2741,6 +2858,7 @@ public class PurpurWorldConfig { +@@ -2743,6 +2860,7 @@ public class PurpurWorldConfig { turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2104,7 +2104,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean vexRidable = false; -@@ -2750,6 +2868,7 @@ public class PurpurWorldConfig { +@@ -2752,6 +2870,7 @@ public class PurpurWorldConfig { public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; public boolean vexTakeDamageFromWater = false; @@ -2112,7 +2112,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2763,6 +2882,7 @@ public class PurpurWorldConfig { +@@ -2765,6 +2884,7 @@ public class PurpurWorldConfig { vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2120,7 +2120,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean villagerRidable = false; -@@ -2779,6 +2899,7 @@ public class PurpurWorldConfig { +@@ -2781,6 +2901,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2128,7 +2128,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2799,6 +2920,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2922,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); @@ -2136,7 +2136,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean vindicatorRidable = false; -@@ -2808,6 +2930,7 @@ public class PurpurWorldConfig { +@@ -2810,6 +2932,7 @@ public class PurpurWorldConfig { public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2144,7 +2144,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2821,6 +2944,7 @@ public class PurpurWorldConfig { +@@ -2823,6 +2946,7 @@ public class PurpurWorldConfig { vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2152,7 +2152,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean wanderingTraderRidable = false; -@@ -2832,6 +2956,7 @@ public class PurpurWorldConfig { +@@ -2834,6 +2958,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2160,7 +2160,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2847,6 +2972,7 @@ public class PurpurWorldConfig { +@@ -2849,6 +2974,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); @@ -2168,7 +2168,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean wardenRidable = false; -@@ -2864,6 +2990,7 @@ public class PurpurWorldConfig { +@@ -2866,6 +2992,7 @@ public class PurpurWorldConfig { public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; public boolean witchTakeDamageFromWater = false; @@ -2176,7 +2176,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2876,6 +3003,7 @@ public class PurpurWorldConfig { +@@ -2878,6 +3005,7 @@ public class PurpurWorldConfig { witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2184,7 +2184,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean witherRidable = false; -@@ -2891,6 +3019,7 @@ public class PurpurWorldConfig { +@@ -2893,6 +3021,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2192,7 +2192,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2914,6 +3043,7 @@ public class PurpurWorldConfig { +@@ -2916,6 +3045,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); @@ -2200,7 +2200,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean witherSkeletonRidable = false; -@@ -2922,6 +3052,7 @@ public class PurpurWorldConfig { +@@ -2924,6 +3054,7 @@ public class PurpurWorldConfig { public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2208,7 +2208,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2934,6 +3065,7 @@ public class PurpurWorldConfig { +@@ -2936,6 +3067,7 @@ public class PurpurWorldConfig { witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2216,7 +2216,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean wolfRidable = false; -@@ -2946,6 +3078,7 @@ public class PurpurWorldConfig { +@@ -2948,6 +3080,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2224,7 +2224,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2966,6 +3099,7 @@ public class PurpurWorldConfig { +@@ -2968,6 +3101,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); @@ -2232,7 +2232,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean zoglinRidable = false; -@@ -2974,6 +3108,7 @@ public class PurpurWorldConfig { +@@ -2976,6 +3110,7 @@ public class PurpurWorldConfig { public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2240,7 +2240,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2986,6 +3121,7 @@ public class PurpurWorldConfig { +@@ -2988,6 +3123,7 @@ public class PurpurWorldConfig { zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2248,7 +2248,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean zombieRidable = false; -@@ -3000,6 +3136,7 @@ public class PurpurWorldConfig { +@@ -3002,6 +3138,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2256,7 +2256,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3018,6 +3155,7 @@ public class PurpurWorldConfig { +@@ -3020,6 +3157,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); @@ -2264,7 +2264,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean zombieHorseRidable = false; -@@ -3031,6 +3169,7 @@ public class PurpurWorldConfig { +@@ -3033,6 +3171,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2272,7 +2272,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -3049,6 +3188,7 @@ public class PurpurWorldConfig { +@@ -3051,6 +3190,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); @@ -2280,7 +2280,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean zombieVillagerRidable = false; -@@ -3064,6 +3204,7 @@ public class PurpurWorldConfig { +@@ -3066,6 +3206,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2288,7 +2288,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3083,6 +3224,7 @@ public class PurpurWorldConfig { +@@ -3085,6 +3226,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); @@ -2296,7 +2296,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf } public boolean zombifiedPiglinRidable = false; -@@ -3096,6 +3238,7 @@ public class PurpurWorldConfig { +@@ -3098,6 +3240,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2304,7 +2304,7 @@ index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3113,6 +3256,7 @@ public class PurpurWorldConfig { +@@ -3115,6 +3258,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/0217-Grindstone-API.patch b/patches/server/0218-Grindstone-API.patch similarity index 100% rename from patches/server/0217-Grindstone-API.patch rename to patches/server/0218-Grindstone-API.patch diff --git a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 162835f6c..1c9637b4c 100644 --- a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aca8a3d7c8b646746b4f54fdaf784acf329125c7..04efd2c306f453d53aa46b995008cebec70e6cd1 100644 +index 76c94c6332a447a95e91cd04f321af99827a9a2d..61121ec15d2ecb6cc46d4bcd07e35905dc67d827 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -543,6 +543,8 @@ public class PurpurWorldConfig { +@@ -545,6 +545,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index aca8a3d7c8b646746b4f54fdaf784acf329125c7..04efd2c306f453d53aa46b995008cebe private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -810,6 +812,8 @@ public class PurpurWorldConfig { +@@ -812,6 +814,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch index cac2760dc..c127f7730 100644 --- a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 04efd2c306f453d53aa46b995008cebec70e6cd1..98c01d48a01786abfd7a85c857ec92f46610c8ee 100644 +index 61121ec15d2ecb6cc46d4bcd07e35905dc67d827..f1d37e0fee049b8c91c09309b4df4d1f072c0ad5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,11 +1070,13 @@ public class PurpurWorldConfig { +@@ -1072,11 +1072,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0220-Mob-head-visibility-percent.patch b/patches/server/0221-Mob-head-visibility-percent.patch similarity index 91% rename from patches/server/0220-Mob-head-visibility-percent.patch rename to patches/server/0221-Mob-head-visibility-percent.patch index c9d08f472..f7bd5d8f0 100644 --- a/patches/server/0220-Mob-head-visibility-percent.patch +++ b/patches/server/0221-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 7ff96396797d08d15fe6346678f172035ec7caa9..8c992659cb1a6d894d66ed8d8b943c6d // 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 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376b0135325 100644 +index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974471fa772 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1415,6 +1415,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1417,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1433,6 +1434,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1436,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 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 } public boolean dolphinRidable = false; -@@ -2262,6 +2264,7 @@ public class PurpurWorldConfig { +@@ -2264,6 +2266,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2277,6 +2280,7 @@ public class PurpurWorldConfig { +@@ -2279,6 +2282,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 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 } public boolean piglinBruteRidable = false; -@@ -2561,6 +2565,7 @@ public class PurpurWorldConfig { +@@ -2563,6 +2567,7 @@ public class PurpurWorldConfig { public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2574,6 +2579,7 @@ public class PurpurWorldConfig { +@@ -2576,6 +2581,7 @@ public class PurpurWorldConfig { skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 } public boolean skeletonHorseRidable = false; -@@ -3143,6 +3149,7 @@ public class PurpurWorldConfig { +@@ -3145,6 +3151,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3162,6 +3169,7 @@ public class PurpurWorldConfig { +@@ -3164,6 +3171,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/0221-Configurable-valid-characters-for-usernames.patch b/patches/server/0222-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0221-Configurable-valid-characters-for-usernames.patch rename to patches/server/0222-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0222-Shears-can-have-looting-enchantment.patch b/patches/server/0223-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/server/0222-Shears-can-have-looting-enchantment.patch rename to patches/server/0223-Shears-can-have-looting-enchantment.patch diff --git a/patches/server/0223-Stop-bees-from-dying-after-stinging.patch b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0223-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0224-Stop-bees-from-dying-after-stinging.patch index 65f840d1d..6b488eded 100644 --- a/patches/server/0223-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 0a0f3d21234dbf567ce7439833c84293fac2dc0f..46d55f60cb91fc32b505582c8eecb393 ++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 25f95e7d3be2b183ea7be58419ad5376b0135325..c9dba0cded4d79a57f051aefb45486ebbf40b3a2 100644 +index 2d7f4b05e2720bb64f429ec9d0c06974471fa772..e9e50100613b7e0814ba6687ea092a3545836a4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1189,6 +1189,7 @@ public class PurpurWorldConfig { +@@ -1191,6 +1191,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 25f95e7d3be2b183ea7be58419ad5376b0135325..c9dba0cded4d79a57f051aefb45486eb private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1206,6 +1207,7 @@ public class PurpurWorldConfig { +@@ -1208,6 +1209,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/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch diff --git a/patches/server/0225-Configurable-farmland-trample-height.patch b/patches/server/0226-Configurable-farmland-trample-height.patch similarity index 94% rename from patches/server/0225-Configurable-farmland-trample-height.patch rename to patches/server/0226-Configurable-farmland-trample-height.patch index 0ad9aa9fa..df882c464 100644 --- a/patches/server/0225-Configurable-farmland-trample-height.patch +++ b/patches/server/0226-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 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 c9dba0cded4d79a57f051aefb45486ebbf40b3a2..f34bdc25186f4cbf59227d0f1add8dfc8fd36d76 100644 +index e9e50100613b7e0814ba6687ea092a3545836a4d..df517e667e64e34582a02b3f12bee5ae1c5b5886 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -963,6 +963,7 @@ public class PurpurWorldConfig { +@@ -965,6 +965,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index c9dba0cded4d79a57f051aefb45486ebbf40b3a2..f34bdc25186f4cbf59227d0f1add8dfc private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -970,6 +971,7 @@ public class PurpurWorldConfig { +@@ -972,6 +973,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/0226-Configurable-player-pickup-exp-delay.patch b/patches/server/0227-Configurable-player-pickup-exp-delay.patch similarity index 95% rename from patches/server/0226-Configurable-player-pickup-exp-delay.patch rename to patches/server/0227-Configurable-player-pickup-exp-delay.patch index c8cfb32c3..9706cf3a5 100644 --- a/patches/server/0226-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0227-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index 05ed7bfd75a1e30d74b12a068303a786222a2649..330b21946564e6a7b463a258c02fee3f } 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 f34bdc25186f4cbf59227d0f1add8dfc8fd36d76..108226cc328f6411ef6fa98577b4b68f089d5595 100644 +index df517e667e64e34582a02b3f12bee5ae1c5b5886..f47984ce8f1405bd8cb82636ffa6b3f3978368ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -423,6 +423,7 @@ public class PurpurWorldConfig { +@@ -425,6 +425,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index f34bdc25186f4cbf59227d0f1add8dfc8fd36d76..108226cc328f6411ef6fa98577b4b68f private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -448,6 +449,7 @@ public class PurpurWorldConfig { +@@ -450,6 +451,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/0227-Allow-void-trading.patch b/patches/server/0228-Allow-void-trading.patch similarity index 93% rename from patches/server/0227-Allow-void-trading.patch rename to patches/server/0228-Allow-void-trading.patch index cf4a7c948..82d19847f 100644 --- a/patches/server/0227-Allow-void-trading.patch +++ b/patches/server/0228-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 40d2472cebbde4a435d1b65ec8062c18b87c0cdb..e2f8ee57eeeceba632ff04c434fba82f } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 108226cc328f6411ef6fa98577b4b68f089d5595..0637155329792f1f8bbc0b2216a015fb3749bd68 100644 +index f47984ce8f1405bd8cb82636ffa6b3f3978368ee..a9e9316bfbde71d82d46258346c259052f2c7e2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -424,6 +424,7 @@ public class PurpurWorldConfig { +@@ -426,6 +426,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 108226cc328f6411ef6fa98577b4b68f089d5595..0637155329792f1f8bbc0b2216a015fb private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -450,6 +451,7 @@ public class PurpurWorldConfig { +@@ -452,6 +453,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/0228-Configurable-phantom-size.patch b/patches/server/0229-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0228-Configurable-phantom-size.patch rename to patches/server/0229-Configurable-phantom-size.patch index 8ee5a004a..d21a39cea 100644 --- a/patches/server/0228-Configurable-phantom-size.patch +++ b/patches/server/0229-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 718311ba402fbc5b05fd480395d29578d1f3fd71..493e9ee0585ae419caffaa163f4975ab } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0637155329792f1f8bbc0b2216a015fb3749bd68..154f4111a298d57d2d821e700edc81c9dcb01f87 100644 +index a9e9316bfbde71d82d46258346c259052f2c7e2c..cd159fcbf82baff184fceca54bc8bcaf60fd470e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2199,6 +2199,8 @@ public class PurpurWorldConfig { +@@ -2201,6 +2201,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 0637155329792f1f8bbc0b2216a015fb3749bd68..154f4111a298d57d2d821e700edc81c9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2235,6 +2237,13 @@ public class PurpurWorldConfig { +@@ -2237,6 +2239,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/0229-Max-joins-per-second.patch b/patches/server/0230-Max-joins-per-second.patch similarity index 100% rename from patches/server/0229-Max-joins-per-second.patch rename to patches/server/0230-Max-joins-per-second.patch diff --git a/patches/server/0230-Configurable-minimum-demand-for-trades.patch b/patches/server/0231-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0230-Configurable-minimum-demand-for-trades.patch rename to patches/server/0231-Configurable-minimum-demand-for-trades.patch index 6c0f28ddf..2374d9ac9 100644 --- a/patches/server/0230-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0231-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 154f4111a298d57d2d821e700edc81c9dcb01f87..7ecb674ca5f5663aaa003cb87e3c9da2362a5958 100644 +index cd159fcbf82baff184fceca54bc8bcaf60fd470e..67ada375ab78d5dafa7a10b1cd30986031b3ac1f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2929,6 +2929,7 @@ public class PurpurWorldConfig { +@@ -2931,6 +2931,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 154f4111a298d57d2d821e700edc81c9dcb01f87..7ecb674ca5f5663aaa003cb87e3c9da2 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2950,6 +2951,7 @@ public class PurpurWorldConfig { +@@ -2952,6 +2953,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/0231-Lobotomize-stuck-villagers.patch b/patches/server/0232-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0231-Lobotomize-stuck-villagers.patch rename to patches/server/0232-Lobotomize-stuck-villagers.patch index bf521a2fe..cca657fbf 100644 --- a/patches/server/0231-Lobotomize-stuck-villagers.patch +++ b/patches/server/0232-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index bd2987fa1fb194a581567134ed980e8fc043f435..bdd345595ed71a8018349e184afe8582 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ecb674ca5f5663aaa003cb87e3c9da2362a5958..52f4e35faf440f73ebd6b2c9f8a768f201e62790 100644 +index 67ada375ab78d5dafa7a10b1cd30986031b3ac1f..f3c7fa2896f440be4da45ba23830f3271043a927 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2930,6 +2930,9 @@ public class PurpurWorldConfig { +@@ -2932,6 +2932,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 7ecb674ca5f5663aaa003cb87e3c9da2362a5958..52f4e35faf440f73ebd6b2c9f8a768f2 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2952,6 +2955,18 @@ public class PurpurWorldConfig { +@@ -2954,6 +2957,18 @@ 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/0232-Option-for-villager-display-trade-item.patch b/patches/server/0233-Option-for-villager-display-trade-item.patch similarity index 92% rename from patches/server/0232-Option-for-villager-display-trade-item.patch rename to patches/server/0233-Option-for-villager-display-trade-item.patch index b85209301..823ae3457 100644 --- a/patches/server/0232-Option-for-villager-display-trade-item.patch +++ b/patches/server/0233-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52f4e35faf440f73ebd6b2c9f8a768f201e62790..c6d9a65ebf184a984c7ca7497c4061aaed44340c 100644 +index f3c7fa2896f440be4da45ba23830f3271043a927..132cef6e9191acdac437d3a3d85d96006aab9669 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2933,6 +2933,7 @@ public class PurpurWorldConfig { +@@ -2935,6 +2935,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 52f4e35faf440f73ebd6b2c9f8a768f201e62790..c6d9a65ebf184a984c7ca7497c4061aa private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2967,6 +2968,7 @@ public class PurpurWorldConfig { +@@ -2969,6 +2970,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 196b3e37c..7bc046299 100644 --- a/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index c9cabb061ebc9172647304431cc3fb2593dd47ba..565408c03849fb3011fb708478a99ec6 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6d9a65ebf184a984c7ca7497c4061aaed44340c..8aca371e3762dbe8b4ed4b8b6065d0029133ff4d 100644 +index 132cef6e9191acdac437d3a3d85d96006aab9669..8ed558043704a51ef5e932696aba1fb9ffb4da46 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1057,8 +1057,10 @@ public class PurpurWorldConfig { +@@ -1059,8 +1059,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch similarity index 95% rename from patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch index e42bdbf2c..ca7a72082 100644 --- a/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch @@ -38,10 +38,10 @@ index 572587db064c87ac86add6d9eece5ac94374c7b9..9add2ba364e80815ec9c530b984e1619 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8aca371e3762dbe8b4ed4b8b6065d0029133ff4d..22b95c9df12bd4f61d278d51b39fae90274a97a3 100644 +index 8ed558043704a51ef5e932696aba1fb9ffb4da46..09c681d1be0ac834df3e5f1af95d1e16c080f60a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -145,6 +145,7 @@ public class PurpurWorldConfig { +@@ -146,6 +146,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index 8aca371e3762dbe8b4ed4b8b6065d0029133ff4d..22b95c9df12bd4f61d278d51b39fae90 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -178,6 +179,7 @@ public class PurpurWorldConfig { +@@ -180,6 +181,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/0235-Anvil-repair-damage-options.patch b/patches/server/0236-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0235-Anvil-repair-damage-options.patch rename to patches/server/0236-Anvil-repair-damage-options.patch index db399f753..fd6bb4603 100644 --- a/patches/server/0235-Anvil-repair-damage-options.patch +++ b/patches/server/0236-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 22b95c9df12bd4f61d278d51b39fae90274a97a3..7beb9d378c694eb7a329970b1a59c0da1813e6db 100644 +index 09c681d1be0ac834df3e5f1af95d1e16c080f60a..d67353c9c3a35f8b8961a8bd840374511b64e2f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -824,9 +824,13 @@ public class PurpurWorldConfig { +@@ -826,9 +826,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 2366cbb1a..6fb4385b2 100644 --- a/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd 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 7beb9d378c694eb7a329970b1a59c0da1813e6db..1b195a0d9bb14447da905da122b07ee03eeca141 100644 +index d67353c9c3a35f8b8961a8bd840374511b64e2f5..7d00d2204fbba657d16693b89de5645bf0b64b04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1085,12 +1085,14 @@ public class PurpurWorldConfig { +@@ -1087,12 +1087,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0238-Add-toggle-for-enchant-level-clamping.patch similarity index 100% rename from patches/server/0237-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0238-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0238-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0239-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0238-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0239-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch index 973393823..63fd3ee7d 100644 --- a/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 05c945ba584757f8b3ccba50734917183882b10f..d4f64414a0351999a04308a3d26d15c9 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 1b195a0d9bb14447da905da122b07ee03eeca141..10dac9061aa168325048f59445f290f7acaa519a 100644 +index 7d00d2204fbba657d16693b89de5645bf0b64b04..00d2295aed2ef04f5dab922012710d9ade7c0afa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2944,6 +2944,8 @@ public class PurpurWorldConfig { +@@ -2946,6 +2946,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 1b195a0d9bb14447da905da122b07ee03eeca141..10dac9061aa168325048f59445f290f7 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2979,6 +2981,8 @@ public class PurpurWorldConfig { +@@ -2981,6 +2983,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0240-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch similarity index 98% rename from patches/server/0240-Stonecutter-damage.patch rename to patches/server/0241-Stonecutter-damage.patch index 5cf3364db..47d12f216 100644 --- a/patches/server/0240-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -143,10 +143,10 @@ index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c 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 10dac9061aa168325048f59445f290f7acaa519a..ca996a364d554729d756253a98f041ed73b1d9a9 100644 +index 00d2295aed2ef04f5dab922012710d9ade7c0afa..bfe8e51c895030637d2ca1744c9797f099b0cb7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1080,6 +1080,11 @@ public class PurpurWorldConfig { +@@ -1082,6 +1082,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch similarity index 92% rename from patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch index 1beab4586..37b0ac2f4 100644 --- a/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ca996a364d554729d756253a98f041ed73b1d9a9..64adffd6e28abf1de05e6829f862cc513409e6df 100644 +index bfe8e51c895030637d2ca1744c9797f099b0cb7a..f6b57116973fbe100df5c07b887787d23e13e2af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1021,6 +1021,11 @@ public class PurpurWorldConfig { +@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0242-Add-config-for-snow-on-blue-ice.patch b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0242-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0243-Add-config-for-snow-on-blue-ice.patch index 7267141da..3b7c2cf94 100644 --- a/patches/server/0242-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 64adffd6e28abf1de05e6829f862cc513409e6df..01bffc3460ccd5766fecee89584bff3f724aae11 100644 +index f6b57116973fbe100df5c07b887787d23e13e2af..0ce69521310715fc7cb1e5492c3767522d272170 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1002,9 +1002,11 @@ public class PurpurWorldConfig { +@@ -1004,9 +1004,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0243-Skeletons-eat-wither-roses.patch b/patches/server/0244-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0243-Skeletons-eat-wither-roses.patch rename to patches/server/0244-Skeletons-eat-wither-roses.patch index 8b10f2b63..0a7662fef 100644 --- a/patches/server/0243-Skeletons-eat-wither-roses.patch +++ b/patches/server/0244-Skeletons-eat-wither-roses.patch @@ -90,10 +90,10 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..cb714f78ad73f709967d7449c411c5b1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 01bffc3460ccd5766fecee89584bff3f724aae11..a455ed17987f9cbe4287126815862e9214ed5052 100644 +index 0ce69521310715fc7cb1e5492c3767522d272170..5d63c4d4e79513ceba95910abc99144547cc39b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2605,6 +2605,7 @@ public class PurpurWorldConfig { +@@ -2607,6 +2607,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index 01bffc3460ccd5766fecee89584bff3f724aae11..a455ed17987f9cbe4287126815862e92 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2619,6 +2620,7 @@ public class PurpurWorldConfig { +@@ -2621,6 +2622,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/0244-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch similarity index 97% rename from patches/server/0244-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0245-Enchantment-Table-Persists-Lapis.patch index 8faf76f2f..18d7d958d 100644 --- a/patches/server/0244-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a455ed17987f9cbe4287126815862e9214ed5052..bfb1e8169e931ae23941eb1e8009a1f95374ac80 100644 +index 5d63c4d4e79513ceba95910abc99144547cc39b6..79ab738db9ab21efc10342350c30be976059af57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1579,6 +1579,11 @@ public class PurpurWorldConfig { +@@ -1581,6 +1581,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 100% rename from patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch diff --git a/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch index 4c9a9a09b..094842eaf 100644 --- a/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bfb1e8169e931ae23941eb1e8009a1f95374ac80..a2a8b2c90d33b60fce3a2167d3fa85a3a786862c 100644 +index 79ab738db9ab21efc10342350c30be976059af57..cf1c3da820858af68f26258802c596134d609012 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1059,6 +1059,11 @@ public class PurpurWorldConfig { +@@ -1061,6 +1061,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0247-Config-to-not-let-coral-die.patch b/patches/server/0248-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0247-Config-to-not-let-coral-die.patch rename to patches/server/0248-Config-to-not-let-coral-die.patch index 448c34316..ef63c5caa 100644 --- a/patches/server/0247-Config-to-not-let-coral-die.patch +++ b/patches/server/0248-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 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 a2a8b2c90d33b60fce3a2167d3fa85a3a786862c..024c70f0fdfc4933a62b2ca8e8b36f45581b2a9f 100644 +index cf1c3da820858af68f26258802c596134d609012..d0bfa10a1ae1bb6b75b832e2e984a7c7d807e797 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -908,6 +908,11 @@ public class PurpurWorldConfig { +@@ -910,6 +910,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0248-Add-local-difficulty-api.patch b/patches/server/0249-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0248-Add-local-difficulty-api.patch rename to patches/server/0249-Add-local-difficulty-api.patch diff --git a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch b/patches/server/0250-Add-toggle-for-RNG-manipulation.patch similarity index 92% rename from patches/server/0249-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0250-Add-toggle-for-RNG-manipulation.patch index 5c9e94de7..33a623306 100644 --- a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0250-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 9470540c9f7db168e3ba8671d7a1ceab26b8dda3..204dc5cf5e4434dc6450254553088c0325a1d6ff 100644 +index 979d5942219830cadf756f7f7098b4e77662536f..8a7d0064356afed74850a679c5d6b513ce478c47 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -579,7 +579,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -33,10 +33,10 @@ index ea474ba1d37a594177ada2fd93302f874ed5dc73..3ca9a7f289d8c3f0b0df8f1cd4a5ca12 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 024c70f0fdfc4933a62b2ca8e8b36f45581b2a9f..3cb5df38ba68ea452bf6ad092178a3b2c4a2e667 100644 +index d0bfa10a1ae1bb6b75b832e2e984a7c7d807e797..2c4f8c06d85d456ccc6ad069b9bccbc44146b983 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -213,9 +213,11 @@ public class PurpurWorldConfig { +@@ -215,9 +215,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0250-Remove-Timings.patch b/patches/server/0251-Remove-Timings.patch similarity index 100% rename from patches/server/0250-Remove-Timings.patch rename to patches/server/0251-Remove-Timings.patch diff --git a/patches/server/0251-Remove-Mojang-Profiler.patch b/patches/server/0252-Remove-Mojang-Profiler.patch similarity index 99% rename from patches/server/0251-Remove-Mojang-Profiler.patch rename to patches/server/0252-Remove-Mojang-Profiler.patch index b26317294..d1536c1d4 100644 --- a/patches/server/0251-Remove-Mojang-Profiler.patch +++ b/patches/server/0252-Remove-Mojang-Profiler.patch @@ -808,7 +808,7 @@ index dc7db7a2c8b42f7ed2b7b28fe2ed6224be8da2fe..2c15fc6e4f46c5873cc5ce67edf10b73 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 06dab25d9e42f057637f71b663908a33448f4a22..552c048dd483a3dd866961368633fe645efd7868 100644 +index 9326e785c2e6524e172f6385c1310d44a40f0af8..a85068c94c0ebad462b983fda73c9ba63e022e25 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1399,7 +1399,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1067,7 +1067,7 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 204dc5cf5e4434dc6450254553088c0325a1d6ff..d3e393fa0f9b296eef4d97d0a7d39737a3c53a00 100644 +index 8a7d0064356afed74850a679c5d6b513ce478c47..17b883484b83db75454e3b004da3a8adc0506c0e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -880,7 +880,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch index 4473b46f7..b86328bfc 100644 --- a/patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index efb72ae3ce609117258dfc9f09b53add4ef0fd8e..29d69101326017f68b10329f51dd6b93c1bf1d60 100644 +index c0c854296bc920cf79d710ad4896a895ff45c058..ed8825f1bcd8e182078f16dd717cf232223ed208 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -721,6 +721,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0253-Add-Bee-API.patch b/patches/server/0254-Add-Bee-API.patch similarity index 100% rename from patches/server/0253-Add-Bee-API.patch rename to patches/server/0254-Add-Bee-API.patch diff --git a/patches/server/0254-Debug-Marker-API.patch b/patches/server/0255-Debug-Marker-API.patch similarity index 100% rename from patches/server/0254-Debug-Marker-API.patch rename to patches/server/0255-Debug-Marker-API.patch diff --git a/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch index 9e3f506e0..46c64a1e2 100644 --- a/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 4dc060bc677984d91a30a88155c576d5e187aa1b..061706ee732f9809d6b73305c1487125 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 3cb5df38ba68ea452bf6ad092178a3b2c4a2e667..358932371859c6406309ac792f9e1eb7d4c93f1b 100644 +index 2c4f8c06d85d456ccc6ad069b9bccbc44146b983..a849b947f1f2c06571687d35bebf73e0f7635b10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -380,6 +380,7 @@ public class PurpurWorldConfig { +@@ -382,6 +382,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index 3cb5df38ba68ea452bf6ad092178a3b2c4a2e667..358932371859c6406309ac792f9e1eb7 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); -@@ -388,6 +389,7 @@ public class PurpurWorldConfig { +@@ -390,6 +391,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/0256-Add-skeleton-bow-accuracy-option.patch b/patches/server/0257-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0256-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0257-Add-skeleton-bow-accuracy-option.patch index d2b6e54fb..6ab7078ac 100644 --- a/patches/server/0256-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0257-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 4aeb23de31e826d5cf27f8c91bd60c911f769a17..f9532a45419699585d1f20d27d5857a3 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 358932371859c6406309ac792f9e1eb7d4c93f1b..b2e5678bb8ed5964387eaf3f2daa6880a9991e17 100644 +index a849b947f1f2c06571687d35bebf73e0f7635b10..605f08428ef8e9f784313a9f50b7483ff1ebb347 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2625,6 +2625,8 @@ public class PurpurWorldConfig { +@@ -2627,6 +2627,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 358932371859c6406309ac792f9e1eb7d4c93f1b..b2e5678bb8ed5964387eaf3f2daa6880 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2640,6 +2642,18 @@ public class PurpurWorldConfig { +@@ -2642,6 +2644,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0257-Add-death-screen-API.patch b/patches/server/0258-Add-death-screen-API.patch similarity index 100% rename from patches/server/0257-Add-death-screen-API.patch rename to patches/server/0258-Add-death-screen-API.patch diff --git a/patches/server/0258-Implement-ram-and-rambar-commands.patch b/patches/server/0259-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0258-Implement-ram-and-rambar-commands.patch rename to patches/server/0259-Implement-ram-and-rambar-commands.patch index 9feb7b47b..1c446c4c5 100644 --- a/patches/server/0258-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0259-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 24cb04cd33cfe578286c85a892b20bbf3fc843e6..8468452ff61f226b65be1dad21b627f2 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 552c048dd483a3dd866961368633fe645efd7868..21dfca344a7b98dfd4e20bebde6c743e5cd8c932 100644 +index a85068c94c0ebad462b983fda73c9ba63e022e25..3fcacaa3fa604d139acd8e6a7bfcbc482ed27997 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -305,6 +305,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple diff --git a/patches/server/0259-Configurable-block-blast-resistance.patch b/patches/server/0260-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0259-Configurable-block-blast-resistance.patch rename to patches/server/0260-Configurable-block-blast-resistance.patch diff --git a/patches/server/0260-Configurable-block-fall-damage-modifiers.patch b/patches/server/0261-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0260-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0261-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0261-Language-API.patch b/patches/server/0262-Language-API.patch similarity index 100% rename from patches/server/0261-Language-API.patch rename to patches/server/0262-Language-API.patch diff --git a/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0263-Milk-Keeps-Beneficial-Effects.patch similarity index 95% rename from patches/server/0262-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0263-Milk-Keeps-Beneficial-Effects.patch index 097525247..c43f5b161 100644 --- a/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0263-Milk-Keeps-Beneficial-Effects.patch @@ -30,10 +30,10 @@ index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09b 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 b2e5678bb8ed5964387eaf3f2daa6880a9991e17..613fe8d58d7f1d4f5fa336cddbe2d9728b1d42cb 100644 +index 605f08428ef8e9f784313a9f50b7483ff1ebb347..d24f489d4a55fba13cb2a95a6111c3d5654747c1 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 { +@@ -131,6 +131,7 @@ public class PurpurWorldConfig { public boolean imposeTeleportRestrictionsOnNetherPortals = false; public boolean imposeTeleportRestrictionsOnEndPortals = false; public boolean milkCuresBadOmen = true; @@ -41,7 +41,7 @@ index b2e5678bb8ed5964387eaf3f2daa6880a9991e17..613fe8d58d7f1d4f5fa336cddbe2d972 public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean persistentTileEntityLore = false; -@@ -158,6 +159,7 @@ public class PurpurWorldConfig { +@@ -160,6 +161,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals); imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0264-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0265-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0264-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0265-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0266-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0266-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 8b7940143..6a2bc4138 100644 --- a/patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0266-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 8d8944a0455b3401d84cab636d61447e7d51ab19..0a7aa715674e5577e7f2327f6d0d253e5e6ec234 100644 +index 2ace900721f4aa185b8ed28ac95feb50cb89453f..1dd61ee306231f77664dee7e4f2b617fe2e3659f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -80,6 +80,7 @@ public abstract class AbstractArrow extends Projectile { diff --git a/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 328039a39..af38920ac 100644 --- a/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 613fe8d58d7f1d4f5fa336cddbe2d9728b1d42cb..70dff6a012ae9ded82ed2aef6c126efd5dd5d0af 100644 +index d24f489d4a55fba13cb2a95a6111c3d5654747c1..3ac6dff639e56cfd0f2411f02f34991f18f9b8d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1462,6 +1462,7 @@ public class PurpurWorldConfig { +@@ -1464,6 +1464,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 613fe8d58d7f1d4f5fa336cddbe2d9728b1d42cb..70dff6a012ae9ded82ed2aef6c126efd private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1481,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1483,6 +1484,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/0267-Fire-Immunity-API.patch b/patches/server/0268-Fire-Immunity-API.patch similarity index 97% rename from patches/server/0267-Fire-Immunity-API.patch rename to patches/server/0268-Fire-Immunity-API.patch index 0b56857c7..ac0dfde64 100644 --- a/patches/server/0267-Fire-Immunity-API.patch +++ b/patches/server/0268-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d3e393fa0f9b296eef4d97d0a7d39737a3c53a00..d8db27658d2c14c5794b8c7fa55c407bb74577f8 100644 +index 17b883484b83db75454e3b004da3a8adc0506c0e..3e8caea44bd55d7d13c66ffb3e87a9877067d9d6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -430,6 +430,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 90% rename from patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 3acfcf451..067df0bb0 100644 --- a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 49ddbb2212d7c591cb21c253e0a4554b5e65ebad..75d7ce413cc002f17e443ee9232531d894ec7f24 100644 +index 3e8caea44bd55d7d13c66ffb3e87a9877067d9d6..0e501c7797ec30b3c27ec19abb4fc782c0c2843e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -959,6 +959,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -17,10 +17,10 @@ index 49ddbb2212d7c591cb21c253e0a4554b5e65ebad..75d7ce413cc002f17e443ee9232531d8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70dff6a012ae9ded82ed2aef6c126efd5dd5d0af..0256e9c668e6f3ed5e108c70659c7fcf03b89a10 100644 +index 3ac6dff639e56cfd0f2411f02f34991f18f9b8d6..664929350ede4ab649ea3e5fbc188bd985043945 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -420,6 +420,7 @@ public class PurpurWorldConfig { +@@ -422,6 +422,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 70dff6a012ae9ded82ed2aef6c126efd5dd5d0af..0256e9c668e6f3ed5e108c70659c7fcf public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -447,6 +448,7 @@ public class PurpurWorldConfig { +@@ -449,6 +450,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/0269-Added-got-ram-event.patch b/patches/server/0270-Added-got-ram-event.patch similarity index 100% rename from patches/server/0269-Added-got-ram-event.patch rename to patches/server/0270-Added-got-ram-event.patch diff --git a/patches/server/0270-Log-skipped-entity-s-position.patch b/patches/server/0271-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0270-Log-skipped-entity-s-position.patch rename to patches/server/0271-Log-skipped-entity-s-position.patch diff --git a/patches/server/0271-End-Crystal-Cramming.patch b/patches/server/0272-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0271-End-Crystal-Cramming.patch rename to patches/server/0272-End-Crystal-Cramming.patch index 302de144f..9c5e57486 100644 --- a/patches/server/0271-End-Crystal-Cramming.patch +++ b/patches/server/0272-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0256e9c668e6f3ed5e108c70659c7fcf03b89a10..bdd6d44adb4425f892f7d91f3cd1cf790ced052e 100644 +index 664929350ede4ab649ea3e5fbc188bd985043945..bb4ba53f6cb9de9356f918881cbdad5a23dbcdc9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -951,6 +951,7 @@ public class PurpurWorldConfig { +@@ -953,6 +953,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 0256e9c668e6f3ed5e108c70659c7fcf03b89a10..bdd6d44adb4425f892f7d91f3cd1cf79 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -978,6 +979,7 @@ public class PurpurWorldConfig { +@@ -980,6 +981,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/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index e8236885f..121b93b5f 100644 --- a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9 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 bdd6d44adb4425f892f7d91f3cd1cf790ced052e..09a15692c4a6b6678c9d1de3d14f9842ec8e3b65 100644 +index bb4ba53f6cb9de9356f918881cbdad5a23dbcdc9..a27129bdc292623a8ecf0d98c265f91df9d694c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -850,11 +850,13 @@ public class PurpurWorldConfig { +@@ -852,11 +852,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch similarity index 93% rename from patches/server/0274-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0275-Config-to-remove-explosion-radius-clamp.patch index 602b96919..0087cb74b 100644 --- a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index 28eafd9b22b745a940b4465aae01cb738a2d7002..8dd513e3aa12bb5086d4eebe9a93c1f2 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09a15692c4a6b6678c9d1de3d14f9842ec8e3b65..5384c4fac1cf65c2f00135e47c7cf2086a0c2067 100644 +index a27129bdc292623a8ecf0d98c265f91df9d694c9..c2a62fdd982121cd2b8d57992730d82d913d9cae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -227,6 +227,11 @@ public class PurpurWorldConfig { +@@ -229,6 +229,11 @@ public class PurpurWorldConfig { infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } diff --git a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch index 247c1a450..4f919f620 100644 --- a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5384c4fac1cf65c2f00135e47c7cf2086a0c2067..ef176763c3aababc8b41a1f53acea44703fdebe0 100644 +index c2a62fdd982121cd2b8d57992730d82d913d9cae..993784f096ed3bc0a878e9f5b0c9a5e3f9a7f7a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -904,8 +904,20 @@ public class PurpurWorldConfig { +@@ -906,8 +906,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0276-Add-PreExplodeEvents.patch b/patches/server/0277-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0276-Add-PreExplodeEvents.patch rename to patches/server/0277-Add-PreExplodeEvents.patch diff --git a/patches/server/0277-Improve-output-of-plugins-command.patch b/patches/server/0278-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0277-Improve-output-of-plugins-command.patch rename to patches/server/0278-Improve-output-of-plugins-command.patch diff --git a/patches/server/0278-Make-GUI-Great-Again.patch b/patches/server/0279-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0278-Make-GUI-Great-Again.patch rename to patches/server/0279-Make-GUI-Great-Again.patch diff --git a/patches/server/0279-Stored-Bee-API.patch b/patches/server/0280-Stored-Bee-API.patch similarity index 100% rename from patches/server/0279-Stored-Bee-API.patch rename to patches/server/0280-Stored-Bee-API.patch diff --git a/patches/server/0280-Shears-can-defuse-TNT.patch b/patches/server/0281-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0280-Shears-can-defuse-TNT.patch rename to patches/server/0281-Shears-can-defuse-TNT.patch index 7f87d8f59..db465f837 100644 --- a/patches/server/0280-Shears-can-defuse-TNT.patch +++ b/patches/server/0281-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef176763c3aababc8b41a1f53acea44703fdebe0..bd2457af40d00763c1598dca687ceb71fb358653 100644 +index 993784f096ed3bc0a878e9f5b0c9a5e3f9a7f7a7..602dc0e0dd27580fe30aac979998edbca64842f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3435,4 +3435,11 @@ public class PurpurWorldConfig { +@@ -3437,4 +3437,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0281-Explorer-Map-API.patch b/patches/server/0282-Explorer-Map-API.patch similarity index 100% rename from patches/server/0281-Explorer-Map-API.patch rename to patches/server/0282-Explorer-Map-API.patch diff --git a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch index 08018b563..ab4a63c0f 100644 --- a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 92b71f76c7518068b4b5d19b5f41f2d1c796ac47..82ba970f265142e2fe7c8c5152f5004a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bd2457af40d00763c1598dca687ceb71fb358653..fad0f384205ec5cb5a66775d0972e6ea1fce74bb 100644 +index 602dc0e0dd27580fe30aac979998edbca64842f4..c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2175,6 +2175,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2177,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index bd2457af40d00763c1598dca687ceb71fb358653..fad0f384205ec5cb5a66775d0972e6ea private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2189,6 +2190,7 @@ public class PurpurWorldConfig { +@@ -2191,6 +2192,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 93% rename from patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index ef05501c5..6b5af40ef 100644 --- a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fad0f384205ec5cb5a66775d0972e6ea1fce74bb..85d6466b38f4563719296a28459b8fd3cfb20876 100644 +index c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2..d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2352,6 +2352,7 @@ public class PurpurWorldConfig { +@@ -2354,6 +2354,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index fad0f384205ec5cb5a66775d0972e6ea1fce74bb..85d6466b38f4563719296a28459b8fd3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2368,6 +2369,7 @@ public class PurpurWorldConfig { +@@ -2370,6 +2371,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0285-place-end-crystal-on-any-block.patch b/patches/server/0286-place-end-crystal-on-any-block.patch similarity index 91% rename from patches/server/0285-place-end-crystal-on-any-block.patch rename to patches/server/0286-place-end-crystal-on-any-block.patch index 58c92dd4e..3cbf0ca73 100644 --- a/patches/server/0285-place-end-crystal-on-any-block.patch +++ b/patches/server/0286-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..8fb564f43e2f1194d2ad68d35c4df6b9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 85d6466b38f4563719296a28459b8fd3cfb20876..51a7017dcd025da28ad36f9c94b80c7b326baf52 100644 +index d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8..26e1b0c813885634b4bd3b9913e8fe0b4e3187e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -971,6 +971,7 @@ public class PurpurWorldConfig { +@@ -973,6 +973,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 85d6466b38f4563719296a28459b8fd3cfb20876..51a7017dcd025da28ad36f9c94b80c7b private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -999,6 +1000,7 @@ public class PurpurWorldConfig { +@@ -1001,6 +1002,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 92% rename from patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch index 639ae5d89..e3a69ddc9 100644 --- a/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51a7017dcd025da28ad36f9c94b80c7b326baf52..5f807e0abb572ace1b05ef315ef23b0bc7f2d6f3 100644 +index 26e1b0c813885634b4bd3b9913e8fe0b4e3187e0..7513b625274fe0a50ea4ac7b91cdca9121d68a3c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -147,6 +147,7 @@ public class PurpurWorldConfig { +@@ -148,6 +148,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 51a7017dcd025da28ad36f9c94b80c7b326baf52..5f807e0abb572ace1b05ef315ef23b0b private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -182,6 +183,7 @@ public class PurpurWorldConfig { +@@ -184,6 +185,7 @@ public class PurpurWorldConfig { rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/server/0287-register-minecraft-debug-commands.patch b/patches/server/0288-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0287-register-minecraft-debug-commands.patch rename to patches/server/0288-register-minecraft-debug-commands.patch diff --git a/patches/server/0288-Configurable-villager-search-radius.patch b/patches/server/0289-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0288-Configurable-villager-search-radius.patch rename to patches/server/0289-Configurable-villager-search-radius.patch index 57233e705..c89adcef4 100644 --- a/patches/server/0288-Configurable-villager-search-radius.patch +++ b/patches/server/0289-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f807e0abb572ace1b05ef315ef23b0bc7f2d6f3..8321de8fa989c47f0f777cc399264898f646ff8b 100644 +index 7513b625274fe0a50ea4ac7b91cdca9121d68a3c..9d0fd2a3dc305441e43e556d4d593758dcd92ac0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3028,6 +3028,8 @@ public class PurpurWorldConfig { +@@ -3030,6 +3030,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 5f807e0abb572ace1b05ef315ef23b0bc7f2d6f3..8321de8fa989c47f0f777cc399264898 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -3065,6 +3067,8 @@ public class PurpurWorldConfig { +@@ -3067,6 +3069,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0290-option-to-make-ravagers-afraid-of-rabbits.patch similarity index 91% rename from patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch rename to patches/server/0290-option-to-make-ravagers-afraid-of-rabbits.patch index 316da4966..c84b7766f 100644 --- a/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0290-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,10 +18,10 @@ index 963df673d7f63e2aea25d4dce28edef06899eabe..4f10d4686f12a81a77f5fc103139aa03 this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8321de8fa989c47f0f777cc399264898f646ff8b..2cb73db565bc55a0c49310cf76ee3ed7a6821c6a 100644 +index 9d0fd2a3dc305441e43e556d4d593758dcd92ac0..b291c770e1a5a7b56e592c62a2ac17dbad3268e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2510,6 +2510,7 @@ public class PurpurWorldConfig { +@@ -2512,6 +2512,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 8321de8fa989c47f0f777cc399264898f646ff8b..2cb73db565bc55a0c49310cf76ee3ed7 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2541,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2543,6 +2544,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp); diff --git a/patches/server/0290-config-for-startup-commands.patch b/patches/server/0291-config-for-startup-commands.patch similarity index 100% rename from patches/server/0290-config-for-startup-commands.patch rename to patches/server/0291-config-for-startup-commands.patch diff --git a/patches/server/0291-Config-to-reverse-bubble-column-flow.patch b/patches/server/0292-Config-to-reverse-bubble-column-flow.patch similarity index 100% rename from patches/server/0291-Config-to-reverse-bubble-column-flow.patch rename to patches/server/0292-Config-to-reverse-bubble-column-flow.patch diff --git a/patches/server/0292-Adopt-MaterialRerouting.patch b/patches/server/0293-Adopt-MaterialRerouting.patch similarity index 100% rename from patches/server/0292-Adopt-MaterialRerouting.patch rename to patches/server/0293-Adopt-MaterialRerouting.patch diff --git a/patches/server/0293-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch b/patches/server/0294-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch similarity index 100% rename from patches/server/0293-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch rename to patches/server/0294-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch