diff --git a/patches/server/0108-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0108-Arrows-should-not-reset-despawn-counter.patch
index 2a99556f3..6b02b4b9b 100644
--- a/patches/server/0108-Arrows-should-not-reset-despawn-counter.patch
+++ b/patches/server/0108-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 63662eb3b3e4a79aea506df671721a83528340b9..8d0b4bf233b228f424cc8493c691b1dfe5c37ce9 100644
+index bc01e5014e1355a225bdf5c47f2965290b45e2d2..e292589e015c6691be65285b041f5b4f0d0afeb1 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
@@ -322,7 +322,7 @@ public abstract class AbstractArrow extends Projectile {
@@ -15,7 +15,23 @@ index 63662eb3b3e4a79aea506df671721a83528340b9..8d0b4bf233b228f424cc8493c691b1df
this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F)));
- this.life = 0;
-+ // this.life = 0; // Purpur - do not reset despawn counter
++ if (this.level.purpurConfig.arrowMovementResetsDespawnCounter) this.life = 0; // Purpur - do not reset despawn counter
}
@Override
+diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+index fb7a51aa77a90b2a2dc57c4795d0ccfb160837e4..9eb4ddafed9629193417afaf867686fb0c738399 100644
+--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+@@ -103,6 +103,11 @@ public class PurpurWorldConfig {
+ armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
+ }
+
++ public boolean arrowMovementResetsDespawnCounter = true;
++ private void arrowSettings() {
++ arrowMovementResetsDespawnCounter = getBoolean("gameplay-mechanics.arrow.movement-resets-despawn-counter", arrowMovementResetsDespawnCounter);
++ }
++
+ public boolean useBetterMending = false;
+ public boolean boatEjectPlayersOnLand = false;
+ public boolean disableDropsOnCrammingDeath = false;
diff --git a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch
index 2a4029465..9e16ba184 100644
--- a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch
+++ b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch
@@ -24,10 +24,10 @@ index 4208833252a5b5c74d294dc3435869d71d774e37..a3ff99c461dd862733816d9d1204cf8b
return;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 4f466edede5d344baeda141fa0dc5f68669c67a5..383a6f1e7b54ea8c7e4ecf9098434df33ccd2e3e 100644
+index 9eb4ddafed9629193417afaf867686fb0c738399..c7d009d628e541e2ff9b35d339c14bc997f99c76 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -404,8 +404,10 @@ public class PurpurWorldConfig {
+@@ -409,8 +409,10 @@ public class PurpurWorldConfig {
}
public boolean farmlandGetsMoistFromBelow = false;
diff --git a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch
index ba517de08..37cacb72a 100644
--- a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch
+++ b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch
@@ -95,10 +95,10 @@ index 765653976492ff63b325f0538b2fdd579a9e0019..0dab4ef279f7e9af64290395b4af205b
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 49ef8cad1050ed7fd82997ec67f94a4c7f34fb39..d45805285e2e24744cb8c44e38968e0c08d3aa13 100644
+index c7d009d628e541e2ff9b35d339c14bc997f99c76..c938383d719b641c537279c790a3096091a7d601 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -112,6 +112,7 @@ public class PurpurWorldConfig {
+@@ -117,6 +117,7 @@ public class PurpurWorldConfig {
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
public int raidCooldownSeconds = 0;
@@ -106,7 +106,7 @@ index 49ef8cad1050ed7fd82997ec67f94a4c7f34fb39..d45805285e2e24744cb8c44e38968e0c
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
-@@ -122,6 +123,7 @@ public class PurpurWorldConfig {
+@@ -127,6 +128,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/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0111-Make-entity-breeding-times-configurable.patch
index cef1f1d15..22f84cbb6 100644
--- a/patches/server/0111-Make-entity-breeding-times-configurable.patch
+++ b/patches/server/0111-Make-entity-breeding-times-configurable.patch
@@ -47,7 +47,7 @@ index 34e82b97c5b294f0a6423581220403a10264da8b..a0c3a27a90e0788b573f0776c25cfc6e
other.resetLove();
world.addFreshEntityWithPassengers(entityageable, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index 0fb1aa7bfbadc5e2df34391a4c9f0d045d576740..f9ae9bf91026adcb205302e0f902dda44febb744 100644
+index fe3426dba86537bc7ce5434ea26c570b56e63670..eaff4f966b4d82749df9e96246c078301fd4801b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -219,6 +219,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -111,7 +111,7 @@ index 732c560383da3b8a270139758f29734d73b775be..b063a74327e51b3cd27427426b92ef68
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-index f03bd9a9129f0d45d36ef56a726d513a8cc088e5..aa18947d3822a1093985799e87ad6c2b28f51eb1 100644
+index a708a9d855fd32c0eb659b44d91a5a1a33312cc7..b2c901ed90fbf0ab79848d11f50d6f7a0b24bd6f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -183,6 +183,11 @@ public class Fox extends Animal {
@@ -316,7 +316,7 @@ index a80a7d460051a39fe805ae669b4586fb42e46943..6d444248b9e283e31d5777d450a52643
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
-index c88222d120c71649b2e43a20f119590106734596..0a559e061b332508cba2d97c55d9f309c118f473 100644
+index 976bdba9da2a744dc887a70c396b4042ec1548fa..8210aa958b8bc7d36f2959d261a750c444017fec 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
@@ -140,6 +140,10 @@ public class Frog extends Animal {
@@ -331,7 +331,7 @@ index c88222d120c71649b2e43a20f119590106734596..0a559e061b332508cba2d97c55d9f309
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
-index aa2abe00478b002fc90166441d8b89c7046ed022..47c08d7f3e30aa335fb7c43179679b6ae9f23952 100644
+index 77be0c6f6e6061ceee1daa467c20c8d7ece7590e..59caabbe84a24ea47796ae71130961dff146a76f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -109,6 +109,11 @@ public class Goat extends Animal {
@@ -491,10 +491,10 @@ index e99ffbf30652e188e88f8e17ed41d39ff25c9f73..c335a32832c6eef95658fbf632b943bb
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe1574907d 100644
+index c938383d719b641c537279c790a3096091a7d601..834dd3b5244c1f0f0ab0b6b85fd692b315c5b929 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -497,10 +497,12 @@ public class PurpurWorldConfig {
+@@ -502,10 +502,12 @@ public class PurpurWorldConfig {
public boolean axolotlRidable = false;
public boolean axolotlControllable = true;
public double axolotlMaxHealth = 14.0D;
@@ -507,7 +507,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean batRidable = false;
-@@ -533,6 +535,7 @@ public class PurpurWorldConfig {
+@@ -538,6 +540,7 @@ public class PurpurWorldConfig {
public boolean beeControllable = true;
public double beeMaxY = 320D;
public double beeMaxHealth = 10.0D;
@@ -515,7 +515,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -544,6 +547,7 @@ public class PurpurWorldConfig {
+@@ -549,6 +552,7 @@ public class PurpurWorldConfig {
set("mobs.bee.attributes.max_health", oldValue);
}
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
@@ -523,7 +523,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean blazeRidable = false;
-@@ -571,6 +575,7 @@ public class PurpurWorldConfig {
+@@ -576,6 +580,7 @@ public class PurpurWorldConfig {
public int catSpawnDelay = 1200;
public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48;
@@ -531,7 +531,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -584,6 +589,7 @@ public class PurpurWorldConfig {
+@@ -589,6 +594,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);
@@ -539,7 +539,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean caveSpiderRidable = false;
-@@ -607,6 +613,7 @@ public class PurpurWorldConfig {
+@@ -612,6 +618,7 @@ public class PurpurWorldConfig {
public boolean chickenControllable = true;
public double chickenMaxHealth = 4.0D;
public boolean chickenRetaliate = false;
@@ -547,7 +547,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
-@@ -618,6 +625,7 @@ public class PurpurWorldConfig {
+@@ -623,6 +630,7 @@ public class PurpurWorldConfig {
}
chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth);
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
@@ -555,7 +555,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean codRidable = false;
-@@ -639,6 +647,7 @@ public class PurpurWorldConfig {
+@@ -644,6 +652,7 @@ public class PurpurWorldConfig {
public boolean cowControllable = true;
public double cowMaxHealth = 10.0D;
public int cowFeedMushrooms = 0;
@@ -563,7 +563,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void cowSettings() {
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
-@@ -650,6 +659,7 @@ public class PurpurWorldConfig {
+@@ -655,6 +664,7 @@ public class PurpurWorldConfig {
}
cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
@@ -571,7 +571,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean creeperRidable = false;
-@@ -701,6 +711,7 @@ public class PurpurWorldConfig {
+@@ -706,6 +716,7 @@ public class PurpurWorldConfig {
public double donkeyJumpStrengthMax = 0.5D;
public double donkeyMovementSpeedMin = 0.175D;
public double donkeyMovementSpeedMax = 0.175D;
@@ -579,7 +579,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -716,6 +727,7 @@ public class PurpurWorldConfig {
+@@ -721,6 +732,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);
@@ -587,7 +587,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean drownedRidable = false;
-@@ -835,6 +847,7 @@ public class PurpurWorldConfig {
+@@ -840,6 +852,7 @@ public class PurpurWorldConfig {
public boolean foxControllable = true;
public double foxMaxHealth = 10.0D;
public boolean foxTypeChangesWithTulips = false;
@@ -595,7 +595,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -846,17 +859,20 @@ public class PurpurWorldConfig {
+@@ -851,17 +864,20 @@ public class PurpurWorldConfig {
}
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
@@ -616,7 +616,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean ghastRidable = false;
-@@ -924,11 +940,13 @@ public class PurpurWorldConfig {
+@@ -929,11 +945,13 @@ public class PurpurWorldConfig {
public boolean goatRidableInWater = false;
public boolean goatControllable = true;
public double goatMaxHealth = 10.0D;
@@ -630,7 +630,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean guardianRidable = false;
-@@ -949,6 +967,7 @@ public class PurpurWorldConfig {
+@@ -954,6 +972,7 @@ public class PurpurWorldConfig {
public boolean hoglinRidableInWater = false;
public boolean hoglinControllable = true;
public double hoglinMaxHealth = 40.0D;
@@ -638,7 +638,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
-@@ -959,6 +978,7 @@ public class PurpurWorldConfig {
+@@ -964,6 +983,7 @@ public class PurpurWorldConfig {
set("mobs.hoglin.attributes.max_health", oldValue);
}
hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth);
@@ -646,7 +646,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean horseRidableInWater = false;
-@@ -968,6 +988,7 @@ public class PurpurWorldConfig {
+@@ -973,6 +993,7 @@ public class PurpurWorldConfig {
public double horseJumpStrengthMax = 1.0D;
public double horseMovementSpeedMin = 0.1125D;
public double horseMovementSpeedMax = 0.3375D;
@@ -654,7 +654,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -983,6 +1004,7 @@ public class PurpurWorldConfig {
+@@ -988,6 +1009,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);
@@ -662,7 +662,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean huskRidable = false;
-@@ -1060,6 +1082,7 @@ public class PurpurWorldConfig {
+@@ -1065,6 +1087,7 @@ public class PurpurWorldConfig {
public double llamaJumpStrengthMax = 0.5D;
public double llamaMovementSpeedMin = 0.175D;
public double llamaMovementSpeedMax = 0.175D;
@@ -670,7 +670,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1077,6 +1100,7 @@ public class PurpurWorldConfig {
+@@ -1082,6 +1105,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);
@@ -678,7 +678,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean magmaCubeRidable = false;
-@@ -1105,6 +1129,7 @@ public class PurpurWorldConfig {
+@@ -1110,6 +1134,7 @@ public class PurpurWorldConfig {
public boolean mooshroomRidableInWater = false;
public boolean mooshroomControllable = true;
public double mooshroomMaxHealth = 10.0D;
@@ -686,7 +686,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
-@@ -1115,6 +1140,7 @@ public class PurpurWorldConfig {
+@@ -1120,6 +1145,7 @@ public class PurpurWorldConfig {
set("mobs.mooshroom.attributes.max_health", oldValue);
}
mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth);
@@ -694,7 +694,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean muleRidableInWater = false;
-@@ -1124,6 +1150,7 @@ public class PurpurWorldConfig {
+@@ -1129,6 +1155,7 @@ public class PurpurWorldConfig {
public double muleJumpStrengthMax = 0.5D;
public double muleMovementSpeedMin = 0.175D;
public double muleMovementSpeedMax = 0.175D;
@@ -702,7 +702,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1139,12 +1166,14 @@ public class PurpurWorldConfig {
+@@ -1144,12 +1171,14 @@ public class PurpurWorldConfig {
muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax);
muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin);
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
@@ -717,7 +717,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -1155,12 +1184,14 @@ public class PurpurWorldConfig {
+@@ -1160,12 +1189,14 @@ public class PurpurWorldConfig {
set("mobs.ocelot.attributes.max_health", oldValue);
}
ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth);
@@ -732,7 +732,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
-@@ -1171,6 +1202,7 @@ public class PurpurWorldConfig {
+@@ -1176,6 +1207,7 @@ public class PurpurWorldConfig {
set("mobs.panda.attributes.max_health", oldValue);
}
pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth);
@@ -740,7 +740,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean parrotRidable = false;
-@@ -1266,6 +1298,7 @@ public class PurpurWorldConfig {
+@@ -1271,6 +1303,7 @@ public class PurpurWorldConfig {
public boolean pigControllable = true;
public double pigMaxHealth = 10.0D;
public boolean pigGiveSaddleBack = false;
@@ -748,7 +748,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
-@@ -1277,6 +1310,7 @@ public class PurpurWorldConfig {
+@@ -1282,6 +1315,7 @@ public class PurpurWorldConfig {
}
pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth);
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
@@ -756,7 +756,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean piglinRidable = false;
-@@ -1333,6 +1367,7 @@ public class PurpurWorldConfig {
+@@ -1338,6 +1372,7 @@ public class PurpurWorldConfig {
public double polarBearMaxHealth = 30.0D;
public String polarBearBreedableItemString = "";
public Item polarBearBreedableItem = null;
@@ -764,7 +764,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
-@@ -1346,6 +1381,7 @@ public class PurpurWorldConfig {
+@@ -1351,6 +1386,7 @@ public class PurpurWorldConfig {
polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString);
Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString));
if (item != Items.AIR) polarBearBreedableItem = item;
@@ -772,7 +772,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean pufferfishRidable = false;
-@@ -1368,6 +1404,7 @@ public class PurpurWorldConfig {
+@@ -1373,6 +1409,7 @@ public class PurpurWorldConfig {
public double rabbitMaxHealth = 3.0D;
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
@@ -780,7 +780,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -1380,6 +1417,7 @@ public class PurpurWorldConfig {
+@@ -1385,6 +1422,7 @@ public class PurpurWorldConfig {
rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth);
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
@@ -788,7 +788,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean ravagerRidable = false;
-@@ -1416,6 +1454,7 @@ public class PurpurWorldConfig {
+@@ -1421,6 +1459,7 @@ public class PurpurWorldConfig {
public boolean sheepRidableInWater = false;
public boolean sheepControllable = true;
public double sheepMaxHealth = 8.0D;
@@ -796,7 +796,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -1426,6 +1465,7 @@ public class PurpurWorldConfig {
+@@ -1431,6 +1470,7 @@ public class PurpurWorldConfig {
set("mobs.sheep.attributes.max_health", oldValue);
}
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
@@ -804,7 +804,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean shulkerRidable = false;
-@@ -1601,6 +1641,7 @@ public class PurpurWorldConfig {
+@@ -1606,6 +1646,7 @@ public class PurpurWorldConfig {
public boolean striderRidableInWater = false;
public boolean striderControllable = true;
public double striderMaxHealth = 20.0D;
@@ -812,7 +812,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -1611,6 +1652,7 @@ public class PurpurWorldConfig {
+@@ -1616,6 +1657,7 @@ public class PurpurWorldConfig {
set("mobs.strider.attributes.max_health", oldValue);
}
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
@@ -820,7 +820,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean tadpoleRidable = false;
-@@ -1631,6 +1673,7 @@ public class PurpurWorldConfig {
+@@ -1636,6 +1678,7 @@ public class PurpurWorldConfig {
public double traderLlamaJumpStrengthMax = 0.5D;
public double traderLlamaMovementSpeedMin = 0.175D;
public double traderLlamaMovementSpeedMax = 0.175D;
@@ -828,7 +828,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
-@@ -1648,6 +1691,7 @@ public class PurpurWorldConfig {
+@@ -1653,6 +1696,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);
@@ -836,7 +836,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean tropicalFishRidable = false;
-@@ -1668,6 +1712,7 @@ public class PurpurWorldConfig {
+@@ -1673,6 +1717,7 @@ public class PurpurWorldConfig {
public boolean turtleRidableInWater = false;
public boolean turtleControllable = true;
public double turtleMaxHealth = 30.0D;
@@ -844,7 +844,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
-@@ -1678,6 +1723,7 @@ public class PurpurWorldConfig {
+@@ -1683,6 +1728,7 @@ public class PurpurWorldConfig {
set("mobs.turtle.attributes.max_health", oldValue);
}
turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth);
@@ -852,7 +852,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean vexRidable = false;
-@@ -1707,6 +1753,7 @@ public class PurpurWorldConfig {
+@@ -1712,6 +1758,7 @@ public class PurpurWorldConfig {
public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false;
public boolean villagerCanBreed = true;
@@ -860,7 +860,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1722,6 +1769,7 @@ public class PurpurWorldConfig {
+@@ -1727,6 +1774,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);
@@ -868,7 +868,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
}
public boolean vindicatorRidable = false;
-@@ -1833,6 +1881,7 @@ public class PurpurWorldConfig {
+@@ -1838,6 +1886,7 @@ public class PurpurWorldConfig {
public boolean wolfRidableInWater = false;
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D;
@@ -876,7 +876,7 @@ index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
-@@ -1843,6 +1892,7 @@ public class PurpurWorldConfig {
+@@ -1848,6 +1897,7 @@ public class PurpurWorldConfig {
set("mobs.wolf.attributes.max_health", oldValue);
}
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
diff --git a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch
index dd0e38d2e..1dbe2f056 100644
--- a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch
+++ b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch
@@ -63,7 +63,7 @@ index 18697701ca6406b2a74f190b22d5b276359547d0..ee72748a8c07587c95bdce8f982fcdd7
}
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
-index c9ce0f1f798ee73e985798e7e7271aa51e405d05..a933a135e40097f88c22342159a13a4f500f0a8f 100644
+index 539c9d60cecb63fb2b0858951ff58cc0ea26c446..ed260c5f8cdf9027ad95c81cb84bb91879647836 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
@@ -220,7 +220,13 @@ public class Boat extends Entity {
@@ -142,7 +142,7 @@ index 4c5671cd4c26c23e61b2196577c554f504a03c55..678e0cb7e5b704ce01eda96b2d74694d
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 2d5c235b27417b02a1bf3da6a95277fe1574907d..b5aa728d4e10cd37a268234c9fd7acdcb0e57956 100644
+index 834dd3b5244c1f0f0ab0b6b85fd692b315c5b929..1966cdca08f38f440b033a20c4ecb4c3e79d7482 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -99,8 +99,10 @@ public class PurpurWorldConfig {
@@ -155,8 +155,8 @@ index 2d5c235b27417b02a1bf3da6a95277fe1574907d..b5aa728d4e10cd37a268234c9fd7acdc
+ armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible);
}
- public boolean useBetterMending = false;
-@@ -108,6 +110,7 @@ public class PurpurWorldConfig {
+ public boolean arrowMovementResetsDespawnCounter = true;
+@@ -113,6 +115,7 @@ public class PurpurWorldConfig {
public boolean disableDropsOnCrammingDeath = false;
public boolean entitiesCanUsePortals = true;
public boolean milkCuresBadOmen = true;
@@ -164,7 +164,7 @@ index 2d5c235b27417b02a1bf3da6a95277fe1574907d..b5aa728d4e10cd37a268234c9fd7acdc
public double tridentLoyaltyVoidReturnHeight = 0.0D;
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
-@@ -119,6 +122,7 @@ public class PurpurWorldConfig {
+@@ -124,6 +127,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);
diff --git a/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch
index 7da571083..5483792a1 100644
--- a/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch
+++ b/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch
@@ -17,7 +17,7 @@ index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d834155
((Mob) newEntityLiving).setPersistenceRequired();
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b5aa728d4e10cd37a268234c9fd7acdcb0e57956..3feffa81d9336c0c625934953522618007143d62 100644
+index 1966cdca08f38f440b033a20c4ecb4c3e79d7482..9c9c526dad5eb2552e458b3f3ad390bed55ff34b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -100,9 +100,11 @@ public class PurpurWorldConfig {
@@ -31,4 +31,4 @@ index b5aa728d4e10cd37a268234c9fd7acdcb0e57956..3feffa81d9336c0c6259349535226180
+ armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags);
}
- public boolean useBetterMending = false;
+ public boolean arrowMovementResetsDespawnCounter = true;
diff --git a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
index 7f3c67078..f186225d8 100644
--- a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
+++ b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
@@ -21,10 +21,10 @@ index 9458cab33d4ff468d3d009cc1c3b3736f21f649b..4443a4a300d17e8568a81bcb9af89251
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 3feffa81d9336c0c625934953522618007143d62..61e6085089b1e7d181303663a2dfd0477f1972b9 100644
+index 9c9c526dad5eb2552e458b3f3ad390bed55ff34b..7db751ad178e01f692452e0201c03891ce6eb299 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -803,6 +803,7 @@ public class PurpurWorldConfig {
+@@ -808,6 +808,7 @@ public class PurpurWorldConfig {
public boolean endermanControllable = true;
public double endermanMaxHealth = 40.0D;
public boolean endermanAllowGriefing = true;
@@ -32,7 +32,7 @@ index 3feffa81d9336c0c625934953522618007143d62..61e6085089b1e7d181303663a2dfd047
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -814,6 +815,7 @@ public class PurpurWorldConfig {
+@@ -819,6 +820,7 @@ public class PurpurWorldConfig {
}
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
diff --git a/patches/server/0115-Add-configurable-snowball-damage.patch b/patches/server/0115-Add-configurable-snowball-damage.patch
index 4d8d8bd2b..791fbe562 100644
--- a/patches/server/0115-Add-configurable-snowball-damage.patch
+++ b/patches/server/0115-Add-configurable-snowball-damage.patch
@@ -18,10 +18,10 @@ index a725851060f13e734dbd2fbf8c83c9e1af57a8b7..74f798baafc53cd7dd1d4f58bc9a3581
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 61e6085089b1e7d181303663a2dfd0477f1972b9..dfccdbbaa1bb6f3716c18e90f5464b42623e4fe4 100644
+index 7db751ad178e01f692452e0201c03891ce6eb299..0670df9d9ad1b62af6f2e14732cbe8da03fc78b9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -351,6 +351,11 @@ public class PurpurWorldConfig {
+@@ -356,6 +356,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch
index 10d904bd4..25dfe8f08 100644
--- a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch
+++ b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch
@@ -18,10 +18,10 @@ index fe97b5b327af1189b166243c42be99892226cd9e..5a907375d1497229d3b566b30c34248e
} else {
this.setLeftHanded(false);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index dfccdbbaa1bb6f3716c18e90f5464b42623e4fe4..2375db9b994ffbd7371e92731bdb31095d40f9f5 100644
+index 0670df9d9ad1b62af6f2e14732cbe8da03fc78b9..878c970e22cc983f21cd6c245993cac1aac09d18 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 {
+@@ -158,8 +158,10 @@ public class PurpurWorldConfig {
}
public int entityLifeSpan = 0;
diff --git a/patches/server/0117-Add-boat-fall-damage-config.patch b/patches/server/0117-Add-boat-fall-damage-config.patch
index 5bf43088d..e1aa095de 100644
--- a/patches/server/0117-Add-boat-fall-damage-config.patch
+++ b/patches/server/0117-Add-boat-fall-damage-config.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 8e5aa1666ca929780670ce513d969973a513e21e..fe2d7acece87d5b825f3f3668c11c0efc877439b 100644
+index 63b04bf9fc97554c309b8caac5cb942b9483208d..e9177d815c99450007ddfc9de59cebaa3ae74688 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1032,7 +1032,16 @@ public class ServerPlayer extends Player {
@@ -27,10 +27,10 @@ index 8e5aa1666ca929780670ce513d969973a513e21e..fe2d7acece87d5b825f3f3668c11c0ef
if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 2375db9b994ffbd7371e92731bdb31095d40f9f5..e23ff0ebd09937fcf7c32c2157717c8dff7727d7 100644
+index 878c970e22cc983f21cd6c245993cac1aac09d18..aab918a7d16977d11c7bc2b4befea5d306d2eeb1 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 {
+@@ -114,6 +114,7 @@ public class PurpurWorldConfig {
public boolean useBetterMending = false;
public boolean boatEjectPlayersOnLand = false;
@@ -38,7 +38,7 @@ index 2375db9b994ffbd7371e92731bdb31095d40f9f5..e23ff0ebd09937fcf7c32c2157717c8d
public boolean disableDropsOnCrammingDeath = false;
public boolean entitiesCanUsePortals = true;
public boolean milkCuresBadOmen = true;
-@@ -121,6 +122,7 @@ public class PurpurWorldConfig {
+@@ -126,6 +127,7 @@ public class PurpurWorldConfig {
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
diff --git a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch
index 1c61ae4dd..12855ff23 100644
--- a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch
+++ b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch
@@ -23,10 +23,10 @@ index b4459d68397cc5bac4f7ef79a2dfb18f3eb24f77..b9025929fcc89e72aa820953b91a6542
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 e23ff0ebd09937fcf7c32c2157717c8dff7727d7..8b3e3f49b69591c06657b99fc8f83c5d2f851989 100644
+index aab918a7d16977d11c7bc2b4befea5d306d2eeb1..55410b4879ce9463d17bbe832058c3526591d1d5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1587,6 +1587,10 @@ public class PurpurWorldConfig {
+@@ -1592,6 +1592,10 @@ public class PurpurWorldConfig {
public double snowGolemMaxHealth = 4.0D;
public boolean snowGolemDropsPumpkin = true;
public boolean snowGolemPutPumpkinBack = false;
@@ -37,7 +37,7 @@ index e23ff0ebd09937fcf7c32c2157717c8dff7727d7..8b3e3f49b69591c06657b99fc8f83c5d
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -1600,6 +1604,10 @@ public class PurpurWorldConfig {
+@@ -1605,6 +1609,10 @@ public class PurpurWorldConfig {
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin);
snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
diff --git a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
index bb097674b..4bf1f3874 100644
--- a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
+++ b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
@@ -181,10 +181,10 @@ index b1f20cb356e6b4e89fdddf4e48f2fd932bdb5170..352a7df156c638684a12a864eb5a9d06
public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN);
public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8b3e3f49b69591c06657b99fc8f83c5d2f851989..9046711e7b68567792962dc80f577253e0c8a9c4 100644
+index 55410b4879ce9463d17bbe832058c3526591d1d5..f49fed8ea48fd12c9958f327d080320d4bc63c7d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1779,6 +1779,8 @@ public class PurpurWorldConfig {
+@@ -1784,6 +1784,8 @@ public class PurpurWorldConfig {
public boolean villagerCanBeLeashed = false;
public boolean villagerCanBreed = true;
public int villagerBreedingTicks = 6000;
@@ -193,7 +193,7 @@ index 8b3e3f49b69591c06657b99fc8f83c5d2f851989..9046711e7b68567792962dc80f577253
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1795,6 +1797,8 @@ public class PurpurWorldConfig {
+@@ -1800,6 +1802,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/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
index a778a461e..98428739f 100644
--- a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
+++ b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
@@ -35,10 +35,10 @@ index 6c1dd723373f9b1b920548de85aeb6cef0120fa7..1f0003fb08a45af02e6d38e28fa548ab
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9046711e7b68567792962dc80f577253e0c8a9c4..77d5e5481db4a427bde6eca89fc9324f8692ea70 100644
+index f49fed8ea48fd12c9958f327d080320d4bc63c7d..e57795ebcc4128118108b3d4fa75f5f1c58fef1f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2025,6 +2025,7 @@ public class PurpurWorldConfig {
+@@ -2030,6 +2030,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinJockeyOnlyBaby = true;
public double zombifiedPiglinJockeyChance = 0.05D;
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
@@ -46,7 +46,7 @@ index 9046711e7b68567792962dc80f577253e0c8a9c4..77d5e5481db4a427bde6eca89fc9324f
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
-@@ -2039,5 +2040,6 @@ public class PurpurWorldConfig {
+@@ -2044,5 +2045,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/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch
index 577a0b6b2..4ad15ac21 100644
--- a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch
+++ b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch
@@ -222,10 +222,10 @@ index a3bec00368aef0f8cc6aa21cce1389938d15f91b..704667760ab1593647e3f03bdd17ad32
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 77d5e5481db4a427bde6eca89fc9324f8692ea70..e2a62c904424e80f955cff2706bef3688b10788e 100644
+index e57795ebcc4128118108b3d4fa75f5f1c58fef1f..500da626b279673fe1bdc4f485def10972d2f04b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1910,6 +1910,8 @@ public class PurpurWorldConfig {
+@@ -1915,6 +1915,8 @@ public class PurpurWorldConfig {
public boolean wolfRidableInWater = false;
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D;
@@ -234,7 +234,7 @@ index 77d5e5481db4a427bde6eca89fc9324f8692ea70..e2a62c904424e80f955cff2706bef368
public int wolfBreedingTicks = 6000;
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
-@@ -1921,6 +1923,8 @@ public class PurpurWorldConfig {
+@@ -1926,6 +1928,8 @@ public class PurpurWorldConfig {
set("mobs.wolf.attributes.max_health", oldValue);
}
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
diff --git a/patches/server/0124-Configurable-default-collar-color.patch b/patches/server/0124-Configurable-default-collar-color.patch
index 9b5fe4cf0..0d451ba9a 100644
--- a/patches/server/0124-Configurable-default-collar-color.patch
+++ b/patches/server/0124-Configurable-default-collar-color.patch
@@ -43,10 +43,10 @@ index f862d83db6127804b9254a33a73e6f186a1d1327..ffe8f80cfe3bec8fe79415015f529074
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e2a62c904424e80f955cff2706bef3688b10788e..5ebdba256037477332016336499074662f2badf0 100644
+index 500da626b279673fe1bdc4f485def10972d2f04b..8ac9551fb2c62f1ddbc3715ba1f1df3691981d78 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -591,6 +591,7 @@ public class PurpurWorldConfig {
+@@ -596,6 +596,7 @@ public class PurpurWorldConfig {
public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48;
public int catBreedingTicks = 6000;
@@ -54,7 +54,7 @@ index e2a62c904424e80f955cff2706bef3688b10788e..5ebdba25603747733201633649907466
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -605,6 +606,11 @@ public class PurpurWorldConfig {
+@@ -610,6 +611,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 e2a62c904424e80f955cff2706bef3688b10788e..5ebdba25603747733201633649907466
}
public boolean caveSpiderRidable = false;
-@@ -1910,6 +1916,7 @@ public class PurpurWorldConfig {
+@@ -1915,6 +1921,7 @@ public class PurpurWorldConfig {
public boolean wolfRidableInWater = false;
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D;
@@ -74,7 +74,7 @@ index e2a62c904424e80f955cff2706bef3688b10788e..5ebdba25603747733201633649907466
public boolean wolfMilkCuresRabies = true;
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
-@@ -1923,6 +1930,11 @@ public class PurpurWorldConfig {
+@@ -1928,6 +1935,11 @@ public class PurpurWorldConfig {
set("mobs.wolf.attributes.max_health", oldValue);
}
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
diff --git a/patches/server/0125-Phantom-flames-on-swoop.patch b/patches/server/0125-Phantom-flames-on-swoop.patch
index 5659ae5d2..1537f341a 100644
--- a/patches/server/0125-Phantom-flames-on-swoop.patch
+++ b/patches/server/0125-Phantom-flames-on-swoop.patch
@@ -17,10 +17,10 @@ index 82d56a6968f3bbea5a2d32c2a7a84a8ba36d3d15..f23ca987666fd23621d3d731fd1a4ab2
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5ebdba256037477332016336499074662f2badf0..79b0331ae3da328ed051daf8efc6e298b9a57a7e 100644
+index 8ac9551fb2c62f1ddbc3715ba1f1df3691981d78..d0e2861c9aa34734fce44a50b62b105236afecdd 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1275,6 +1275,7 @@ public class PurpurWorldConfig {
+@@ -1280,6 +1280,7 @@ public class PurpurWorldConfig {
public int phantomBurnInLight = 0;
public boolean phantomIgnorePlayersWithTorch = false;
public boolean phantomBurnInDaylight = true;
@@ -28,7 +28,7 @@ index 5ebdba256037477332016336499074662f2badf0..79b0331ae3da328ed051daf8efc6e298
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1314,6 +1315,7 @@ public class PurpurWorldConfig {
+@@ -1319,6 +1320,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/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch
index ce890d151..e8e8e508f 100644
--- a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch
+++ b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch
@@ -17,10 +17,10 @@ index c6b57d45383441aa35510e759ce3cb82bc98f305..330ff3bc5fd8625e37b79e1204eddbe8
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 79b0331ae3da328ed051daf8efc6e298b9a57a7e..e6da09c147c00e50176c41ce26b06ae34dedea9c 100644
+index d0e2861c9aa34734fce44a50b62b105236afecdd..b927cbf702ebd92c6d7b49ef62429aa94b7f6c37 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -413,6 +413,11 @@ public class PurpurWorldConfig {
+@@ -418,6 +418,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0128-Striders-give-saddle-back.patch b/patches/server/0128-Striders-give-saddle-back.patch
index 3b63f7f3d..fb3587982 100644
--- a/patches/server/0128-Striders-give-saddle-back.patch
+++ b/patches/server/0128-Striders-give-saddle-back.patch
@@ -29,10 +29,10 @@ index eb2083d67f9486a24d2f0aa4bf1f5ba8a00e23a3..df9d16a6493a57b6034cd56bf8dbe38f
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 e6da09c147c00e50176c41ce26b06ae34dedea9c..87f6a4c76e169c9f85d02eba46e6ca31a059b414 100644
+index b927cbf702ebd92c6d7b49ef62429aa94b7f6c37..ac310f473357c1332ecce47a6e1dd01f8267292e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1680,6 +1680,7 @@ public class PurpurWorldConfig {
+@@ -1685,6 +1685,7 @@ public class PurpurWorldConfig {
public boolean striderControllable = true;
public double striderMaxHealth = 20.0D;
public int striderBreedingTicks = 6000;
@@ -40,7 +40,7 @@ index e6da09c147c00e50176c41ce26b06ae34dedea9c..87f6a4c76e169c9f85d02eba46e6ca31
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -1691,6 +1692,7 @@ public class PurpurWorldConfig {
+@@ -1696,6 +1697,7 @@ public class PurpurWorldConfig {
}
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
diff --git a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch
index 513189f6e..92b97bab0 100644
--- a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch
+++ b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch
@@ -26,10 +26,10 @@ index e0ea8b1b3ccde9616a721d677a8217b25aadfefe..b416c8606ef53aa49458bb6f36689068
protected ItemCooldowns createItemCooldowns() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 87f6a4c76e169c9f85d02eba46e6ca31a059b414..aeb2d15277803a03eabcfb816664d6f9d168714f 100644
+index ac310f473357c1332ecce47a6e1dd01f8267292e..baf446b1dc8b4d6fe7180d27d94749052ce582d2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -292,6 +292,19 @@ public class PurpurWorldConfig {
+@@ -297,6 +297,19 @@ public class PurpurWorldConfig {
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);
}
diff --git a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch
index 6e27f5204..122d99743 100644
--- a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch
+++ b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 2b7d14e3de4520188c1701ac00044a64d8228aed..6a7a83a3fc58cbb7e97c0ba13715a8e6ea5f6de6 100644
+index d143f13465c5b81e2517953def8e17783bc9f013..d0be274950668f0ca66cda876fdb3af78ea40f52 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1716,7 +1716,7 @@ public abstract class LivingEntity extends Entity {
@@ -92,7 +92,7 @@ index bd0cbf4390fc7d00b4bd5008cdf8f6f49df4f69b..27e96c4c1377c49f03df032683aac32d
} else if (this.nextStartTick > 0) {
--this.nextStartTick;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-index aa18947d3822a1093985799e87ad6c2b28f51eb1..364863d14e7c0ac6dffa1ac5df5f1af5d820c700 100644
+index b2c901ed90fbf0ab79848d11f50d6f7a0b24bd6f..d64deacacb64dc0572fc0b5d559ddd833397ed47 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -1365,7 +1365,7 @@ public class Fox extends Animal {
@@ -131,7 +131,7 @@ index b9025929fcc89e72aa820953b91a65423878ba0f..edf4537f08a54e1a5b043927678bbddf
}
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
-index 9ce2527054f5163eae3d1216427378dcdf92a2fe..d655bd2ecce01a54695d135b12b2f930fa368ffe 100644
+index 6ccacd37f7602a759e47433a97ff54ff761c50fc..a639ebe2ea3f7fdc5367e0d2cec7a257c7cb4933 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -578,7 +578,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -393,10 +393,10 @@ index 1a12fee99a8b69fc6c01e1e217575c7c19e13155..4907e0acb7d01b7f57b75579e58ce743
return true;
// Purpur end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd5e10f991 100644
+index baf446b1dc8b4d6fe7180d27d94749052ce582d2..a8a55aeb4a3579efc2fd4b5c8da254d8fea1de43 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -112,8 +112,11 @@ public class PurpurWorldConfig {
+@@ -117,8 +117,11 @@ public class PurpurWorldConfig {
public boolean boatsDoFallDamage = true;
public boolean disableDropsOnCrammingDeath = false;
public boolean entitiesCanUsePortals = true;
@@ -408,7 +408,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
public double tridentLoyaltyVoidReturnHeight = 0.0D;
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
-@@ -125,8 +128,11 @@ public class PurpurWorldConfig {
+@@ -130,8 +133,11 @@ public class PurpurWorldConfig {
boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage);
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
@@ -420,7 +420,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
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);
-@@ -438,9 +444,11 @@ public class PurpurWorldConfig {
+@@ -443,9 +449,11 @@ public class PurpurWorldConfig {
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
@@ -432,7 +432,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha);
}
-@@ -467,6 +475,11 @@ public class PurpurWorldConfig {
+@@ -472,6 +480,11 @@ public class PurpurWorldConfig {
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
}
@@ -444,7 +444,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
public boolean respawnAnchorExplode = true;
public double respawnAnchorExplosionPower = 5.0D;
public boolean respawnAnchorExplosionFire = true;
-@@ -496,10 +509,12 @@ public class PurpurWorldConfig {
+@@ -501,10 +514,12 @@ public class PurpurWorldConfig {
public boolean turtleEggsBreakFromExpOrbs = true;
public boolean turtleEggsBreakFromItems = true;
public boolean turtleEggsBreakFromMinecarts = true;
@@ -457,7 +457,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean waterInfinite = true;
-@@ -707,6 +722,7 @@ public class PurpurWorldConfig {
+@@ -712,6 +727,7 @@ public class PurpurWorldConfig {
public double creeperMaxHealth = 20.0D;
public double creeperChargedChance = 0.0D;
public boolean creeperAllowGriefing = true;
@@ -465,7 +465,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -719,6 +735,7 @@ public class PurpurWorldConfig {
+@@ -724,6 +740,7 @@ public class PurpurWorldConfig {
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
@@ -473,7 +473,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean dolphinRidable = false;
-@@ -813,6 +830,7 @@ public class PurpurWorldConfig {
+@@ -818,6 +835,7 @@ public class PurpurWorldConfig {
public double enderDragonMaxY = 320D;
public double enderDragonMaxHealth = 200.0D;
public boolean enderDragonAlwaysDropsFullExp = false;
@@ -481,7 +481,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
-@@ -829,6 +847,7 @@ public class PurpurWorldConfig {
+@@ -834,6 +852,7 @@ public class PurpurWorldConfig {
}
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
@@ -489,7 +489,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean endermanRidable = false;
-@@ -837,6 +856,7 @@ public class PurpurWorldConfig {
+@@ -842,6 +861,7 @@ public class PurpurWorldConfig {
public double endermanMaxHealth = 40.0D;
public boolean endermanAllowGriefing = true;
public boolean endermanDespawnEvenWithBlock = false;
@@ -497,7 +497,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -849,6 +869,7 @@ public class PurpurWorldConfig {
+@@ -854,6 +874,7 @@ public class PurpurWorldConfig {
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
@@ -505,7 +505,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean endermiteRidable = false;
-@@ -871,6 +892,7 @@ public class PurpurWorldConfig {
+@@ -876,6 +897,7 @@ public class PurpurWorldConfig {
public boolean evokerRidableInWater = false;
public boolean evokerControllable = true;
public double evokerMaxHealth = 24.0D;
@@ -513,7 +513,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
-@@ -881,6 +903,7 @@ public class PurpurWorldConfig {
+@@ -886,6 +908,7 @@ public class PurpurWorldConfig {
set("mobs.evoker.attributes.max_health", oldValue);
}
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
@@ -521,7 +521,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean foxRidable = false;
-@@ -889,6 +912,7 @@ public class PurpurWorldConfig {
+@@ -894,6 +917,7 @@ public class PurpurWorldConfig {
public double foxMaxHealth = 10.0D;
public boolean foxTypeChangesWithTulips = false;
public int foxBreedingTicks = 6000;
@@ -529,7 +529,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -901,6 +925,7 @@ public class PurpurWorldConfig {
+@@ -906,6 +930,7 @@ public class PurpurWorldConfig {
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
@@ -537,7 +537,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean frogRidable = false;
-@@ -1360,6 +1385,7 @@ public class PurpurWorldConfig {
+@@ -1365,6 +1390,7 @@ public class PurpurWorldConfig {
public boolean piglinRidableInWater = false;
public boolean piglinControllable = true;
public double piglinMaxHealth = 16.0D;
@@ -545,7 +545,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -1370,6 +1396,7 @@ public class PurpurWorldConfig {
+@@ -1375,6 +1401,7 @@ public class PurpurWorldConfig {
set("mobs.piglin.attributes.max_health", oldValue);
}
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
@@ -553,7 +553,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean piglinBruteRidable = false;
-@@ -1392,6 +1419,7 @@ public class PurpurWorldConfig {
+@@ -1397,6 +1424,7 @@ public class PurpurWorldConfig {
public boolean pillagerRidableInWater = false;
public boolean pillagerControllable = true;
public double pillagerMaxHealth = 24.0D;
@@ -561,7 +561,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
-@@ -1402,6 +1430,7 @@ public class PurpurWorldConfig {
+@@ -1407,6 +1435,7 @@ public class PurpurWorldConfig {
set("mobs.pillager.attributes.max_health", oldValue);
}
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
@@ -569,7 +569,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean polarBearRidable = false;
-@@ -1448,6 +1477,7 @@ public class PurpurWorldConfig {
+@@ -1453,6 +1482,7 @@ public class PurpurWorldConfig {
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
public int rabbitBreedingTicks = 6000;
@@ -577,7 +577,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -1461,12 +1491,14 @@ public class PurpurWorldConfig {
+@@ -1466,12 +1496,14 @@ public class PurpurWorldConfig {
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
@@ -592,7 +592,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -1477,6 +1509,7 @@ public class PurpurWorldConfig {
+@@ -1482,6 +1514,7 @@ public class PurpurWorldConfig {
set("mobs.ravager.attributes.max_health", oldValue);
}
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
@@ -600,7 +600,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean salmonRidable = false;
-@@ -1498,6 +1531,7 @@ public class PurpurWorldConfig {
+@@ -1503,6 +1536,7 @@ public class PurpurWorldConfig {
public boolean sheepControllable = true;
public double sheepMaxHealth = 8.0D;
public int sheepBreedingTicks = 6000;
@@ -608,7 +608,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -1509,6 +1543,7 @@ public class PurpurWorldConfig {
+@@ -1514,6 +1548,7 @@ public class PurpurWorldConfig {
}
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
@@ -616,7 +616,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean shulkerRidable = false;
-@@ -1531,6 +1566,7 @@ public class PurpurWorldConfig {
+@@ -1536,6 +1571,7 @@ public class PurpurWorldConfig {
public boolean silverfishRidableInWater = false;
public boolean silverfishControllable = true;
public double silverfishMaxHealth = 8.0D;
@@ -624,7 +624,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
-@@ -1541,6 +1577,7 @@ public class PurpurWorldConfig {
+@@ -1546,6 +1582,7 @@ public class PurpurWorldConfig {
set("mobs.silverfish.attributes.max_health", oldValue);
}
silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth);
@@ -632,7 +632,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean skeletonRidable = false;
-@@ -1617,6 +1654,7 @@ public class PurpurWorldConfig {
+@@ -1622,6 +1659,7 @@ public class PurpurWorldConfig {
public int snowGolemSnowBallMax = 20;
public float snowGolemSnowBallModifier = 10.0F;
public double snowGolemAttackDistance = 1.25D;
@@ -640,7 +640,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -1634,6 +1672,7 @@ public class PurpurWorldConfig {
+@@ -1639,6 +1677,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);
@@ -648,7 +648,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean squidRidable = false;
-@@ -1809,6 +1848,7 @@ public class PurpurWorldConfig {
+@@ -1814,6 +1853,7 @@ public class PurpurWorldConfig {
public int villagerBreedingTicks = 6000;
public boolean villagerClericsFarmWarts = false;
public boolean villagerClericFarmersThrowWarts = true;
@@ -656,7 +656,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1827,6 +1867,7 @@ public class PurpurWorldConfig {
+@@ -1832,6 +1872,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);
@@ -664,7 +664,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean vindicatorRidable = false;
-@@ -1899,6 +1940,7 @@ public class PurpurWorldConfig {
+@@ -1904,6 +1945,7 @@ public class PurpurWorldConfig {
public double witherMaxHealth = 300.0D;
public float witherHealthRegenAmount = 1.0f;
public int witherHealthRegenDelay = 20;
@@ -672,7 +672,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -1916,6 +1958,7 @@ public class PurpurWorldConfig {
+@@ -1921,6 +1963,7 @@ public class PurpurWorldConfig {
witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth);
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
@@ -680,7 +680,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
}
public boolean witherSkeletonRidable = false;
-@@ -1987,6 +2030,7 @@ public class PurpurWorldConfig {
+@@ -1992,6 +2035,7 @@ public class PurpurWorldConfig {
public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true;
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
@@ -688,7 +688,7 @@ index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2002,6 +2046,7 @@ public class PurpurWorldConfig {
+@@ -2007,6 +2051,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/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch
index 53cf80620..62c0199d3 100644
--- a/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch
+++ b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch
@@ -22,10 +22,10 @@ index 58e8905a4b98e2e1ee372b99bdc3de9815063ac9..443bf39734ba2b0a7cdf0362d415ff17
// org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, blockposition, data.getValue(NoteBlock.INSTRUMENT), data.getValue(NoteBlock.NOTE)); // Paper - move event into block event handler
// if (event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8371e153e55020ffd855f5cb876e3edd5e10f991..f856cdf0d762426cdd316dcaf935f6ca0b502f62 100644
+index a8a55aeb4a3579efc2fd4b5c8da254d8fea1de43..58d0da89c65187ca48f7444d7c5099778e64603f 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 {
+@@ -120,6 +120,7 @@ public class PurpurWorldConfig {
public boolean entitiesPickUpLootBypassMobGriefing = false;
public boolean fireballsBypassMobGriefing = false;
public boolean milkCuresBadOmen = true;
@@ -33,7 +33,7 @@ index 8371e153e55020ffd855f5cb876e3edd5e10f991..f856cdf0d762426cdd316dcaf935f6ca
public boolean persistentDroppableEntityDisplayNames = false;
public boolean projectilesBypassMobGriefing = false;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
-@@ -131,6 +132,7 @@ public class PurpurWorldConfig {
+@@ -136,6 +137,7 @@ public class PurpurWorldConfig {
entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
diff --git a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch
index 8712a9c7d..47da6966f 100644
--- a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch
+++ b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch
@@ -108,10 +108,10 @@ index e8ec6547c11248a2bcc92bbd6226a264f3a51234..4487aef74152b0630a766293516135b3
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 3162db5d2917cee090cc9fe1490ee740130d0e0e..1d573d843279d857788a77261007087586a3d293 100644
+index 58d0da89c65187ca48f7444d7c5099778e64603f..5826bcc362aec1a867b18fe9b79aae645639e592 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -114,6 +114,7 @@ public class PurpurWorldConfig {
+@@ -119,6 +119,7 @@ public class PurpurWorldConfig {
public boolean entitiesCanUsePortals = true;
public boolean entitiesPickUpLootBypassMobGriefing = false;
public boolean fireballsBypassMobGriefing = false;
@@ -119,7 +119,7 @@ index 3162db5d2917cee090cc9fe1490ee740130d0e0e..1d573d843279d857788a772610070875
public boolean milkCuresBadOmen = true;
public boolean noteBlockIgnoreAbove = false;
public boolean persistentDroppableEntityDisplayNames = false;
-@@ -131,6 +132,7 @@ public class PurpurWorldConfig {
+@@ -136,6 +137,7 @@ public class PurpurWorldConfig {
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
diff --git a/patches/server/0135-Farmland-trampling-changes.patch b/patches/server/0135-Farmland-trampling-changes.patch
index 2dca796d4..0b07b64b2 100644
--- a/patches/server/0135-Farmland-trampling-changes.patch
+++ b/patches/server/0135-Farmland-trampling-changes.patch
@@ -37,10 +37,10 @@ index d92ea9f29b9d919871662977d3e3eb41ddf2eb35..e5a3e3a4367dfb924624a913b816b3fd
if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) {
return;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 53a2926f0437b84c7da7fa5beee5d20d97a20966..8821ac74c9999235bbfc9e5d480f78f6c3edba35 100644
+index 5826bcc362aec1a867b18fe9b79aae645639e592..e50b23491b8936da4d0742045d0bb4345ed295ab 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -451,10 +451,16 @@ public class PurpurWorldConfig {
+@@ -456,10 +456,16 @@ public class PurpurWorldConfig {
public boolean farmlandBypassMobGriefing = false;
public boolean farmlandGetsMoistFromBelow = false;
public boolean farmlandAlpha = false;
diff --git a/patches/server/0136-Movement-options-for-armor-stands.patch b/patches/server/0136-Movement-options-for-armor-stands.patch
index c2c2f1781..36627629b 100644
--- a/patches/server/0136-Movement-options-for-armor-stands.patch
+++ b/patches/server/0136-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 63887de35be7b1b9076bc509b92af0b860886310..46a01989cd2d10ac4f41c7c0a86b0e915e6dbe90 100644
+index 5d39aea49eec745f5596154bc69b01a87b1813dc..f5d9fe446de93e3b2c99198c6959280a1cf8443e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1723,7 +1723,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -66,7 +66,7 @@ index 9dcb46959c723723a369cde50427cbee0349f5a1..6bd31ed84049bc36a060b5e01b0599bf
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b4da08402c7b7152cae2d1e1df9a5f35cf1c490f..804a90cfb82d194de5b0f985e04a1fa7f89c29b0 100644
+index e50b23491b8936da4d0742045d0bb4345ed295ab..01950a7b0b6a6f0959a72f8dcebae71e8e837195 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -101,10 +101,16 @@ public class PurpurWorldConfig {
@@ -85,4 +85,4 @@ index b4da08402c7b7152cae2d1e1df9a5f35cf1c490f..804a90cfb82d194de5b0f985e04a1fa7
+ armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence);
}
- public boolean useBetterMending = false;
+ public boolean arrowMovementResetsDespawnCounter = true;
diff --git a/patches/server/0137-Fix-stuck-in-portals.patch b/patches/server/0137-Fix-stuck-in-portals.patch
index 18ad75c55..9b0feeda4 100644
--- a/patches/server/0137-Fix-stuck-in-portals.patch
+++ b/patches/server/0137-Fix-stuck-in-portals.patch
@@ -5,7 +5,7 @@ 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 1de4f239dfb63250b7143e89e97487d048b99776..bc5d5a2a48cfc6b4257d1cc3ac73d8ec5300721d 100644
+index 7d7fc0bc857d39cd447f9669d1bd780e64846645..5d10e3f3990de7b3667de02cb515039bfbb6d815 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1185,6 +1185,7 @@ public class ServerPlayer extends Player {
@@ -17,7 +17,7 @@ index 1de4f239dfb63250b7143e89e97487d048b99776..bc5d5a2a48cfc6b4257d1cc3ac73d8ec
// CraftBukkit end
this.setLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 46a01989cd2d10ac4f41c7c0a86b0e915e6dbe90..3753502af217ed6d06f03d250a069b1e0be7ebe5 100644
+index f5d9fe446de93e3b2c99198c6959280a1cf8443e..aa477068e28a4070a26aa08e09d614bbf6fd01ab 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2879,12 +2879,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -37,10 +37,10 @@ index 46a01989cd2d10ac4f41c7c0a86b0e915e6dbe90..3753502af217ed6d06f03d250a069b1e
this.isInsidePortal = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 804a90cfb82d194de5b0f985e04a1fa7f89c29b0..a9654a4935c625852070255e443c669bd80d332a 100644
+index 01950a7b0b6a6f0959a72f8dcebae71e8e837195..bb1127f369de525430687ec1dc46cc56b5df7fc7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -332,6 +332,7 @@ public class PurpurWorldConfig {
+@@ -337,6 +337,7 @@ public class PurpurWorldConfig {
public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false;
public boolean totemOfUndyingWorksInInventory = false;
@@ -48,7 +48,7 @@ index 804a90cfb82d194de5b0f985e04a1fa7f89c29b0..a9654a4935c625852070255e443c669b
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -349,6 +350,7 @@ public class PurpurWorldConfig {
+@@ -354,6 +355,7 @@ public class PurpurWorldConfig {
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
diff --git a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch
index a8cca19d2..e90e0cb03 100644
--- a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch
+++ b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch
@@ -37,7 +37,7 @@ index 007c945725721ddb8a3dc4b8085e8c68da741b93..53ef2004d1b6acaf27fef9a658fff99b
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index f9ae9bf91026adcb205302e0f902dda44febb744..6bcdc433ab80be133cfb56beda8b01d995ace7af 100644
+index eaff4f966b4d82749df9e96246c078301fd4801b..2cea3d633209665d0cab2b211b817e3bbd61d3a2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -176,7 +176,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -126,7 +126,7 @@ index b063a74327e51b3cd27427426b92ef687c59c94b..00eec3f51e62858e7b85b3340e76bf66
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
-index b52245d881186f91174819326abb0cf98acb0997..1e95fa49a5dc8b756756924cbaf12d49ad33a274 100644
+index a8ca2d120a545d423fc00aef5299b66b1636b6d3..b0c933644c1f4b5aa142c7c4d26a9b81cb4051f7 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -162,6 +162,11 @@ public class Dolphin extends WaterAnimal {
@@ -142,7 +142,7 @@ index b52245d881186f91174819326abb0cf98acb0997..1e95fa49a5dc8b756756924cbaf12d49
@Nullable
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-index 364863d14e7c0ac6dffa1ac5df5f1af5d820c700..8e04d20c0f1038dbe1c8e7f05242f66e95ec5a38 100644
+index d64deacacb64dc0572fc0b5d559ddd833397ed47..41690949a990a753a24e6c27595cb0b50a52e0a8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -188,6 +188,11 @@ public class Fox extends Animal {
@@ -427,7 +427,7 @@ index 6d444248b9e283e31d5777d450a52643cc84f59b..83eef99d7f24634e301a51d2825370c9
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
-index 47c08d7f3e30aa335fb7c43179679b6ae9f23952..60b40bf64de5562d124857614f3ebe7b505a59f1 100644
+index 59caabbe84a24ea47796ae71130961dff146a76f..ae50bb7e86cddd95a0b49a89682083994ddf14ef 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -114,6 +114,11 @@ public class Goat extends Animal {
@@ -555,7 +555,7 @@ index a2636f6e4767d408ef9d2cda4c346abdaa88da37..6d1938f1cbad394f218b36ec8958d5e7
public static AttributeSupplier.Builder createAttributes() {
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
-index d655bd2ecce01a54695d135b12b2f930fa368ffe..a9e07815fdde8509267c48d41d0e5fd5a38a93da 100644
+index a639ebe2ea3f7fdc5367e0d2cec7a257c7cb4933..23e5ab0e3b99659d30d8139dc005a714741a97c7 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -165,6 +165,11 @@ public class EnderDragon extends Mob implements Enemy {
@@ -1085,7 +1085,7 @@ index efe74738b5a90f822901488aa99f981029416fb5..f2900d76e9577c83be377500f7d7e7f4
@Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
-index d666b552023ebd5c3155a094a96a362e239100d1..c90cf19a4c29aa33c96a67bfab24cbbb56d783da 100644
+index 6e25ec59c6b15f8a6ed313bbf8c5472744c81e15..aed21936435edcc83c8da714910132157fa57aa6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -118,6 +118,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -1197,10 +1197,10 @@ index 8756e0d8d0077308f5fb74bf45fe093d0f043c99..6dd8856816bebb2766203589048cc68b
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4afc370f73a 100644
+index bb1127f369de525430687ec1dc46cc56b5df7fc7..4e4a625fe34913d89bd933eeae15944ecba0df8a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -564,11 +564,13 @@ public class PurpurWorldConfig {
+@@ -569,11 +569,13 @@ public class PurpurWorldConfig {
public boolean axolotlControllable = true;
public double axolotlMaxHealth = 14.0D;
public int axolotlBreedingTicks = 6000;
@@ -1214,7 +1214,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean batRidable = false;
-@@ -583,6 +585,7 @@ public class PurpurWorldConfig {
+@@ -588,6 +590,7 @@ public class PurpurWorldConfig {
public double batArmor = 0.0D;
public double batArmorToughness = 0.0D;
public double batAttackKnockback = 0.0D;
@@ -1222,7 +1222,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void batSettings() {
batRidable = getBoolean("mobs.bat.ridable", batRidable);
batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater);
-@@ -594,6 +597,7 @@ public class PurpurWorldConfig {
+@@ -599,6 +602,7 @@ public class PurpurWorldConfig {
set("mobs.bat.attributes.max_health", oldValue);
}
batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth);
@@ -1230,7 +1230,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean beeRidable = false;
-@@ -602,6 +606,7 @@ public class PurpurWorldConfig {
+@@ -607,6 +611,7 @@ public class PurpurWorldConfig {
public double beeMaxY = 320D;
public double beeMaxHealth = 10.0D;
public int beeBreedingTicks = 6000;
@@ -1238,7 +1238,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -614,6 +619,7 @@ public class PurpurWorldConfig {
+@@ -619,6 +624,7 @@ public class PurpurWorldConfig {
}
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
@@ -1246,7 +1246,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean blazeRidable = false;
-@@ -621,6 +627,7 @@ public class PurpurWorldConfig {
+@@ -626,6 +632,7 @@ public class PurpurWorldConfig {
public boolean blazeControllable = true;
public double blazeMaxY = 320D;
public double blazeMaxHealth = 20.0D;
@@ -1254,7 +1254,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void blazeSettings() {
blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable);
blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater);
-@@ -632,6 +639,7 @@ public class PurpurWorldConfig {
+@@ -637,6 +644,7 @@ public class PurpurWorldConfig {
set("mobs.blaze.attributes.max_health", oldValue);
}
blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth);
@@ -1262,7 +1262,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean catRidable = false;
-@@ -643,6 +651,7 @@ public class PurpurWorldConfig {
+@@ -648,6 +656,7 @@ public class PurpurWorldConfig {
public int catSpawnVillageScanRange = 48;
public int catBreedingTicks = 6000;
public DyeColor catDefaultCollarColor = DyeColor.RED;
@@ -1270,7 +1270,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -662,12 +671,14 @@ public class PurpurWorldConfig {
+@@ -667,12 +676,14 @@ public class PurpurWorldConfig {
} catch (IllegalArgumentException ignore) {
catDefaultCollarColor = DyeColor.RED;
}
@@ -1285,7 +1285,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void caveSpiderSettings() {
caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable);
caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater);
-@@ -678,6 +689,7 @@ public class PurpurWorldConfig {
+@@ -683,6 +694,7 @@ public class PurpurWorldConfig {
set("mobs.cave_spider.attributes.max_health", oldValue);
}
caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth);
@@ -1293,7 +1293,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean chickenRidable = false;
-@@ -686,6 +698,7 @@ public class PurpurWorldConfig {
+@@ -691,6 +703,7 @@ public class PurpurWorldConfig {
public double chickenMaxHealth = 4.0D;
public boolean chickenRetaliate = false;
public int chickenBreedingTicks = 6000;
@@ -1301,7 +1301,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
-@@ -698,11 +711,13 @@ public class PurpurWorldConfig {
+@@ -703,11 +716,13 @@ public class PurpurWorldConfig {
chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth);
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks);
@@ -1315,7 +1315,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void codSettings() {
codRidable = getBoolean("mobs.cod.ridable", codRidable);
codControllable = getBoolean("mobs.cod.controllable", codControllable);
-@@ -712,6 +727,7 @@ public class PurpurWorldConfig {
+@@ -717,6 +732,7 @@ public class PurpurWorldConfig {
set("mobs.cod.attributes.max_health", oldValue);
}
codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth);
@@ -1323,7 +1323,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean cowRidable = false;
-@@ -720,6 +736,7 @@ public class PurpurWorldConfig {
+@@ -725,6 +741,7 @@ public class PurpurWorldConfig {
public double cowMaxHealth = 10.0D;
public int cowFeedMushrooms = 0;
public int cowBreedingTicks = 6000;
@@ -1331,7 +1331,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void cowSettings() {
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
-@@ -732,6 +749,7 @@ public class PurpurWorldConfig {
+@@ -737,6 +754,7 @@ public class PurpurWorldConfig {
cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks);
@@ -1339,7 +1339,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean creeperRidable = false;
-@@ -741,6 +759,7 @@ public class PurpurWorldConfig {
+@@ -746,6 +764,7 @@ public class PurpurWorldConfig {
public double creeperChargedChance = 0.0D;
public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false;
@@ -1347,7 +1347,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -754,6 +773,7 @@ public class PurpurWorldConfig {
+@@ -759,6 +778,7 @@ public class PurpurWorldConfig {
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
@@ -1355,7 +1355,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean dolphinRidable = false;
-@@ -763,6 +783,7 @@ public class PurpurWorldConfig {
+@@ -768,6 +788,7 @@ public class PurpurWorldConfig {
public float dolphinSpitDamage = 2.0F;
public double dolphinMaxHealth = 10.0D;
public boolean dolphinDisableTreasureSearching = false;
@@ -1363,7 +1363,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -776,6 +797,7 @@ public class PurpurWorldConfig {
+@@ -781,6 +802,7 @@ public class PurpurWorldConfig {
}
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
@@ -1371,7 +1371,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean donkeyRidableInWater = false;
-@@ -786,6 +808,7 @@ public class PurpurWorldConfig {
+@@ -791,6 +813,7 @@ public class PurpurWorldConfig {
public double donkeyMovementSpeedMin = 0.175D;
public double donkeyMovementSpeedMax = 0.175D;
public int donkeyBreedingTicks = 6000;
@@ -1379,7 +1379,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -802,6 +825,7 @@ public class PurpurWorldConfig {
+@@ -807,6 +830,7 @@ public class PurpurWorldConfig {
donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin);
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks);
@@ -1387,7 +1387,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean drownedRidable = false;
-@@ -812,6 +836,7 @@ public class PurpurWorldConfig {
+@@ -817,6 +841,7 @@ public class PurpurWorldConfig {
public boolean drownedJockeyOnlyBaby = true;
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
@@ -1395,7 +1395,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
-@@ -826,11 +851,13 @@ public class PurpurWorldConfig {
+@@ -831,11 +856,13 @@ public class PurpurWorldConfig {
drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby);
drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance);
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
@@ -1409,7 +1409,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void elderGuardianSettings() {
elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable);
elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable);
-@@ -840,6 +867,7 @@ public class PurpurWorldConfig {
+@@ -845,6 +872,7 @@ public class PurpurWorldConfig {
set("mobs.elder_guardian.attributes.max_health", oldValue);
}
elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth);
@@ -1417,7 +1417,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean enderDragonRidable = false;
-@@ -849,6 +877,7 @@ public class PurpurWorldConfig {
+@@ -854,6 +882,7 @@ public class PurpurWorldConfig {
public double enderDragonMaxHealth = 200.0D;
public boolean enderDragonAlwaysDropsFullExp = false;
public boolean enderDragonBypassMobGriefing = false;
@@ -1425,7 +1425,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
-@@ -866,6 +895,7 @@ public class PurpurWorldConfig {
+@@ -871,6 +900,7 @@ public class PurpurWorldConfig {
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
@@ -1433,7 +1433,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean endermanRidable = false;
-@@ -875,6 +905,7 @@ public class PurpurWorldConfig {
+@@ -880,6 +910,7 @@ public class PurpurWorldConfig {
public boolean endermanAllowGriefing = true;
public boolean endermanDespawnEvenWithBlock = false;
public boolean endermanBypassMobGriefing = false;
@@ -1441,7 +1441,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -888,12 +919,14 @@ public class PurpurWorldConfig {
+@@ -893,12 +924,14 @@ public class PurpurWorldConfig {
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing);
@@ -1456,7 +1456,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void endermiteSettings() {
endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable);
endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater);
-@@ -904,6 +937,7 @@ public class PurpurWorldConfig {
+@@ -909,6 +942,7 @@ public class PurpurWorldConfig {
set("mobs.endermite.attributes.max_health", oldValue);
}
endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth);
@@ -1464,7 +1464,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean evokerRidable = false;
-@@ -911,6 +945,7 @@ public class PurpurWorldConfig {
+@@ -916,6 +950,7 @@ public class PurpurWorldConfig {
public boolean evokerControllable = true;
public double evokerMaxHealth = 24.0D;
public boolean evokerBypassMobGriefing = false;
@@ -1472,7 +1472,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
-@@ -922,6 +957,7 @@ public class PurpurWorldConfig {
+@@ -927,6 +962,7 @@ public class PurpurWorldConfig {
}
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing);
@@ -1480,7 +1480,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean foxRidable = false;
-@@ -931,6 +967,7 @@ public class PurpurWorldConfig {
+@@ -936,6 +972,7 @@ public class PurpurWorldConfig {
public boolean foxTypeChangesWithTulips = false;
public int foxBreedingTicks = 6000;
public boolean foxBypassMobGriefing = false;
@@ -1488,7 +1488,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -944,6 +981,7 @@ public class PurpurWorldConfig {
+@@ -949,6 +986,7 @@ public class PurpurWorldConfig {
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing);
@@ -1496,7 +1496,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean frogRidable = false;
-@@ -964,6 +1002,7 @@ public class PurpurWorldConfig {
+@@ -969,6 +1007,7 @@ public class PurpurWorldConfig {
public boolean ghastControllable = true;
public double ghastMaxY = 320D;
public double ghastMaxHealth = 10.0D;
@@ -1504,7 +1504,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void ghastSettings() {
ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable);
ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater);
-@@ -975,6 +1014,7 @@ public class PurpurWorldConfig {
+@@ -980,6 +1019,7 @@ public class PurpurWorldConfig {
set("mobs.ghast.attributes.max_health", oldValue);
}
ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth);
@@ -1512,7 +1512,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean giantRidable = false;
-@@ -987,6 +1027,7 @@ public class PurpurWorldConfig {
+@@ -992,6 +1032,7 @@ public class PurpurWorldConfig {
public float giantJumpHeight = 1.0F;
public boolean giantHaveAI = false;
public boolean giantHaveHostileAI = false;
@@ -1520,7 +1520,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void giantSettings() {
giantRidable = getBoolean("mobs.giant.ridable", giantRidable);
giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater);
-@@ -1007,17 +1048,20 @@ public class PurpurWorldConfig {
+@@ -1012,17 +1053,20 @@ public class PurpurWorldConfig {
giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight);
giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI);
giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI);
@@ -1541,7 +1541,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean goatRidable = false;
-@@ -1025,17 +1069,20 @@ public class PurpurWorldConfig {
+@@ -1030,17 +1074,20 @@ public class PurpurWorldConfig {
public boolean goatControllable = true;
public double goatMaxHealth = 10.0D;
public int goatBreedingTicks = 6000;
@@ -1562,7 +1562,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void guardianSettings() {
guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable);
guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable);
-@@ -1045,6 +1092,7 @@ public class PurpurWorldConfig {
+@@ -1050,6 +1097,7 @@ public class PurpurWorldConfig {
set("mobs.guardian.attributes.max_health", oldValue);
}
guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth);
@@ -1570,7 +1570,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean hoglinRidable = false;
-@@ -1052,6 +1100,7 @@ public class PurpurWorldConfig {
+@@ -1057,6 +1105,7 @@ public class PurpurWorldConfig {
public boolean hoglinControllable = true;
public double hoglinMaxHealth = 40.0D;
public int hoglinBreedingTicks = 6000;
@@ -1578,7 +1578,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
-@@ -1063,6 +1112,7 @@ public class PurpurWorldConfig {
+@@ -1068,6 +1117,7 @@ public class PurpurWorldConfig {
}
hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth);
hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks);
@@ -1586,7 +1586,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean horseRidableInWater = false;
-@@ -1073,6 +1123,7 @@ public class PurpurWorldConfig {
+@@ -1078,6 +1128,7 @@ public class PurpurWorldConfig {
public double horseMovementSpeedMin = 0.1125D;
public double horseMovementSpeedMax = 0.3375D;
public int horseBreedingTicks = 6000;
@@ -1594,7 +1594,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1089,6 +1140,7 @@ public class PurpurWorldConfig {
+@@ -1094,6 +1145,7 @@ public class PurpurWorldConfig {
horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin);
horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax);
horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks);
@@ -1602,7 +1602,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean huskRidable = false;
-@@ -1099,6 +1151,7 @@ public class PurpurWorldConfig {
+@@ -1104,6 +1156,7 @@ public class PurpurWorldConfig {
public boolean huskJockeyOnlyBaby = true;
public double huskJockeyChance = 0.05D;
public boolean huskJockeyTryExistingChickens = true;
@@ -1610,7 +1610,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
-@@ -1113,6 +1166,7 @@ public class PurpurWorldConfig {
+@@ -1118,6 +1171,7 @@ public class PurpurWorldConfig {
huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby);
huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance);
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
@@ -1618,7 +1618,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean illusionerRidable = false;
-@@ -1121,6 +1175,7 @@ public class PurpurWorldConfig {
+@@ -1126,6 +1180,7 @@ public class PurpurWorldConfig {
public double illusionerMovementSpeed = 0.5D;
public double illusionerFollowRange = 18.0D;
public double illusionerMaxHealth = 32.0D;
@@ -1626,7 +1626,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void illusionerSettings() {
illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable);
illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater);
-@@ -1137,6 +1192,7 @@ public class PurpurWorldConfig {
+@@ -1142,6 +1197,7 @@ public class PurpurWorldConfig {
set("mobs.illusioner.attributes.max_health", oldValue);
}
illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth);
@@ -1634,7 +1634,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean ironGolemRidable = false;
-@@ -1144,6 +1200,7 @@ public class PurpurWorldConfig {
+@@ -1149,6 +1205,7 @@ public class PurpurWorldConfig {
public boolean ironGolemControllable = true;
public boolean ironGolemCanSwim = false;
public double ironGolemMaxHealth = 100.0D;
@@ -1642,7 +1642,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
-@@ -1155,6 +1212,7 @@ public class PurpurWorldConfig {
+@@ -1160,6 +1217,7 @@ public class PurpurWorldConfig {
set("mobs.iron_golem.attributes.max_health", oldValue);
}
ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth);
@@ -1650,7 +1650,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean llamaRidable = false;
-@@ -1167,6 +1225,7 @@ public class PurpurWorldConfig {
+@@ -1172,6 +1230,7 @@ public class PurpurWorldConfig {
public double llamaMovementSpeedMin = 0.175D;
public double llamaMovementSpeedMax = 0.175D;
public int llamaBreedingTicks = 6000;
@@ -1658,7 +1658,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1185,6 +1244,7 @@ public class PurpurWorldConfig {
+@@ -1190,6 +1249,7 @@ public class PurpurWorldConfig {
llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin);
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
@@ -1666,7 +1666,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean magmaCubeRidable = false;
-@@ -1194,6 +1254,7 @@ public class PurpurWorldConfig {
+@@ -1199,6 +1259,7 @@ public class PurpurWorldConfig {
public String magmaCubeAttackDamage = "size";
public Map magmaCubeMaxHealthCache = new HashMap<>();
public Map magmaCubeAttackDamageCache = new HashMap<>();
@@ -1674,7 +1674,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void magmaCubeSettings() {
magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable);
magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater);
-@@ -1207,6 +1268,7 @@ public class PurpurWorldConfig {
+@@ -1212,6 +1273,7 @@ public class PurpurWorldConfig {
magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage);
magmaCubeMaxHealthCache.clear();
magmaCubeAttackDamageCache.clear();
@@ -1682,7 +1682,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean mooshroomRidable = false;
-@@ -1214,6 +1276,7 @@ public class PurpurWorldConfig {
+@@ -1219,6 +1281,7 @@ public class PurpurWorldConfig {
public boolean mooshroomControllable = true;
public double mooshroomMaxHealth = 10.0D;
public int mooshroomBreedingTicks = 6000;
@@ -1690,7 +1690,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
-@@ -1225,6 +1288,7 @@ public class PurpurWorldConfig {
+@@ -1230,6 +1293,7 @@ public class PurpurWorldConfig {
}
mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth);
mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks);
@@ -1698,7 +1698,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean muleRidableInWater = false;
-@@ -1235,6 +1299,7 @@ public class PurpurWorldConfig {
+@@ -1240,6 +1304,7 @@ public class PurpurWorldConfig {
public double muleMovementSpeedMin = 0.175D;
public double muleMovementSpeedMax = 0.175D;
public int muleBreedingTicks = 6000;
@@ -1706,7 +1706,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1251,6 +1316,7 @@ public class PurpurWorldConfig {
+@@ -1256,6 +1321,7 @@ public class PurpurWorldConfig {
muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin);
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks);
@@ -1714,7 +1714,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean ocelotRidable = false;
-@@ -1258,6 +1324,7 @@ public class PurpurWorldConfig {
+@@ -1263,6 +1329,7 @@ public class PurpurWorldConfig {
public boolean ocelotControllable = true;
public double ocelotMaxHealth = 10.0D;
public int ocelotBreedingTicks = 6000;
@@ -1722,7 +1722,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -1269,6 +1336,7 @@ public class PurpurWorldConfig {
+@@ -1274,6 +1341,7 @@ public class PurpurWorldConfig {
}
ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth);
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
@@ -1730,7 +1730,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean pandaRidable = false;
-@@ -1276,6 +1344,7 @@ public class PurpurWorldConfig {
+@@ -1281,6 +1349,7 @@ public class PurpurWorldConfig {
public boolean pandaControllable = true;
public double pandaMaxHealth = 20.0D;
public int pandaBreedingTicks = 6000;
@@ -1738,7 +1738,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
-@@ -1287,6 +1356,7 @@ public class PurpurWorldConfig {
+@@ -1292,6 +1361,7 @@ public class PurpurWorldConfig {
}
pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth);
pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks);
@@ -1746,7 +1746,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean parrotRidable = false;
-@@ -1294,6 +1364,7 @@ public class PurpurWorldConfig {
+@@ -1299,6 +1369,7 @@ public class PurpurWorldConfig {
public boolean parrotControllable = true;
public double parrotMaxY = 320D;
public double parrotMaxHealth = 6.0D;
@@ -1754,7 +1754,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
-@@ -1305,6 +1376,7 @@ public class PurpurWorldConfig {
+@@ -1310,6 +1381,7 @@ public class PurpurWorldConfig {
set("mobs.parrot.attributes.max_health", oldValue);
}
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
@@ -1762,7 +1762,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean phantomRidable = false;
-@@ -1337,6 +1409,7 @@ public class PurpurWorldConfig {
+@@ -1342,6 +1414,7 @@ public class PurpurWorldConfig {
public boolean phantomIgnorePlayersWithTorch = false;
public boolean phantomBurnInDaylight = true;
public boolean phantomFlamesOnSwoop = false;
@@ -1770,7 +1770,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1377,6 +1450,7 @@ public class PurpurWorldConfig {
+@@ -1382,6 +1455,7 @@ public class PurpurWorldConfig {
phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight);
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
@@ -1778,7 +1778,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean pigRidable = false;
-@@ -1385,6 +1459,7 @@ public class PurpurWorldConfig {
+@@ -1390,6 +1464,7 @@ public class PurpurWorldConfig {
public double pigMaxHealth = 10.0D;
public boolean pigGiveSaddleBack = false;
public int pigBreedingTicks = 6000;
@@ -1786,7 +1786,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
-@@ -1397,6 +1472,7 @@ public class PurpurWorldConfig {
+@@ -1402,6 +1477,7 @@ public class PurpurWorldConfig {
pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth);
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks);
@@ -1794,7 +1794,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean piglinRidable = false;
-@@ -1404,6 +1480,7 @@ public class PurpurWorldConfig {
+@@ -1409,6 +1485,7 @@ public class PurpurWorldConfig {
public boolean piglinControllable = true;
public double piglinMaxHealth = 16.0D;
public boolean piglinBypassMobGriefing = false;
@@ -1802,7 +1802,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -1415,12 +1492,14 @@ public class PurpurWorldConfig {
+@@ -1420,12 +1497,14 @@ public class PurpurWorldConfig {
}
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
@@ -1817,7 +1817,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void piglinBruteSettings() {
piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable);
piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater);
-@@ -1431,6 +1510,7 @@ public class PurpurWorldConfig {
+@@ -1436,6 +1515,7 @@ public class PurpurWorldConfig {
set("mobs.piglin_brute.attributes.max_health", oldValue);
}
piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth);
@@ -1825,7 +1825,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean pillagerRidable = false;
-@@ -1438,6 +1518,7 @@ public class PurpurWorldConfig {
+@@ -1443,6 +1523,7 @@ public class PurpurWorldConfig {
public boolean pillagerControllable = true;
public double pillagerMaxHealth = 24.0D;
public boolean pillagerBypassMobGriefing = false;
@@ -1833,7 +1833,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
-@@ -1449,6 +1530,7 @@ public class PurpurWorldConfig {
+@@ -1454,6 +1535,7 @@ public class PurpurWorldConfig {
}
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing);
@@ -1841,7 +1841,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean polarBearRidable = false;
-@@ -1458,6 +1540,7 @@ public class PurpurWorldConfig {
+@@ -1463,6 +1545,7 @@ public class PurpurWorldConfig {
public String polarBearBreedableItemString = "";
public Item polarBearBreedableItem = null;
public int polarBearBreedingTicks = 6000;
@@ -1849,7 +1849,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
-@@ -1472,11 +1555,13 @@ public class PurpurWorldConfig {
+@@ -1477,11 +1560,13 @@ public class PurpurWorldConfig {
Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString));
if (item != Items.AIR) polarBearBreedableItem = item;
polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks);
@@ -1863,7 +1863,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void pufferfishSettings() {
pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable);
pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable);
-@@ -1486,6 +1571,7 @@ public class PurpurWorldConfig {
+@@ -1491,6 +1576,7 @@ public class PurpurWorldConfig {
set("mobs.pufferfish.attributes.max_health", oldValue);
}
pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth);
@@ -1871,7 +1871,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean rabbitRidable = false;
-@@ -1496,6 +1582,7 @@ public class PurpurWorldConfig {
+@@ -1501,6 +1587,7 @@ public class PurpurWorldConfig {
public double rabbitNaturalKiller = 0.0D;
public int rabbitBreedingTicks = 6000;
public boolean rabbitBypassMobGriefing = false;
@@ -1879,7 +1879,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -1510,6 +1597,7 @@ public class PurpurWorldConfig {
+@@ -1515,6 +1602,7 @@ public class PurpurWorldConfig {
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing);
@@ -1887,7 +1887,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean ravagerRidable = false;
-@@ -1517,6 +1605,7 @@ public class PurpurWorldConfig {
+@@ -1522,6 +1610,7 @@ public class PurpurWorldConfig {
public boolean ravagerControllable = true;
public double ravagerMaxHealth = 100.0D;
public boolean ravagerBypassMobGriefing = false;
@@ -1895,7 +1895,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -1528,11 +1617,13 @@ public class PurpurWorldConfig {
+@@ -1533,11 +1622,13 @@ public class PurpurWorldConfig {
}
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
@@ -1909,7 +1909,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void salmonSettings() {
salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable);
salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable);
-@@ -1542,6 +1633,7 @@ public class PurpurWorldConfig {
+@@ -1547,6 +1638,7 @@ public class PurpurWorldConfig {
set("mobs.salmon.attributes.max_health", oldValue);
}
salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth);
@@ -1917,7 +1917,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean sheepRidable = false;
-@@ -1550,6 +1642,7 @@ public class PurpurWorldConfig {
+@@ -1555,6 +1647,7 @@ public class PurpurWorldConfig {
public double sheepMaxHealth = 8.0D;
public int sheepBreedingTicks = 6000;
public boolean sheepBypassMobGriefing = false;
@@ -1925,7 +1925,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -1562,12 +1655,14 @@ public class PurpurWorldConfig {
+@@ -1567,12 +1660,14 @@ public class PurpurWorldConfig {
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
@@ -1940,7 +1940,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -1578,6 +1673,7 @@ public class PurpurWorldConfig {
+@@ -1583,6 +1678,7 @@ public class PurpurWorldConfig {
set("mobs.shulker.attributes.max_health", oldValue);
}
shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth);
@@ -1948,7 +1948,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean silverfishRidable = false;
-@@ -1585,6 +1681,7 @@ public class PurpurWorldConfig {
+@@ -1590,6 +1686,7 @@ public class PurpurWorldConfig {
public boolean silverfishControllable = true;
public double silverfishMaxHealth = 8.0D;
public boolean silverfishBypassMobGriefing = false;
@@ -1956,7 +1956,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
-@@ -1596,12 +1693,14 @@ public class PurpurWorldConfig {
+@@ -1601,12 +1698,14 @@ public class PurpurWorldConfig {
}
silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth);
silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing);
@@ -1971,7 +1971,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -1612,6 +1711,7 @@ public class PurpurWorldConfig {
+@@ -1617,6 +1716,7 @@ public class PurpurWorldConfig {
set("mobs.skeleton.attributes.max_health", oldValue);
}
skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth);
@@ -1979,7 +1979,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean skeletonHorseRidableInWater = true;
-@@ -1622,6 +1722,7 @@ public class PurpurWorldConfig {
+@@ -1627,6 +1727,7 @@ public class PurpurWorldConfig {
public double skeletonHorseJumpStrengthMax = 1.0D;
public double skeletonHorseMovementSpeedMin = 0.2D;
public double skeletonHorseMovementSpeedMax = 0.2D;
@@ -1987,7 +1987,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void skeletonHorseSettings() {
skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater);
skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim);
-@@ -1637,6 +1738,7 @@ public class PurpurWorldConfig {
+@@ -1642,6 +1743,7 @@ public class PurpurWorldConfig {
skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax);
skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin);
skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax);
@@ -1995,7 +1995,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean slimeRidable = false;
-@@ -1646,6 +1748,7 @@ public class PurpurWorldConfig {
+@@ -1651,6 +1753,7 @@ public class PurpurWorldConfig {
public String slimeAttackDamage = "size";
public Map slimeMaxHealthCache = new HashMap<>();
public Map slimeAttackDamageCache = new HashMap<>();
@@ -2003,7 +2003,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void slimeSettings() {
slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable);
slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater);
-@@ -1659,6 +1762,7 @@ public class PurpurWorldConfig {
+@@ -1664,6 +1767,7 @@ public class PurpurWorldConfig {
slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage);
slimeMaxHealthCache.clear();
slimeAttackDamageCache.clear();
@@ -2011,7 +2011,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean snowGolemRidable = false;
-@@ -1673,6 +1777,7 @@ public class PurpurWorldConfig {
+@@ -1678,6 +1782,7 @@ public class PurpurWorldConfig {
public float snowGolemSnowBallModifier = 10.0F;
public double snowGolemAttackDistance = 1.25D;
public boolean snowGolemBypassMobGriefing = false;
@@ -2019,7 +2019,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -1691,6 +1796,7 @@ public class PurpurWorldConfig {
+@@ -1696,6 +1801,7 @@ public class PurpurWorldConfig {
snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier);
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing);
@@ -2027,7 +2027,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean squidRidable = false;
-@@ -1699,6 +1805,7 @@ public class PurpurWorldConfig {
+@@ -1704,6 +1810,7 @@ public class PurpurWorldConfig {
public boolean squidImmuneToEAR = true;
public double squidOffsetWaterCheck = 0.0D;
public boolean squidsCanFly = false;
@@ -2035,7 +2035,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -1711,12 +1818,14 @@ public class PurpurWorldConfig {
+@@ -1716,12 +1823,14 @@ public class PurpurWorldConfig {
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly);
@@ -2050,7 +2050,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void spiderSettings() {
spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable);
spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater);
-@@ -1727,12 +1836,14 @@ public class PurpurWorldConfig {
+@@ -1732,12 +1841,14 @@ public class PurpurWorldConfig {
set("mobs.spider.attributes.max_health", oldValue);
}
spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth);
@@ -2065,7 +2065,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void straySettings() {
strayRidable = getBoolean("mobs.stray.ridable", strayRidable);
strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater);
-@@ -1743,6 +1854,7 @@ public class PurpurWorldConfig {
+@@ -1748,6 +1859,7 @@ public class PurpurWorldConfig {
set("mobs.stray.attributes.max_health", oldValue);
}
strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth);
@@ -2073,7 +2073,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean striderRidable = false;
-@@ -1751,6 +1863,7 @@ public class PurpurWorldConfig {
+@@ -1756,6 +1868,7 @@ public class PurpurWorldConfig {
public double striderMaxHealth = 20.0D;
public int striderBreedingTicks = 6000;
public boolean striderGiveSaddleBack = false;
@@ -2081,7 +2081,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -1763,6 +1876,7 @@ public class PurpurWorldConfig {
+@@ -1768,6 +1881,7 @@ public class PurpurWorldConfig {
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack);
@@ -2089,7 +2089,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean tadpoleRidable = false;
-@@ -1784,6 +1898,7 @@ public class PurpurWorldConfig {
+@@ -1789,6 +1903,7 @@ public class PurpurWorldConfig {
public double traderLlamaMovementSpeedMin = 0.175D;
public double traderLlamaMovementSpeedMax = 0.175D;
public int traderLlamaBreedingTicks = 6000;
@@ -2097,7 +2097,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
-@@ -1802,11 +1917,13 @@ public class PurpurWorldConfig {
+@@ -1807,11 +1922,13 @@ public class PurpurWorldConfig {
traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin);
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks);
@@ -2111,7 +2111,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void tropicalFishSettings() {
tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable);
tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable);
-@@ -1816,6 +1933,7 @@ public class PurpurWorldConfig {
+@@ -1821,6 +1938,7 @@ public class PurpurWorldConfig {
set("mobs.tropical_fish.attributes.max_health", oldValue);
}
tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth);
@@ -2119,7 +2119,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean turtleRidable = false;
-@@ -1823,6 +1941,7 @@ public class PurpurWorldConfig {
+@@ -1828,6 +1946,7 @@ public class PurpurWorldConfig {
public boolean turtleControllable = true;
public double turtleMaxHealth = 30.0D;
public int turtleBreedingTicks = 6000;
@@ -2127,7 +2127,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
-@@ -1834,6 +1953,7 @@ public class PurpurWorldConfig {
+@@ -1839,6 +1958,7 @@ public class PurpurWorldConfig {
}
turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth);
turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks);
@@ -2135,7 +2135,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean vexRidable = false;
-@@ -1841,6 +1961,7 @@ public class PurpurWorldConfig {
+@@ -1846,6 +1966,7 @@ public class PurpurWorldConfig {
public boolean vexControllable = true;
public double vexMaxY = 320D;
public double vexMaxHealth = 14.0D;
@@ -2143,7 +2143,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void vexSettings() {
vexRidable = getBoolean("mobs.vex.ridable", vexRidable);
vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater);
-@@ -1852,6 +1973,7 @@ public class PurpurWorldConfig {
+@@ -1857,6 +1978,7 @@ public class PurpurWorldConfig {
set("mobs.vex.attributes.max_health", oldValue);
}
vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth);
@@ -2151,7 +2151,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean villagerRidable = false;
-@@ -1867,6 +1989,7 @@ public class PurpurWorldConfig {
+@@ -1872,6 +1994,7 @@ public class PurpurWorldConfig {
public boolean villagerClericsFarmWarts = false;
public boolean villagerClericFarmersThrowWarts = true;
public boolean villagerBypassMobGriefing = false;
@@ -2159,7 +2159,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1886,6 +2009,7 @@ public class PurpurWorldConfig {
+@@ -1891,6 +2014,7 @@ public class PurpurWorldConfig {
villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts);
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
@@ -2167,7 +2167,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean vindicatorRidable = false;
-@@ -1893,6 +2017,7 @@ public class PurpurWorldConfig {
+@@ -1898,6 +2022,7 @@ public class PurpurWorldConfig {
public boolean vindicatorControllable = true;
public double vindicatorMaxHealth = 24.0D;
public double vindicatorJohnnySpawnChance = 0D;
@@ -2175,7 +2175,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
-@@ -1904,6 +2029,7 @@ public class PurpurWorldConfig {
+@@ -1909,6 +2034,7 @@ public class PurpurWorldConfig {
}
vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth);
vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance);
@@ -2183,7 +2183,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean wanderingTraderRidable = false;
-@@ -1912,6 +2038,7 @@ public class PurpurWorldConfig {
+@@ -1917,6 +2043,7 @@ public class PurpurWorldConfig {
public double wanderingTraderMaxHealth = 20.0D;
public boolean wanderingTraderFollowEmeraldBlock = false;
public boolean wanderingTraderCanBeLeashed = false;
@@ -2191,7 +2191,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
-@@ -1924,6 +2051,7 @@ public class PurpurWorldConfig {
+@@ -1929,6 +2056,7 @@ public class PurpurWorldConfig {
wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth);
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
@@ -2199,7 +2199,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean wardenRidable = false;
-@@ -1939,6 +2067,7 @@ public class PurpurWorldConfig {
+@@ -1944,6 +2072,7 @@ public class PurpurWorldConfig {
public boolean witchRidableInWater = false;
public boolean witchControllable = true;
public double witchMaxHealth = 26.0D;
@@ -2207,7 +2207,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void witchSettings() {
witchRidable = getBoolean("mobs.witch.ridable", witchRidable);
witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater);
-@@ -1949,6 +2078,7 @@ public class PurpurWorldConfig {
+@@ -1954,6 +2083,7 @@ public class PurpurWorldConfig {
set("mobs.witch.attributes.max_health", oldValue);
}
witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth);
@@ -2215,7 +2215,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean witherRidable = false;
-@@ -1959,6 +2089,7 @@ public class PurpurWorldConfig {
+@@ -1964,6 +2094,7 @@ public class PurpurWorldConfig {
public float witherHealthRegenAmount = 1.0f;
public int witherHealthRegenDelay = 20;
public boolean witherBypassMobGriefing = false;
@@ -2223,7 +2223,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -1977,12 +2108,14 @@ public class PurpurWorldConfig {
+@@ -1982,12 +2113,14 @@ public class PurpurWorldConfig {
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
@@ -2238,7 +2238,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void witherSkeletonSettings() {
witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable);
witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater);
-@@ -1993,6 +2126,7 @@ public class PurpurWorldConfig {
+@@ -1998,6 +2131,7 @@ public class PurpurWorldConfig {
set("mobs.wither_skeleton.attributes.max_health", oldValue);
}
witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth);
@@ -2246,7 +2246,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean wolfRidable = false;
-@@ -2003,6 +2137,7 @@ public class PurpurWorldConfig {
+@@ -2008,6 +2142,7 @@ public class PurpurWorldConfig {
public boolean wolfMilkCuresRabies = true;
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
@@ -2254,7 +2254,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
-@@ -2021,12 +2156,14 @@ public class PurpurWorldConfig {
+@@ -2026,12 +2161,14 @@ public class PurpurWorldConfig {
wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies);
wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid);
wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks);
@@ -2269,7 +2269,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void zoglinSettings() {
zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable);
zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater);
-@@ -2037,6 +2174,7 @@ public class PurpurWorldConfig {
+@@ -2042,6 +2179,7 @@ public class PurpurWorldConfig {
set("mobs.zoglin.attributes.max_health", oldValue);
}
zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth);
@@ -2277,7 +2277,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean zombieRidable = false;
-@@ -2049,6 +2187,7 @@ public class PurpurWorldConfig {
+@@ -2054,6 +2192,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyTryExistingChickens = true;
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
public boolean zombieBypassMobGriefing = false;
@@ -2285,7 +2285,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2065,6 +2204,7 @@ public class PurpurWorldConfig {
+@@ -2070,6 +2209,7 @@ public class PurpurWorldConfig {
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing);
@@ -2293,7 +2293,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean zombieHorseRidableInWater = false;
-@@ -2076,6 +2216,7 @@ public class PurpurWorldConfig {
+@@ -2081,6 +2221,7 @@ public class PurpurWorldConfig {
public double zombieHorseMovementSpeedMin = 0.2D;
public double zombieHorseMovementSpeedMax = 0.2D;
public double zombieHorseSpawnChance = 0.0D;
@@ -2301,7 +2301,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void zombieHorseSettings() {
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim);
-@@ -2092,6 +2233,7 @@ public class PurpurWorldConfig {
+@@ -2097,6 +2238,7 @@ public class PurpurWorldConfig {
zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin);
zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax);
zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
@@ -2309,7 +2309,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean zombieVillagerRidable = false;
-@@ -2102,6 +2244,7 @@ public class PurpurWorldConfig {
+@@ -2107,6 +2249,7 @@ public class PurpurWorldConfig {
public boolean zombieVillagerJockeyOnlyBaby = true;
public double zombieVillagerJockeyChance = 0.05D;
public boolean zombieVillagerJockeyTryExistingChickens = true;
@@ -2317,7 +2317,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -2116,6 +2259,7 @@ public class PurpurWorldConfig {
+@@ -2121,6 +2264,7 @@ public class PurpurWorldConfig {
zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby);
zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance);
zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens);
@@ -2325,7 +2325,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
}
public boolean zombifiedPiglinRidable = false;
-@@ -2127,6 +2271,7 @@ public class PurpurWorldConfig {
+@@ -2132,6 +2276,7 @@ public class PurpurWorldConfig {
public double zombifiedPiglinJockeyChance = 0.05D;
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
@@ -2333,7 +2333,7 @@ index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4af
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
-@@ -2142,5 +2287,6 @@ public class PurpurWorldConfig {
+@@ -2147,5 +2292,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/0139-Config-to-always-tame-in-Creative.patch b/patches/server/0139-Config-to-always-tame-in-Creative.patch
index 708373cb4..de683401c 100644
--- a/patches/server/0139-Config-to-always-tame-in-Creative.patch
+++ b/patches/server/0139-Config-to-always-tame-in-Creative.patch
@@ -59,10 +59,10 @@ index dd514cbf2f03b688eb4d8cd49052f1775d3adebb..ed33573a96e96d557156fbe2f725e3d6
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 6d54dd2fa746e4daf5c43ecc33f5f4afc370f73a..6e07ea5ea28e20faf79ddfc9225fe462a5f97e29 100644
+index 4e4a625fe34913d89bd933eeae15944ecba0df8a..f2293d1a6f4aaaad7fbf1aea2da716f0566083cf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -114,6 +114,7 @@ public class PurpurWorldConfig {
+@@ -119,6 +119,7 @@ public class PurpurWorldConfig {
}
public boolean useBetterMending = false;
@@ -70,7 +70,7 @@ index 6d54dd2fa746e4daf5c43ecc33f5f4afc370f73a..6e07ea5ea28e20faf79ddfc9225fe462
public boolean boatEjectPlayersOnLand = false;
public boolean boatsDoFallDamage = true;
public boolean disableDropsOnCrammingDeath = false;
-@@ -132,6 +133,7 @@ public class PurpurWorldConfig {
+@@ -137,6 +138,7 @@ public class PurpurWorldConfig {
public int animalBreedingCooldownSeconds = 0;
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
diff --git a/patches/server/0140-End-crystal-explosion-options.patch b/patches/server/0140-End-crystal-explosion-options.patch
index 0ee144a6d..ec060e4ea 100644
--- a/patches/server/0140-End-crystal-explosion-options.patch
+++ b/patches/server/0140-End-crystal-explosion-options.patch
@@ -52,10 +52,10 @@ index e1493079d06a91f3e14e333e2a0408725a8f5bea..59d7f4ef118b2a87d1fe9cc1dd2fea89
this.onDestroyedBy(source);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 6e07ea5ea28e20faf79ddfc9225fe462a5f97e29..72327a0a22768828bbc04ecccf300bd7160d3305 100644
+index f2293d1a6f4aaaad7fbf1aea2da716f0566083cf..570e90dd3cd3bbd3078893fb972f7018b516f3e0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -458,6 +458,35 @@ public class PurpurWorldConfig {
+@@ -463,6 +463,35 @@ public class PurpurWorldConfig {
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
diff --git a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
index 94745ddbd..8f0ee4b2b 100644
--- a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
+++ b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
@@ -29,10 +29,10 @@ index 1329de5d3e6294d2eb7b6852b8cad19f0f4dba77..6818618cd2f702e894ac4098b4eb5afc
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ff1415929079b54185ffb11ddcbca91024d3b9c9..1cd729673126802d7778f251185077158833954d 100644
+index 570e90dd3cd3bbd3078893fb972f7018b516f3e0..3624304329d0a6728c0e4981bd9dcfb350edaab5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -909,6 +909,7 @@ public class PurpurWorldConfig {
+@@ -914,6 +914,7 @@ public class PurpurWorldConfig {
public boolean enderDragonAlwaysDropsFullExp = false;
public boolean enderDragonBypassMobGriefing = false;
public boolean enderDragonTakeDamageFromWater = false;
@@ -40,7 +40,7 @@ index ff1415929079b54185ffb11ddcbca91024d3b9c9..1cd729673126802d7778f25118507715
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
-@@ -927,6 +928,7 @@ public class PurpurWorldConfig {
+@@ -932,6 +933,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 ff1415929079b54185ffb11ddcbca91024d3b9c9..1cd729673126802d7778f25118507715
}
public boolean endermanRidable = false;
-@@ -2121,6 +2123,7 @@ public class PurpurWorldConfig {
+@@ -2126,6 +2128,7 @@ public class PurpurWorldConfig {
public int witherHealthRegenDelay = 20;
public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false;
@@ -56,7 +56,7 @@ index ff1415929079b54185ffb11ddcbca91024d3b9c9..1cd729673126802d7778f25118507715
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2140,6 +2143,7 @@ public class PurpurWorldConfig {
+@@ -2145,6 +2148,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/0142-Dont-run-with-scissors.patch b/patches/server/0142-Dont-run-with-scissors.patch
index 616e3877e..8bf010f1c 100644
--- a/patches/server/0142-Dont-run-with-scissors.patch
+++ b/patches/server/0142-Dont-run-with-scissors.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] 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 617ecdf362da4e3f5a30645ac3e1e21e76184179..aa41e4aed283297b923985f7ceee914cb62666a9 100644
+index 85c456f43cf228e02ee43f29e0f3b0227080699c..9aa0c7eddccb7a81834582f4f50e7f6b93a688e8 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1627,6 +1627,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
@@ -70,7 +70,7 @@ index cc0f6a51e10c77928fccf372a45a56aa6f2b298a..f4ca0a9481533befc78cb18c1f981082
if (cause != null) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index 68ae78e98df34849e0a3c97d27b26d0f45cf4bb7..6f7744083bcbf40b5c92f1cbfa973f6118a7ed7c 100644
+index 27794670b54f1a96e4e82ed23ab0769a0506b52a..c2bfd97e11e887d7a112ba024be6048ac3d46bee 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -177,6 +177,7 @@ public class PurpurConfig {
@@ -95,10 +95,10 @@ index 68ae78e98df34849e0a3c97d27b26d0f45cf4bb7..6f7744083bcbf40b5c92f1cbfa973f61
public static String serverModName = "Purpur";
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 1cd729673126802d7778f251185077158833954d..af3fc93759abf435119e4bf4149be2cc1545ec5a 100644
+index 3624304329d0a6728c0e4981bd9dcfb350edaab5..2e15e592bbc13f4aca99745dd068b12d5f8a253c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -194,6 +194,8 @@ public class PurpurWorldConfig {
+@@ -199,6 +199,8 @@ public class PurpurWorldConfig {
public List- itemImmuneToExplosion = new ArrayList<>();
public List
- itemImmuneToFire = new ArrayList<>();
public List
- itemImmuneToLightning = new ArrayList<>();
@@ -107,7 +107,7 @@ index 1cd729673126802d7778f251185077158833954d..af3fc93759abf435119e4bf4149be2cc
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -231,6 +233,8 @@ public class PurpurWorldConfig {
+@@ -236,6 +238,8 @@ public class PurpurWorldConfig {
Item item = Registry.ITEM.get(new ResourceLocation(key.toString()));
if (item != Items.AIR) itemImmuneToLightning.add(item);
});
diff --git a/patches/server/0143-One-Punch-Man.patch b/patches/server/0143-One-Punch-Man.patch
index d38244022..3f44189c7 100644
--- a/patches/server/0143-One-Punch-Man.patch
+++ b/patches/server/0143-One-Punch-Man.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] One Punch Man!
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6a7a83a3fc58cbb7e97c0ba13715a8e6ea5f6de6..e9ee22f12f542f0c2d1a4ecedc891d708491a8eb 100644
+index d0be274950668f0ca66cda876fdb3af78ea40f52..920fddcc5971915c542891e0f2a4a48e5626765f 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2201,6 +2201,20 @@ public abstract class LivingEntity extends Entity {
@@ -30,10 +30,10 @@ index 6a7a83a3fc58cbb7e97c0ba13715a8e6ea5f6de6..e9ee22f12f542f0c2d1a4ecedc891d70
if (human) {
// PAIL: Be sure to drag all this code from the EntityHuman subclass each update.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c5d4aeb82f41d28ec36e484faf5b453667e63723..4ec3c8caa157d4f50028122c03a80c92a6785d8c 100644
+index 2e15e592bbc13f4aca99745dd068b12d5f8a253c..7c216897dc47e2b553ec936615e7e0ab44be906a 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 {
+@@ -344,6 +344,7 @@ public class PurpurWorldConfig {
public boolean teleportIfOutsideBorder = false;
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
@@ -41,7 +41,7 @@ index c5d4aeb82f41d28ec36e484faf5b453667e63723..4ec3c8caa157d4f50028122c03a80c92
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -357,6 +358,7 @@ public class PurpurWorldConfig {
+@@ -362,6 +363,7 @@ public class PurpurWorldConfig {
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
diff --git a/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
index e4b40ce12..07eeecbe1 100644
--- a/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
+++ b/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
@@ -43,10 +43,10 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f
// Paper end
if (user instanceof net.minecraft.server.level.ServerPlayer) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 4ec3c8caa157d4f50028122c03a80c92a6785d8c..57450c6f3da1289b15ecc821614018506c60601f 100644
+index 7c216897dc47e2b553ec936615e7e0ab44be906a..58ef5df9b6a494905434699f73fa848a85f4a52c 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 {
+@@ -201,6 +201,10 @@ public class PurpurWorldConfig {
public List
- itemImmuneToLightning = new ArrayList<>();
public boolean dontRunWithScissors = false;
public double scissorsRunningDamage = 1D;
@@ -57,7 +57,7 @@ index 4ec3c8caa157d4f50028122c03a80c92a6785d8c..57450c6f3da1289b15ecc82161401850
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -235,6 +239,10 @@ public class PurpurWorldConfig {
+@@ -240,6 +244,10 @@ public class PurpurWorldConfig {
});
dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors);
scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
diff --git a/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch
index b4a4db48a..db1d993fd 100644
--- a/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch
+++ b/patches/server/0145-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 bc5d5a2a48cfc6b4257d1cc3ac73d8ec5300721d..c217c773d014e1bda00ac14e90824d5bb636ecc4 100644
+index 5d10e3f3990de7b3667de02cb515039bfbb6d815..d732880ebed379bf6417bc59735093de010119a6 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1341,7 +1341,7 @@ public class ServerPlayer extends Player {
@@ -18,10 +18,10 @@ index bc5d5a2a48cfc6b4257d1cc3ac73d8ec5300721d..c217c773d014e1bda00ac14e90824d5b
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d10ec237ccebcfb72502c5f3b84f2a4ecac07ee8..f244f917b35b80f0801fecf08753da63a99443f0 100644
+index 58ef5df9b6a494905434699f73fa848a85f4a52c..8e6e5da5c089644136b365fb65df54c6f64ae44c 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 {
+@@ -353,6 +353,7 @@ public class PurpurWorldConfig {
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
public boolean creativeOnePunch = false;
@@ -29,7 +29,7 @@ index d10ec237ccebcfb72502c5f3b84f2a4ecac07ee8..f244f917b35b80f0801fecf08753da63
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -367,6 +368,7 @@ public class PurpurWorldConfig {
+@@ -372,6 +373,7 @@ public class PurpurWorldConfig {
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
diff --git a/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch
index 998d9002a..4294fbfec 100644
--- a/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch
+++ b/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch
@@ -18,10 +18,10 @@ index 6c9b3bb54b163cb2a6c05993e792558e983feecc..99e4c23140b85d37c7b266c2fcf57c94
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bfe0bf2572a48fee700bbbb2aa756ab61827b960..da1ce49cf9c590aa9e838315981ee74d20679675 100644
+index 8e6e5da5c089644136b365fb65df54c6f64ae44c..9a21672c00972f2333b588df60f6fdff9f5a6518 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -955,6 +955,8 @@ public class PurpurWorldConfig {
+@@ -960,6 +960,8 @@ public class PurpurWorldConfig {
public boolean endermanDespawnEvenWithBlock = false;
public boolean endermanBypassMobGriefing = false;
public boolean endermanTakeDamageFromWater = true;
@@ -30,7 +30,7 @@ index bfe0bf2572a48fee700bbbb2aa756ab61827b960..da1ce49cf9c590aa9e838315981ee74d
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -964,11 +966,17 @@ public class PurpurWorldConfig {
+@@ -969,11 +971,17 @@ public class PurpurWorldConfig {
set("mobs.enderman.attributes.max-health", null);
set("mobs.enderman.attributes.max_health", oldValue);
}
diff --git a/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
index f577b9887..166ca8259 100644
--- a/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
+++ b/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
@@ -20,10 +20,10 @@ index 99e4c23140b85d37c7b266c2fcf57c94fd19ec7c..b0c4c90ab2d532a60911d53ac4764dcf
} 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 da1ce49cf9c590aa9e838315981ee74d20679675..bd3328d3b41f7514fe02aba4cba7a74745565c67 100644
+index 9a21672c00972f2333b588df60f6fdff9f5a6518..cfca4a5f08456bb06283fb7e1fb96711591aee13 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -957,6 +957,8 @@ public class PurpurWorldConfig {
+@@ -962,6 +962,8 @@ public class PurpurWorldConfig {
public boolean endermanTakeDamageFromWater = true;
public boolean endermanAggroEndermites = true;
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
@@ -32,7 +32,7 @@ index da1ce49cf9c590aa9e838315981ee74d20679675..bd3328d3b41f7514fe02aba4cba7a747
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -977,6 +979,8 @@ public class PurpurWorldConfig {
+@@ -982,6 +984,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/0149-Tick-fluids-config.patch b/patches/server/0149-Tick-fluids-config.patch
index 7f6b3f755..a5cf8cc3c 100644
--- a/patches/server/0149-Tick-fluids-config.patch
+++ b/patches/server/0149-Tick-fluids-config.patch
@@ -36,10 +36,10 @@ index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bd3328d3b41f7514fe02aba4cba7a74745565c67..07a3e3522539b0f42d7f8c5c7ff15dc8c0849553 100644
+index cfca4a5f08456bb06283fb7e1fb96711591aee13..29e3f3dea9d9c4131e23d8b730bb0cbda8184d94 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -126,6 +126,7 @@ public class PurpurWorldConfig {
+@@ -131,6 +131,7 @@ public class PurpurWorldConfig {
public boolean noteBlockIgnoreAbove = false;
public boolean persistentDroppableEntityDisplayNames = false;
public boolean projectilesBypassMobGriefing = false;
@@ -47,7 +47,7 @@ index bd3328d3b41f7514fe02aba4cba7a74745565c67..07a3e3522539b0f42d7f8c5c7ff15dc8
public double tridentLoyaltyVoidReturnHeight = 0.0D;
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
-@@ -145,6 +146,7 @@ public class PurpurWorldConfig {
+@@ -150,6 +151,7 @@ public class PurpurWorldConfig {
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
diff --git a/patches/server/0150-Config-to-disable-Llama-caravans.patch b/patches/server/0150-Config-to-disable-Llama-caravans.patch
index 4b1296aa6..e1c23130f 100644
--- a/patches/server/0150-Config-to-disable-Llama-caravans.patch
+++ b/patches/server/0150-Config-to-disable-Llama-caravans.patch
@@ -32,10 +32,10 @@ index 708f0bccffc05fac0d711df13dd1b5e173ff6109..b7b8d7587018759fc418043694abd38f
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 07a3e3522539b0f42d7f8c5c7ff15dc8c0849553..e72e6e54b35cbd06abd1394432cddfa7a97067b4 100644
+index 29e3f3dea9d9c4131e23d8b730bb0cbda8184d94..6d9f3aed3dfd141e191cde35598bc307cc4ffa89 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1289,6 +1289,7 @@ public class PurpurWorldConfig {
+@@ -1294,6 +1294,7 @@ public class PurpurWorldConfig {
public double llamaMovementSpeedMax = 0.175D;
public int llamaBreedingTicks = 6000;
public boolean llamaTakeDamageFromWater = false;
@@ -43,7 +43,7 @@ index 07a3e3522539b0f42d7f8c5c7ff15dc8c0849553..e72e6e54b35cbd06abd1394432cddfa7
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1308,6 +1309,7 @@ public class PurpurWorldConfig {
+@@ -1313,6 +1314,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/0151-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch
index e3ffa530c..d62203679 100644
--- a/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch
+++ b/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch
@@ -50,10 +50,10 @@ index fa4d5579dcdaad04fa2e6cd9ae47af1154739121..bd58b7d364b5e0361e7b8c67d1b26b7f
private void spawnLingeringCloud() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e72e6e54b35cbd06abd1394432cddfa7a97067b4..c8863a6f054efa1405c80fe3294d4f88c40b935a 100644
+index 6d9f3aed3dfd141e191cde35598bc307cc4ffa89..85264922bbd784e6601066253df2b2ab7fb50b55 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -809,6 +809,7 @@ public class PurpurWorldConfig {
+@@ -814,6 +814,7 @@ public class PurpurWorldConfig {
public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
@@ -61,7 +61,7 @@ index e72e6e54b35cbd06abd1394432cddfa7a97067b4..c8863a6f054efa1405c80fe3294d4f88
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -823,6 +824,7 @@ public class PurpurWorldConfig {
+@@ -828,6 +829,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/0152-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch
index 1282ee69f..e4df3edb7 100644
--- a/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch
+++ b/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch
@@ -31,10 +31,10 @@ index a68bf10353e5c19adfa86c2dd6290f2386af9a9d..38bc19edc2dcfa33b3191cfa3b69f00d
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c8863a6f054efa1405c80fe3294d4f88c40b935a..7a7d65a6789ac298391f9d716d022534e87da654 100644
+index 85264922bbd784e6601066253df2b2ab7fb50b55..600abf6a419c99fde04ec7aeadfd3d0e02c883d9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1673,6 +1673,7 @@ public class PurpurWorldConfig {
+@@ -1678,6 +1678,7 @@ public class PurpurWorldConfig {
public double ravagerMaxHealth = 100.0D;
public boolean ravagerBypassMobGriefing = false;
public boolean ravagerTakeDamageFromWater = false;
@@ -42,7 +42,7 @@ index c8863a6f054efa1405c80fe3294d4f88c40b935a..7a7d65a6789ac298391f9d716d022534
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -1685,6 +1686,23 @@ public class PurpurWorldConfig {
+@@ -1690,6 +1691,23 @@ public class PurpurWorldConfig {
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater);
diff --git a/patches/server/0153-Sneak-to-bulk-process-composter.patch b/patches/server/0153-Sneak-to-bulk-process-composter.patch
index d05e69c71..51d35daa0 100644
--- a/patches/server/0153-Sneak-to-bulk-process-composter.patch
+++ b/patches/server/0153-Sneak-to-bulk-process-composter.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Sneak to bulk process composter
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 7572f6d03d315ab4639be211c5ffc7682b326362..87e3c63ac67f2cbabcae55d76ecb5d5067479704 100644
+index 9378e83a67a70dbb1fb4f05b33f1e553d008e62b..dc0f06f2c0ece0881cbe4f47dcbcb0070ca90464 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -567,7 +567,7 @@ public class ServerPlayerGameMode {
@@ -75,10 +75,10 @@ index 2b1983d61fd3ed856770146de5cdfd33b4f63a46..9315c819a0c113313a8e6f97e02b4d13
int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7a7d65a6789ac298391f9d716d022534e87da654..365863c0c97508bcff36df19999b9a8357ff2425 100644
+index 600abf6a419c99fde04ec7aeadfd3d0e02c883d9..c659ff37eeae38ab21ad808f35c3452d27a377b3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -469,6 +469,11 @@ public class PurpurWorldConfig {
+@@ -474,6 +474,11 @@ public class PurpurWorldConfig {
chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop);
}
diff --git a/patches/server/0154-Config-for-skipping-night.patch b/patches/server/0154-Config-for-skipping-night.patch
index 92dc1ca3b..ce570e5e0 100644
--- a/patches/server/0154-Config-for-skipping-night.patch
+++ b/patches/server/0154-Config-for-skipping-night.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config for skipping night
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 5dff48719ff166990a3d5668a50d8531e59f092b..7f6488296b064f09d8b5f01e5950012158833183 100644
+index b29452da6a55f0ccb83e734a9a77ef028a87fbe5..bd30ebea4f9bd7d63fd847b216b1ce09730d266f 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -625,7 +625,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -18,10 +18,10 @@ index 5dff48719ff166990a3d5668a50d8531e59f092b..7f6488296b064f09d8b5f01e59500121
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 365863c0c97508bcff36df19999b9a8357ff2425..8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946 100644
+index c659ff37eeae38ab21ad808f35c3452d27a377b3..6a82355509fdb04acc920b21c0c76328999e48e8 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 {
+@@ -356,6 +356,7 @@ public class PurpurWorldConfig {
public boolean playerFixStuckPortal = false;
public boolean creativeOnePunch = false;
public boolean playerSleepNearMonsters = false;
@@ -29,7 +29,7 @@ index 365863c0c97508bcff36df19999b9a8357ff2425..8bb0fb83ac3e8d75f469dbb9b617ef65
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -371,6 +372,7 @@ public class PurpurWorldConfig {
+@@ -376,6 +377,7 @@ public class PurpurWorldConfig {
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters);
diff --git a/patches/server/0155-Add-config-for-villager-trading.patch b/patches/server/0155-Add-config-for-villager-trading.patch
index dd8a65e59..6a5a3a62c 100644
--- a/patches/server/0155-Add-config-for-villager-trading.patch
+++ b/patches/server/0155-Add-config-for-villager-trading.patch
@@ -31,10 +31,10 @@ index 6dd8856816bebb2766203589048cc68b3f5c8f5c..8d6930868a42b9fc98d7672bff433ec5
this.openTradingScreen(player, this.getDisplayName(), 1);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946..a78e8939f9b2edcfdd3122a7d6b94df852903ff4 100644
+index 6a82355509fdb04acc920b21c0c76328999e48e8..717c7edb6629935eaa9193ddd4af9186e4451f9d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2082,6 +2082,7 @@ public class PurpurWorldConfig {
+@@ -2087,6 +2087,7 @@ public class PurpurWorldConfig {
public boolean villagerClericFarmersThrowWarts = true;
public boolean villagerBypassMobGriefing = false;
public boolean villagerTakeDamageFromWater = false;
@@ -42,7 +42,7 @@ index 8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946..a78e8939f9b2edcfdd3122a7d6b94df8
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2102,6 +2103,7 @@ public class PurpurWorldConfig {
+@@ -2107,6 +2108,7 @@ public class PurpurWorldConfig {
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
@@ -50,7 +50,7 @@ index 8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946..a78e8939f9b2edcfdd3122a7d6b94df8
}
public boolean vindicatorRidable = false;
-@@ -2131,6 +2133,7 @@ public class PurpurWorldConfig {
+@@ -2136,6 +2138,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderFollowEmeraldBlock = false;
public boolean wanderingTraderCanBeLeashed = false;
public boolean wanderingTraderTakeDamageFromWater = false;
@@ -58,7 +58,7 @@ index 8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946..a78e8939f9b2edcfdd3122a7d6b94df8
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
-@@ -2144,6 +2147,7 @@ public class PurpurWorldConfig {
+@@ -2149,6 +2152,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/0157-Drowning-Settings.patch b/patches/server/0157-Drowning-Settings.patch
index 47b6cfee5..043659955 100644
--- a/patches/server/0157-Drowning-Settings.patch
+++ b/patches/server/0157-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 3753502af217ed6d06f03d250a069b1e0be7ebe5..ddf1fc47c3d01ec589548081ca9f01f8d6ccd642 100644
+index aa477068e28a4070a26aa08e09d614bbf6fd01ab..acff59500c7ea17598b79e2702d7dea9e5f7fc76 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3110,7 +3110,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -40,10 +40,10 @@ index 920fddcc5971915c542891e0f2a4a48e5626765f..253ee4d72d1b40a49049692bc02f6be9
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a2878203e88d5ffeab7e209c1d2914047c779df9..0322b818bbb5f79b3f4eb25c729de0df91fa41d2 100644
+index 717c7edb6629935eaa9193ddd4af9186e4451f9d..ba95b9ecebca5974389b50d39ab39aecc73da031 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -161,6 +161,15 @@ public class PurpurWorldConfig {
+@@ -166,6 +166,15 @@ public class PurpurWorldConfig {
nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks);
}
diff --git a/patches/server/0158-Break-individual-slabs-when-sneaking.patch b/patches/server/0158-Break-individual-slabs-when-sneaking.patch
index de45023c2..c207fa2c7 100644
--- a/patches/server/0158-Break-individual-slabs-when-sneaking.patch
+++ b/patches/server/0158-Break-individual-slabs-when-sneaking.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 87e3c63ac67f2cbabcae55d76ecb5d5067479704..12d11659134410b2720a00297b796bba3357c89a 100644
+index dc0f06f2c0ece0881cbe4f47dcbcb0070ca90464..d24938fd4cf5645da6443cc7c908b1eb717675a5 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -391,6 +391,7 @@ public class ServerPlayerGameMode {
@@ -47,10 +47,10 @@ index 18b603d646081926343dea108b55d641df1c2c34..fdbbd2e5d4fd970a4593b55f16bd0f82
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 93a89a2adc151437324ecfed1fddce5206bd6446..357045ed63587346d584c880aa942d14118b3ed8 100644
+index ba95b9ecebca5974389b50d39ab39aecc73da031..654d7273fbac20f6d76dcdf5d9904f14b1241bd2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -584,6 +584,11 @@ public class PurpurWorldConfig {
+@@ -589,6 +589,11 @@ public class PurpurWorldConfig {
signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit);
}
diff --git a/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch
index d8233523b..ab784f43b 100644
--- a/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch
+++ b/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch
@@ -24,10 +24,10 @@ index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3bae
return false;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 357045ed63587346d584c880aa942d14118b3ed8..96ad2c1f372ee51ce234605ad728c2922d403674 100644
+index 654d7273fbac20f6d76dcdf5d9904f14b1241bd2..923024e035f2b3c5fc767acc2d4c6533a44a5d6d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -547,6 +547,13 @@ public class PurpurWorldConfig {
+@@ -552,6 +552,13 @@ public class PurpurWorldConfig {
furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath);
}
diff --git a/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch
index 8be9f8353..d643b949a 100644
--- a/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch
+++ b/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch
@@ -17,7 +17,7 @@ index 6bd31ed84049bc36a060b5e01b0599bf5f47765c..bdb0efdcac171a92a0e05557db7d099f
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 96ad2c1f372ee51ce234605ad728c2922d403674..354a41fb5a2426ce7835da1f0874445806fbb059 100644
+index 923024e035f2b3c5fc767acc2d4c6533a44a5d6d..ee8238ff6e74f72b04b011e89dd1b50c18e91c93 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -104,6 +104,7 @@ public class PurpurWorldConfig {
@@ -35,4 +35,4 @@ index 96ad2c1f372ee51ce234605ad728c2922d403674..354a41fb5a2426ce7835da1f08744458
+ armorstandPlaceWithArms = getBoolean("gameplay-mechanics.armorstand.place-with-arms-visible", armorstandPlaceWithArms);
}
- public boolean useBetterMending = false;
+ public boolean arrowMovementResetsDespawnCounter = true;
diff --git a/patches/server/0161-Option-to-make-doors-require-redstone.patch b/patches/server/0161-Option-to-make-doors-require-redstone.patch
index d3f1a5419..a297f9c59 100644
--- a/patches/server/0161-Option-to-make-doors-require-redstone.patch
+++ b/patches/server/0161-Option-to-make-doors-require-redstone.patch
@@ -67,10 +67,10 @@ index aa5289f652392515952cc10f70627ed2cdc6c398..d1d3323559f12f60ef0564e2218ca153
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 354a41fb5a2426ce7835da1f0874445806fbb059..503a1b325d2e9854108b7578a113807aa2599689 100644
+index ee8238ff6e74f72b04b011e89dd1b50c18e91c93..15d8b8b31c757226ae975b3b2c2407bab2a26d71 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -494,6 +494,16 @@ public class PurpurWorldConfig {
+@@ -499,6 +499,16 @@ public class PurpurWorldConfig {
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
diff --git a/patches/server/0163-Configurable-sponge-absorption.patch b/patches/server/0163-Configurable-sponge-absorption.patch
index 49acc7b38..5cb7f7c8f 100644
--- a/patches/server/0163-Configurable-sponge-absorption.patch
+++ b/patches/server/0163-Configurable-sponge-absorption.patch
@@ -43,10 +43,10 @@ index 7304b2659eb45bc4bc9fa7c43e6ca07221d0fc73..d96e3fbc0fd4275c29e7e6154ef66e9e
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 503a1b325d2e9854108b7578a113807aa2599689..4cdec578d257ba37bc361b38e7b682e936a87296 100644
+index 15d8b8b31c757226ae975b3b2c2407bab2a26d71..6901e211e4e2888e13f0e850af7089d9782031ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -613,6 +613,13 @@ public class PurpurWorldConfig {
+@@ -618,6 +618,13 @@ public class PurpurWorldConfig {
spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
}
diff --git a/patches/server/0164-Projectile-offset-config.patch b/patches/server/0164-Projectile-offset-config.patch
index c2e46dcc2..52e04878b 100644
--- a/patches/server/0164-Projectile-offset-config.patch
+++ b/patches/server/0164-Projectile-offset-config.patch
@@ -96,10 +96,10 @@ index 5beaafec0759543d3bddf99028c97d0d005be209..086f746cc632a90c67a6c30ea9197c5b
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 4cdec578d257ba37bc361b38e7b682e936a87296..2795d23a5d9ffc36b37c22feda33a1b966088d39 100644
+index 6901e211e4e2888e13f0e850af7089d9782031ca..8c7f9965144f5116e6e7035624eda19e6e6fe31b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -419,6 +419,23 @@ public class PurpurWorldConfig {
+@@ -424,6 +424,23 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0165-Config-for-powered-rail-activation-distance.patch b/patches/server/0165-Config-for-powered-rail-activation-distance.patch
index 9bd7d2e1a..6428b005a 100644
--- a/patches/server/0165-Config-for-powered-rail-activation-distance.patch
+++ b/patches/server/0165-Config-for-powered-rail-activation-distance.patch
@@ -18,10 +18,10 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b
} else {
int j = pos.getX();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 2795d23a5d9ffc36b37c22feda33a1b966088d39..f6a3c452cc75668ede7c5ddde338088e214c1476 100644
+index 8c7f9965144f5116e6e7035624eda19e6e6fe31b..1378457d826d11e45fd1deef4666a6e25614c06a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -599,6 +599,11 @@ public class PurpurWorldConfig {
+@@ -604,6 +604,11 @@ public class PurpurWorldConfig {
powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing);
}
diff --git a/patches/server/0166-Piglin-portal-spawn-modifier.patch b/patches/server/0166-Piglin-portal-spawn-modifier.patch
index a459acfb5..745abc4ba 100644
--- a/patches/server/0166-Piglin-portal-spawn-modifier.patch
+++ b/patches/server/0166-Piglin-portal-spawn-modifier.patch
@@ -31,10 +31,10 @@ index 65fa00b3d4d35a4125f8de444e77ac54e9e28551..dd9badfb2879def258bf725a5d802f7d
pos = pos.below();
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f6a3c452cc75668ede7c5ddde338088e214c1476..dfaf6027f7d457004dbe2c883a7c19a8dca2a35f 100644
+index 1378457d826d11e45fd1deef4666a6e25614c06a..b1d95ec111e83bfac2f6a1283eb19dc7e89a42d0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1617,6 +1617,7 @@ public class PurpurWorldConfig {
+@@ -1622,6 +1622,7 @@ public class PurpurWorldConfig {
public double piglinMaxHealth = 16.0D;
public boolean piglinBypassMobGriefing = false;
public boolean piglinTakeDamageFromWater = false;
@@ -42,7 +42,7 @@ index f6a3c452cc75668ede7c5ddde338088e214c1476..dfaf6027f7d457004dbe2c883a7c19a8
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -1629,6 +1630,7 @@ public class PurpurWorldConfig {
+@@ -1634,6 +1635,7 @@ public class PurpurWorldConfig {
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
diff --git a/patches/server/0168-Config-for-wither-explosion-radius.patch b/patches/server/0168-Config-for-wither-explosion-radius.patch
index 8bb4da776..e4ee88d80 100644
--- a/patches/server/0168-Config-for-wither-explosion-radius.patch
+++ b/patches/server/0168-Config-for-wither-explosion-radius.patch
@@ -18,10 +18,10 @@ index 1654b08f76e02e20a8ce5de618f8def82f1feeeb..7938a81fea35ef79fb1054e7b1117573
if (!event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index dfaf6027f7d457004dbe2c883a7c19a8dca2a35f..6ba44b14b94bc9657ff960cce6cce9809d651cbd 100644
+index b1d95ec111e83bfac2f6a1283eb19dc7e89a42d0..54745fe3974277adf245152df67ba9a991cfb2d6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2251,6 +2251,7 @@ public class PurpurWorldConfig {
+@@ -2256,6 +2256,7 @@ public class PurpurWorldConfig {
public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false;
@@ -29,7 +29,7 @@ index dfaf6027f7d457004dbe2c883a7c19a8dca2a35f..6ba44b14b94bc9657ff960cce6cce980
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2271,6 +2272,7 @@ public class PurpurWorldConfig {
+@@ -2276,6 +2277,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/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch
index 10eab0776..90a58bd76 100644
--- a/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch
+++ b/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch
@@ -18,10 +18,10 @@ index 32995cb5efdad0bc34ecacacb78cccd21220ba8d..ee1ed9262e4f2a8f1889feb7b2d4f64a
if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) {
level.playSound(player, blockPos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 6ba44b14b94bc9657ff960cce6cce9809d651cbd..df63de388fa4c7ea61617ac44d30892847ace264 100644
+index 54745fe3974277adf245152df67ba9a991cfb2d6..b69022b6fa96e048bbf3aa704bcbde445378d80f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -441,6 +441,21 @@ public class PurpurWorldConfig {
+@@ -446,6 +446,21 @@ public class PurpurWorldConfig {
snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage);
}
diff --git a/patches/server/0171-Configurable-piston-push-limit.patch b/patches/server/0171-Configurable-piston-push-limit.patch
index d8475987d..e91fe3d0f 100644
--- a/patches/server/0171-Configurable-piston-push-limit.patch
+++ b/patches/server/0171-Configurable-piston-push-limit.patch
@@ -36,10 +36,10 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index df63de388fa4c7ea61617ac44d30892847ace264..261b8f1dcae70370cfe91d54bb4012827facfbcc 100644
+index b69022b6fa96e048bbf3aa704bcbde445378d80f..2c8aea7e0d9c2ce577e16056725be22993d8174c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -609,6 +609,11 @@ public class PurpurWorldConfig {
+@@ -614,6 +614,11 @@ public class PurpurWorldConfig {
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
}
diff --git a/patches/server/0173-Configurable-mob-blindness.patch b/patches/server/0173-Configurable-mob-blindness.patch
index 059ce7f84..3c40cb752 100644
--- a/patches/server/0173-Configurable-mob-blindness.patch
+++ b/patches/server/0173-Configurable-mob-blindness.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness
Ported from https://github.com/raltsmc/mobblindness
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 4f9b44c1a1421969f454cb2984d0b7ce21357225..5fd7fc273f7b33e24d9b1a320c0bdd76c9ee0ac2 100644
+index 253ee4d72d1b40a49049692bc02f6be997a2e079..c3dfb85ecdd4c8bd888b8511f430b70cb2e41807 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1011,6 +1011,17 @@ public abstract class LivingEntity extends Entity {
@@ -28,10 +28,10 @@ index 4f9b44c1a1421969f454cb2984d0b7ce21357225..5fd7fc273f7b33e24d9b1a320c0bdd76
return d0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 261b8f1dcae70370cfe91d54bb4012827facfbcc..055ccefb43a42635fde5fb8dd787506d8b6382c5 100644
+index 2c8aea7e0d9c2ce577e16056725be22993d8174c..33842c96354a06fccec2c1dfbbb38204485ad3ac 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -129,6 +129,7 @@ public class PurpurWorldConfig {
+@@ -134,6 +134,7 @@ public class PurpurWorldConfig {
public boolean persistentDroppableEntityDisplayNames = false;
public boolean projectilesBypassMobGriefing = false;
public boolean tickFluids = true;
@@ -39,7 +39,7 @@ index 261b8f1dcae70370cfe91d54bb4012827facfbcc..055ccefb43a42635fde5fb8dd787506d
public double tridentLoyaltyVoidReturnHeight = 0.0D;
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
-@@ -149,6 +150,7 @@ public class PurpurWorldConfig {
+@@ -154,6 +155,7 @@ public class PurpurWorldConfig {
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids);
diff --git a/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch
index a08f27081..463b73be7 100644
--- a/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch
+++ b/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch
@@ -21,10 +21,10 @@ index bd58b7d364b5e0361e7b8c67d1b26b7f8d3906d3..b19e130b56839c261dd71bbf62b052ed
if (!event.isCancelled()) {
this.dead = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 055ccefb43a42635fde5fb8dd787506d8b6382c5..26f98a2ea5dd4ba9207c6991c419dedab65775f2 100644
+index 33842c96354a06fccec2c1dfbbb38204485ad3ac..50bb6f8136354061bacb0d2d7523a83402cf3e5e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -901,6 +901,7 @@ public class PurpurWorldConfig {
+@@ -906,6 +906,7 @@ public class PurpurWorldConfig {
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false;
@@ -32,7 +32,7 @@ index 055ccefb43a42635fde5fb8dd787506d8b6382c5..26f98a2ea5dd4ba9207c6991c419deda
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -916,6 +917,7 @@ public class PurpurWorldConfig {
+@@ -921,6 +922,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/0176-Iron-golem-calm-anger-options.patch b/patches/server/0176-Iron-golem-calm-anger-options.patch
index c9df7fe48..35d017aa9 100644
--- a/patches/server/0176-Iron-golem-calm-anger-options.patch
+++ b/patches/server/0176-Iron-golem-calm-anger-options.patch
@@ -26,10 +26,10 @@ index e3d725e656bc5ffc5fc92133794a80799fb21c48..fdad66c329ff8945a76a944deca7751a
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 26f98a2ea5dd4ba9207c6991c419dedab65775f2..ff0d9544276d3d71a0a5fd58d0ad683f60cebd48 100644
+index 50bb6f8136354061bacb0d2d7523a83402cf3e5e..8b3914b8892a5a6f2e18962b7daa0bb3f0a40565 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1359,6 +1359,8 @@ public class PurpurWorldConfig {
+@@ -1364,6 +1364,8 @@ public class PurpurWorldConfig {
public boolean ironGolemCanSwim = false;
public double ironGolemMaxHealth = 100.0D;
public boolean ironGolemTakeDamageFromWater = false;
@@ -38,7 +38,7 @@ index 26f98a2ea5dd4ba9207c6991c419dedab65775f2..ff0d9544276d3d71a0a5fd58d0ad683f
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
-@@ -1371,6 +1373,8 @@ public class PurpurWorldConfig {
+@@ -1376,6 +1378,8 @@ public class PurpurWorldConfig {
}
ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth);
ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater);
diff --git a/patches/server/0177-Breedable-parrots.patch b/patches/server/0177-Breedable-parrots.patch
index 3ffd6042d..35a6fc6cb 100644
--- a/patches/server/0177-Breedable-parrots.patch
+++ b/patches/server/0177-Breedable-parrots.patch
@@ -50,10 +50,10 @@ index 11291851f11127f6781b3c77c0d59534606eb9dd..4f4df0f5459e3f62db4b15c57a536dc2
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ff0d9544276d3d71a0a5fd58d0ad683f60cebd48..f024c2671738cc80069e616b615a6842110f0ce7 100644
+index 8b3914b8892a5a6f2e18962b7daa0bb3f0a40565..8d40f13c8dbaf67d67fdd4cb7b4b05b3535c9243 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1529,6 +1529,7 @@ public class PurpurWorldConfig {
+@@ -1534,6 +1534,7 @@ public class PurpurWorldConfig {
public double parrotMaxY = 320D;
public double parrotMaxHealth = 6.0D;
public boolean parrotTakeDamageFromWater = false;
@@ -61,7 +61,7 @@ index ff0d9544276d3d71a0a5fd58d0ad683f60cebd48..f024c2671738cc80069e616b615a6842
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
-@@ -1541,6 +1542,7 @@ public class PurpurWorldConfig {
+@@ -1546,6 +1547,7 @@ public class PurpurWorldConfig {
}
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater);
diff --git a/patches/server/0178-Configurable-powered-rail-boost-modifier.patch b/patches/server/0178-Configurable-powered-rail-boost-modifier.patch
index aed8d5807..2c9a49a12 100644
--- a/patches/server/0178-Configurable-powered-rail-boost-modifier.patch
+++ b/patches/server/0178-Configurable-powered-rail-boost-modifier.patch
@@ -18,10 +18,10 @@ index 05031a1a8b9c42ea5cdf9d8ad9b6aeebe1fc823c..8c6e5e98dd5f425bd9322c01bba06c90
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 f024c2671738cc80069e616b615a6842110f0ce7..f4e4298c6a9b1e7de684f9c2aa7934420ad8cd27 100644
+index 8d40f13c8dbaf67d67fdd4cb7b4b05b3535c9243..062cdb68d943a11f842fc34deed06a435a37a524 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -268,6 +268,7 @@ public class PurpurWorldConfig {
+@@ -273,6 +273,7 @@ public class PurpurWorldConfig {
public boolean minecartControllableFallDamage = true;
public double minecartControllableBaseSpeed = 0.1D;
public Map minecartControllableBlockSpeeds = new HashMap<>();
@@ -29,7 +29,7 @@ index f024c2671738cc80069e616b615a6842110f0ce7..f4e4298c6a9b1e7de684f9c2aa793442
private void minecartSettings() {
if (PurpurConfig.version < 12) {
boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere);
-@@ -320,6 +321,7 @@ public class PurpurWorldConfig {
+@@ -325,6 +326,7 @@ public class PurpurWorldConfig {
set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D);
set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D);
}
diff --git a/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch
index 3be2503f2..9851bbd6c 100644
--- a/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch
+++ b/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch
@@ -18,10 +18,10 @@ index b416c8606ef53aa49458bb6f36689068bc9b54cc..d9fe4f09e48f67fd4b79528a38fcaef9
f += f1;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f4e4298c6a9b1e7de684f9c2aa7934420ad8cd27..ab248e6442862d136c853d8053f15709e0f05dc3 100644
+index 062cdb68d943a11f842fc34deed06a435a37a524..4b9a7e7e97e3c4c18a1d6eb0158c17167f9ab2b3 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 {
+@@ -372,6 +372,7 @@ public class PurpurWorldConfig {
public boolean creativeOnePunch = false;
public boolean playerSleepNearMonsters = false;
public boolean playersSkipNight = true;
@@ -29,7 +29,7 @@ index f4e4298c6a9b1e7de684f9c2aa7934420ad8cd27..ab248e6442862d136c853d8053f15709
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -388,6 +389,7 @@ public class PurpurWorldConfig {
+@@ -393,6 +394,7 @@ public class PurpurWorldConfig {
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters);
playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight);
diff --git a/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch
index 9200046f7..929c1a023 100644
--- a/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch
+++ b/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch
@@ -19,10 +19,10 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7
BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ab248e6442862d136c853d8053f15709e0f05dc3..d945a8adf68cc7a8a84ce5d0461fc861eb75d305 100644
+index 4b9a7e7e97e3c4c18a1d6eb0158c17167f9ab2b3..95d6d459a1e4ddc52db8ed8af7efc5520f7b6968 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -542,6 +542,11 @@ public class PurpurWorldConfig {
+@@ -547,6 +547,11 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch
index 6b1ceee8b..2f7e53a89 100644
--- a/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch
+++ b/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch
@@ -9,7 +9,7 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for
creative players) instead of routing it through the LootableBuilder.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 12d11659134410b2720a00297b796bba3357c89a..95f047e6eb523d07e2b29c8f48e4b0d59d140144 100644
+index d24938fd4cf5645da6443cc7c908b1eb717675a5..7385f94e034232e92dce775ffb26d1a450f02509 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -422,7 +422,7 @@ public class ServerPlayerGameMode {
@@ -35,10 +35,10 @@ index 0ca6d495005bded447c3f940dfd571a003301cb0..f4c47f7a7f2572dedbaee4890c98e1f3
blockEntity.saveToItem(itemStack);
if (shulkerBoxBlockEntity.hasCustomName()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d945a8adf68cc7a8a84ce5d0461fc861eb75d305..d3c324e1192871540cc9568b70d519ae439c2a4b 100644
+index 95d6d459a1e4ddc52db8ed8af7efc5520f7b6968..4600ce2b30d9bffe412c9980db191572d723cc81 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -651,6 +651,11 @@ public class PurpurWorldConfig {
+@@ -656,6 +656,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch
index bf68db32c..0822e47cf 100644
--- a/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch
+++ b/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Bee can work when raining or at night
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index 6bcdc433ab80be133cfb56beda8b01d995ace7af..a51fd1e4e6fb816f544112249e7f7192b334b255 100644
+index 2cea3d633209665d0cab2b211b817e3bbd61d3a2..a7189aff3d36efaee2c41336361960d3c9fa6f72 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -410,7 +410,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -31,10 +31,10 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c
return false;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d3c324e1192871540cc9568b70d519ae439c2a4b..974914ca4c7e172570a996f695e949d4b714d7b7 100644
+index 4600ce2b30d9bffe412c9980db191572d723cc81..ac63657e39584210cba638af15b81275ae75e7be 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -761,6 +761,8 @@ public class PurpurWorldConfig {
+@@ -766,6 +766,8 @@ public class PurpurWorldConfig {
public double beeMaxHealth = 10.0D;
public int beeBreedingTicks = 6000;
public boolean beeTakeDamageFromWater = false;
@@ -43,7 +43,7 @@ index d3c324e1192871540cc9568b70d519ae439c2a4b..974914ca4c7e172570a996f695e949d4
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -774,6 +776,8 @@ public class PurpurWorldConfig {
+@@ -779,6 +781,8 @@ public class PurpurWorldConfig {
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater);
diff --git a/patches/server/0186-Config-MobEffect-by-world.patch b/patches/server/0186-Config-MobEffect-by-world.patch
index 91364b485..49551cec3 100644
--- a/patches/server/0186-Config-MobEffect-by-world.patch
+++ b/patches/server/0186-Config-MobEffect-by-world.patch
@@ -40,10 +40,10 @@ index 17ffab92f4ae2c06fa9f9249a474d4b6c9c55090..bb15cf2aa35ce8754bba56f5b312d92b
((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 974914ca4c7e172570a996f695e949d4b714d7b7..a0c47d3afcf643a4288e0bf166cc921a8d3d3c42 100644
+index ac63657e39584210cba638af15b81275ae75e7be..1b332e38389b9e39c1546d7cd4a071453674b1b5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -324,6 +324,21 @@ public class PurpurWorldConfig {
+@@ -329,6 +329,21 @@ public class PurpurWorldConfig {
poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier);
}
diff --git a/patches/server/0187-Beacon-Activation-Range-Configurable.patch b/patches/server/0187-Beacon-Activation-Range-Configurable.patch
index 9d5adf316..d833bd7f2 100644
--- a/patches/server/0187-Beacon-Activation-Range-Configurable.patch
+++ b/patches/server/0187-Beacon-Activation-Range-Configurable.patch
@@ -26,10 +26,10 @@ index 5f6eeb36f57bd342b18590c8f0ffb668d2bf273c..59259dd3d8d8fd02c02d7435a4443779
} else {
return effectRange;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a0c47d3afcf643a4288e0bf166cc921a8d3d3c42..9d146065ca37c4af4fcf8ed32eb997ebb7d4cb64 100644
+index 1b332e38389b9e39c1546d7cd4a071453674b1b5..15ec722356c9fc34e04760da65882213263eb938 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -514,6 +514,17 @@ public class PurpurWorldConfig {
+@@ -519,6 +519,17 @@ public class PurpurWorldConfig {
anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors);
}
diff --git a/patches/server/0188-Add-toggle-for-sand-duping-fix.patch b/patches/server/0188-Add-toggle-for-sand-duping-fix.patch
index ef5115b32..bd938c698 100644
--- a/patches/server/0188-Add-toggle-for-sand-duping-fix.patch
+++ b/patches/server/0188-Add-toggle-for-sand-duping-fix.patch
@@ -27,10 +27,10 @@ index ef07967b64180c54338b8fb2ba1780adec87f333..71e4178bf7d553141719c8a6cb7488d3
}
// Paper end - fix sand duping
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9d146065ca37c4af4fcf8ed32eb997ebb7d4cb64..ec6e01ef3b3d20dba9b2c55cc6370c780b1105a6 100644
+index 15ec722356c9fc34e04760da65882213263eb938..6d6b3105e8fe2f69ef8d8b94ee22b7f3bce4416f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -677,6 +677,11 @@ public class PurpurWorldConfig {
+@@ -682,6 +682,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch
index f7394c450..eef4965f9 100644
--- a/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch
+++ b/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for end portal safe teleporting
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 2464e334de7e7f2d09e41b6b457a731239505db8..151e573ece15fe19e5b09662a9bb7459aef7e9ae 100644
+index d896493356fdb59607ed193d87c55cfa2ee51b2c..db6a37a87823a3f305249c0fb7c9d90f669c5124 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2930,7 +2930,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -45,10 +45,10 @@ index 04bae5085756842ce88710646a17e9dc1aad5994..e7658fa9806701505e15cbf1d28ea3bd
entity.portalWorld = ((ServerLevel)world);
entity.portalBlock = pos.immutable();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7804c2850e8765af7c7715fb33509d448b52cfab..a66e47e5db1a1e1037a96d469a46ef998a300690 100644
+index 6d6b3105e8fe2f69ef8d8b94ee22b7f3bce4416f..dd632b6282eeded3941a9f55d543017d573d1b99 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -628,6 +628,11 @@ public class PurpurWorldConfig {
+@@ -633,6 +633,11 @@ public class PurpurWorldConfig {
furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath);
}
diff --git a/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch
index e4fbfdd6e..37e8cb6ff 100644
--- a/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch
+++ b/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch
@@ -55,10 +55,10 @@ index 2934b6de1f1fb914a532ee20184df99d1acd8e65..65421cfff05c0493f5fef1bdff03172c
public void eat(Item item, ItemStack stack) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8485e62dabd88df10635b9e1b58aae1c5d0b5bb7..148876c6abc1104074e99e9d9080689ab93437b7 100644
+index dd632b6282eeded3941a9f55d543017d573d1b99..4ae0d4bbe83fcdb92b5f628626e1a55062f88cf7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -383,6 +383,7 @@ public class PurpurWorldConfig {
+@@ -388,6 +388,7 @@ public class PurpurWorldConfig {
public boolean playerSleepNearMonsters = false;
public boolean playersSkipNight = true;
public double playerCriticalDamageMultiplier = 1.5D;
@@ -66,7 +66,7 @@ index 8485e62dabd88df10635b9e1b58aae1c5d0b5bb7..148876c6abc1104074e99e9d9080689a
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -405,6 +406,7 @@ public class PurpurWorldConfig {
+@@ -410,6 +411,7 @@ 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/0195-Shulker-spawn-from-bullet-options.patch b/patches/server/0195-Shulker-spawn-from-bullet-options.patch
index e143a0853..33e2c98cd 100644
--- a/patches/server/0195-Shulker-spawn-from-bullet-options.patch
+++ b/patches/server/0195-Shulker-spawn-from-bullet-options.patch
@@ -61,10 +61,10 @@ index 2d3dbc228a6a7b88167a36ba739d9eb2f03472ba..7621978ab3d90d58e8b7c6807e0e0519
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 148876c6abc1104074e99e9d9080689ab93437b7..3010197f8f1c8666afbe3da6221ea115f090cf15 100644
+index 4ae0d4bbe83fcdb92b5f628626e1a55062f88cf7..164755c917c23eaed21273f297c9f157ae02822e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1905,6 +1905,11 @@ public class PurpurWorldConfig {
+@@ -1910,6 +1910,11 @@ public class PurpurWorldConfig {
public boolean shulkerControllable = true;
public double shulkerMaxHealth = 30.0D;
public boolean shulkerTakeDamageFromWater = false;
@@ -76,7 +76,7 @@ index 148876c6abc1104074e99e9d9080689ab93437b7..3010197f8f1c8666afbe3da6221ea115
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -1916,6 +1921,11 @@ public class PurpurWorldConfig {
+@@ -1921,6 +1926,11 @@ public class PurpurWorldConfig {
}
shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth);
shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater);
diff --git a/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch
index 00f415f9d..fc4478da6 100644
--- a/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch
+++ b/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch
@@ -18,10 +18,10 @@ index 21c9733065f6ecb265e4df8a7080697356c796ac..1ce51253b755c2ea4dca94c567935b07
public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE, CreativeModeTab.TAB_DECORATIONS);
public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT, CreativeModeTab.TAB_DECORATIONS);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 3010197f8f1c8666afbe3da6221ea115f090cf15..c66c9bb795b00f50137376e34b080e4656ab6322 100644
+index 164755c917c23eaed21273f297c9f157ae02822e..2021192f20005e09e9d39132743648ebad90046b 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 {
+@@ -220,6 +220,7 @@ public class PurpurWorldConfig {
public int enderPearlCooldown = 20;
public int enderPearlCooldownCreative = 20;
public float enderPearlEndermiteChance = 0.05F;
@@ -29,7 +29,7 @@ index 3010197f8f1c8666afbe3da6221ea115f090cf15..c66c9bb795b00f50137376e34b080e46
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -258,6 +259,7 @@ public class PurpurWorldConfig {
+@@ -263,6 +264,7 @@ public class PurpurWorldConfig {
enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown);
enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative);
enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance);
diff --git a/patches/server/0197-Option-to-make-drowned-break-doors.patch b/patches/server/0197-Option-to-make-drowned-break-doors.patch
index 854a1147f..189c37751 100644
--- a/patches/server/0197-Option-to-make-drowned-break-doors.patch
+++ b/patches/server/0197-Option-to-make-drowned-break-doors.patch
@@ -34,10 +34,10 @@ index 037d77b47d0be69dfeda01f4a0d52ad72aea2c8d..6e0a575a95ac0bcbc9e3909178ea566a
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c66c9bb795b00f50137376e34b080e4656ab6322..bd34d3fef3ad9631caaf5b04c6c46c5f1becea8a 100644
+index 2021192f20005e09e9d39132743648ebad90046b..61ea20ecf453cecf437317cd3cdbd9cef8d00540 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1039,6 +1039,7 @@ public class PurpurWorldConfig {
+@@ -1044,6 +1044,7 @@ public class PurpurWorldConfig {
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
public boolean drownedTakeDamageFromWater = false;
@@ -45,7 +45,7 @@ index c66c9bb795b00f50137376e34b080e4656ab6322..bd34d3fef3ad9631caaf5b04c6c46c5f
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
-@@ -1054,6 +1055,7 @@ public class PurpurWorldConfig {
+@@ -1059,6 +1060,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/0198-Configurable-hunger-starvation-damage.patch b/patches/server/0198-Configurable-hunger-starvation-damage.patch
index 88db10817..597cabf72 100644
--- a/patches/server/0198-Configurable-hunger-starvation-damage.patch
+++ b/patches/server/0198-Configurable-hunger-starvation-damage.patch
@@ -18,10 +18,10 @@ index 65421cfff05c0493f5fef1bdff03172c9e33f33e..63584faeec4e5013be7a377e3203ec16
this.tickTimer = 0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bd34d3fef3ad9631caaf5b04c6c46c5f1becea8a..481f59adbd5c93629a681988cf288e267e8982cb 100644
+index 61ea20ecf453cecf437317cd3cdbd9cef8d00540..e4ba016c2f89d9e95477d06a4c875e417bbd49ed 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2553,4 +2553,9 @@ public class PurpurWorldConfig {
+@@ -2558,4 +2558,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/0200-Armor-click-equip-options.patch b/patches/server/0200-Armor-click-equip-options.patch
index 4b66f14ff..8e5dcbe1e 100644
--- a/patches/server/0200-Armor-click-equip-options.patch
+++ b/patches/server/0200-Armor-click-equip-options.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Armor click equip options
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 95f047e6eb523d07e2b29c8f48e4b0d59d140144..5204b8157a45468a314bbcd2703896b9316128ac 100644
+index 7385f94e034232e92dce775ffb26d1a450f02509..28105d2d6d7e97c57246f7142c3bc2d593cf4ed0 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -484,7 +484,7 @@ public class ServerPlayerGameMode {
@@ -58,10 +58,10 @@ index 42f79d418ec4e2dbeac9a217d9dc144cda2ef714..250c0e31825f772d3fee7a523f150cb2
return InteractionResultHolder.fail(itemStack);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 481f59adbd5c93629a681988cf288e267e8982cb..bcb891f2530bcbfd7860e9f2bdf0a4b8e4a145f4 100644
+index e4ba016c2f89d9e95477d06a4c875e417bbd49ed..820ff330bd75b4ec67e64a8af32a22fc5e5af667 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -386,6 +386,8 @@ public class PurpurWorldConfig {
+@@ -391,6 +391,8 @@ public class PurpurWorldConfig {
public boolean playersSkipNight = true;
public double playerCriticalDamageMultiplier = 1.5D;
public boolean playerBurpWhenFull = false;
@@ -70,7 +70,7 @@ index 481f59adbd5c93629a681988cf288e267e8982cb..bcb891f2530bcbfd7860e9f2bdf0a4b8
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -409,6 +411,8 @@ public class PurpurWorldConfig {
+@@ -414,6 +416,8 @@ public class PurpurWorldConfig {
playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight);
playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier);
playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull);
diff --git a/patches/server/0203-Tool-actionable-options.patch b/patches/server/0203-Tool-actionable-options.patch
index 7fa6fb16f..9eea8641d 100644
--- a/patches/server/0203-Tool-actionable-options.patch
+++ b/patches/server/0203-Tool-actionable-options.patch
@@ -111,10 +111,10 @@ index 180aec596110309aade13d2080f8824d152b07cb..bf0e1f481b4c81f0663366bbe597b066
return InteractionResult.PASS;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bcb891f2530bcbfd7860e9f2bdf0a4b8e4a145f4..280e85f781f6f92943f5797ea4e9d2dc1c138497 100644
+index 820ff330bd75b4ec67e64a8af32a22fc5e5af667..b60a0cb6230bbe238679814eb1ff0b8218fc285a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -517,6 +517,159 @@ public class PurpurWorldConfig {
+@@ -522,6 +522,159 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch
index 7d3a0debb..789936746 100644
--- a/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch
+++ b/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch
@@ -19,10 +19,10 @@ index 62d6c5b7590ff4faef5d8c7a8be03155b7338480..72d94c79db5a6d0d41220b34ba6a1787
CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 67344a5ae42d670ff8e86f62714b637d5252c160..f228e69e8614039406297522199dd2733f65014a 100644
+index b60a0cb6230bbe238679814eb1ff0b8218fc285a..4b76301a2dd2e55c7293d064c032f626cf843160 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -216,6 +216,7 @@ public class PurpurWorldConfig {
+@@ -221,6 +221,7 @@ public class PurpurWorldConfig {
public int enderPearlCooldownCreative = 20;
public float enderPearlEndermiteChance = 0.05F;
public int glowBerriesEatGlowDuration = 0;
@@ -30,7 +30,7 @@ index 67344a5ae42d670ff8e86f62714b637d5252c160..f228e69e8614039406297522199dd273
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -260,6 +261,7 @@ public class PurpurWorldConfig {
+@@ -265,6 +266,7 @@ public class PurpurWorldConfig {
enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative);
enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance);
glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration);
diff --git a/patches/server/0208-Silk-touchable-budding-amethyst.patch b/patches/server/0208-Silk-touchable-budding-amethyst.patch
index 2dadb7132..c1857a6f4 100644
--- a/patches/server/0208-Silk-touchable-budding-amethyst.patch
+++ b/patches/server/0208-Silk-touchable-budding-amethyst.patch
@@ -24,10 +24,10 @@ index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a90
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f133ee81a0a1d65b4f1aaea82a7b4146f9ed6ff6..2b87c946b29460e0b6bad4f46b3fce6bd7ed8886 100644
+index 4b76301a2dd2e55c7293d064c032f626cf843160..0aac989d5580f2a85dd4624fd1a3b2203af341fb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -704,6 +704,11 @@ public class PurpurWorldConfig {
+@@ -709,6 +709,11 @@ public class PurpurWorldConfig {
}
}
@@ -39,7 +39,7 @@ index f133ee81a0a1d65b4f1aaea82a7b4146f9ed6ff6..2b87c946b29460e0b6bad4f46b3fce6b
public boolean chestOpenWithBlockOnTop = false;
private void chestSettings() {
chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop);
-@@ -2718,3 +2723,4 @@ public class PurpurWorldConfig {
+@@ -2723,3 +2728,4 @@ public class PurpurWorldConfig {
hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage);
}
}
diff --git a/patches/server/0209-Big-dripleaf-tilt-delay.patch b/patches/server/0209-Big-dripleaf-tilt-delay.patch
index 3c2d8fd55..a694095ef 100644
--- a/patches/server/0209-Big-dripleaf-tilt-delay.patch
+++ b/patches/server/0209-Big-dripleaf-tilt-delay.patch
@@ -24,10 +24,10 @@ index 63aa6b82ba21ec8e8f362b390063e4e275a979a5..81ed6e69494337f402a6d9f854fb26fa
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 2b87c946b29460e0b6bad4f46b3fce6bd7ed8886..c3e531123b83de34fafefc8c406da090ff6df089 100644
+index 0aac989d5580f2a85dd4624fd1a3b2203af341fb..dc4996d7ee6ffc2c3c7567472b9cf622e39bb5b9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -704,6 +704,22 @@ public class PurpurWorldConfig {
+@@ -709,6 +709,22 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0210-Player-ridable-in-water-option.patch b/patches/server/0210-Player-ridable-in-water-option.patch
index 636232ba4..317105f5e 100644
--- a/patches/server/0210-Player-ridable-in-water-option.patch
+++ b/patches/server/0210-Player-ridable-in-water-option.patch
@@ -21,10 +21,10 @@ index 1eb57eeaec24570cade410f40de9e8c244734217..870e794392b94d140db6d5650c3e7ae3
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 897bbfd91828124074a996dc63d17a2a7a196d2c..c475c40279368e61683a338a8e9d8cacf14ed2ef 100644
+index dc4996d7ee6ffc2c3c7567472b9cf622e39bb5b9..d97c25cbb32e2da125e881b180f3b32a5a6ac98f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -390,6 +390,7 @@ public class PurpurWorldConfig {
+@@ -395,6 +395,7 @@ public class PurpurWorldConfig {
public boolean playerBurpWhenFull = false;
public boolean playerArmorSwapping = false;
public boolean playerArmorSwappingCreativeMakesCopy = true;
@@ -32,7 +32,7 @@ index 897bbfd91828124074a996dc63d17a2a7a196d2c..c475c40279368e61683a338a8e9d8cac
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -415,6 +416,7 @@ public class PurpurWorldConfig {
+@@ -420,6 +421,7 @@ public class PurpurWorldConfig {
playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull);
playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping);
playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy);
diff --git a/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch
index 7ea7a6cd0..643e98304 100644
--- a/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch
+++ b/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch
@@ -18,10 +18,10 @@ index b0c4c90ab2d532a60911d53ac4764dcf49fff6c8..372400d5ce38407b577e5ee403ce39fc
boolean flag;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0fcd4d4a81519262a2c3c961bcb46548ea7a0955..c69967d0ecfdaf6e20117710bc44f4f02bb81c69 100644
+index d97c25cbb32e2da125e881b180f3b32a5a6ac98f..90c70d233327615004fc22cde6b9d71660bb0a5b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1298,6 +1298,7 @@ public class PurpurWorldConfig {
+@@ -1303,6 +1303,7 @@ public class PurpurWorldConfig {
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
public boolean endermanIgnorePlayerDragonHead = false;
public boolean endermanDisableStareAggro = false;
@@ -29,7 +29,7 @@ index 0fcd4d4a81519262a2c3c961bcb46548ea7a0955..c69967d0ecfdaf6e20117710bc44f4f0
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -1320,6 +1321,7 @@ public class PurpurWorldConfig {
+@@ -1325,6 +1326,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/0212-Add-compass-command.patch b/patches/server/0212-Add-compass-command.patch
index 65e604df6..16294dd99 100644
--- a/patches/server/0212-Add-compass-command.patch
+++ b/patches/server/0212-Add-compass-command.patch
@@ -17,7 +17,7 @@ index 2fbb65c685ac88c77d54f27a5981a132fb44e370..d0ca327337206a64609c1b6ee652cf99
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 8960cd89201758e325fb23bd15583af5bec39d7b..aace490037331f3ab59f2d13f6eecb3cf5ddfe80 100644
+index cc2b8be3eb4f51075784816a7696d2dca9ae6bea..b95685e13130a214165acccbe287c249ca73f1bf 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -263,6 +263,7 @@ public class ServerPlayer extends Player {
@@ -59,7 +59,7 @@ index 8960cd89201758e325fb23bd15583af5bec39d7b..aace490037331f3ab59f2d13f6eecb3c
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index ead823c2efe352d7c62daa491dd8c148c5dc9ab2..5c1da692d6ba145e5c9d08c17f69dbd4661a9ddb 100644
+index c1b7b01c7588cffed238143617dcf2f48a0b241a..c36321f395c7845c73541fa1eb320da7b12ad071 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -263,6 +263,11 @@ public class PurpurConfig {
@@ -89,10 +89,10 @@ index ead823c2efe352d7c62daa491dd8c148c5dc9ab2..5c1da692d6ba145e5c9d08c17f69dbd4
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 0b1c5a91568c2e7667dc04665ee89436d0fb92ad..837ea79e092ad00749ce6a5bead3a2a3bd42618f 100644
+index 90c70d233327615004fc22cde6b9d71660bb0a5b..64340213b2122ddc2e39eeac628b69d6f87c7a8f 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 {
+@@ -222,6 +222,7 @@ public class PurpurWorldConfig {
public float enderPearlEndermiteChance = 0.05F;
public int glowBerriesEatGlowDuration = 0;
public boolean shulkerBoxItemDropContentsWhenDestroyed = true;
@@ -100,7 +100,7 @@ index 0b1c5a91568c2e7667dc04665ee89436d0fb92ad..837ea79e092ad00749ce6a5bead3a2a3
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -262,6 +263,7 @@ public class PurpurWorldConfig {
+@@ -267,6 +268,7 @@ public class PurpurWorldConfig {
enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance);
glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration);
shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed);
diff --git a/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch b/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch
index d928382bb..795d5a8c6 100644
--- a/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch
+++ b/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch
@@ -20,10 +20,10 @@ index a1ffa88c3796df2973a2fc0aeafda5f78208bf85..7466c437b2e996f16a08aaefc5c2b7cb
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5ba395226887fd3afec971b5ee6e7d6cf6ce0673..129a017066c464ed6342db9782e2c7545b57a3cd 100644
+index 64340213b2122ddc2e39eeac628b69d6f87c7a8f..fd79206a0db36bb398fc30bc1dc218aee8c68391 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1528,6 +1528,7 @@ public class PurpurWorldConfig {
+@@ -1533,6 +1533,7 @@ public class PurpurWorldConfig {
public double horseMovementSpeedMax = 0.3375D;
public int horseBreedingTicks = 6000;
public boolean horseTakeDamageFromWater = false;
@@ -31,7 +31,7 @@ index 5ba395226887fd3afec971b5ee6e7d6cf6ce0673..129a017066c464ed6342db9782e2c754
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1545,6 +1546,7 @@ public class PurpurWorldConfig {
+@@ -1550,6 +1551,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);
diff --git a/patches/server/0214-Toggle-for-kinetic-damage.patch b/patches/server/0214-Toggle-for-kinetic-damage.patch
index 6a77b4278..0a8d22589 100644
--- a/patches/server/0214-Toggle-for-kinetic-damage.patch
+++ b/patches/server/0214-Toggle-for-kinetic-damage.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for kinetic damage
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6959ea94bc2efc4417345365be4c506ee11c60bf..6e7af1939df4ff99d6d4645f7ed270110d9d0373 100644
+index 5341f90a45473529095fec6f9b621949d66fa156..634363eb1c23e088b05d895565fb8ce9d3bdfb08 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2860,6 +2860,7 @@ public abstract class LivingEntity extends Entity {
@@ -17,10 +17,10 @@ index 6959ea94bc2efc4417345365be4c506ee11c60bf..6e7af1939df4ff99d6d4645f7ed27011
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f090de52394d0958cf73458db374f68fb75f5c58..00df79d18755aa199f6dab25402aa30d8781a0bc 100644
+index fd79206a0db36bb398fc30bc1dc218aee8c68391..1bf60fd08b6b3cae8989fd0e29c68f09fea1304b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -179,12 +179,14 @@ public class PurpurWorldConfig {
+@@ -184,12 +184,14 @@ public class PurpurWorldConfig {
public boolean elytraIgnoreUnbreaking = false;
public int elytraDamagePerFireworkBoost = 0;
public int elytraDamagePerTridentBoost = 0;
diff --git a/patches/server/0215-Add-Option-for-disable-observer-clocks.patch b/patches/server/0215-Add-Option-for-disable-observer-clocks.patch
index b95a171fc..de172a597 100644
--- a/patches/server/0215-Add-Option-for-disable-observer-clocks.patch
+++ b/patches/server/0215-Add-Option-for-disable-observer-clocks.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add Option for disable observer clocks
Allow to disable observer clocks: https://www.spigotmc.org/attachments/observerclock-gif.365936/
diff --git a/src/main/java/net/minecraft/world/level/block/ObserverBlock.java b/src/main/java/net/minecraft/world/level/block/ObserverBlock.java
-index 25c2c44bde443ab08734253ed7c98c81a345e573..e6a8c78a1a76241bcc6f0dee07838cb46e0f70bf 100644
+index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46ac37c468 100644
--- a/src/main/java/net/minecraft/world/level/block/ObserverBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ObserverBlock.java
@@ -64,6 +64,7 @@ public class ObserverBlock extends DirectionalBlock {
@@ -18,10 +18,10 @@ index 25c2c44bde443ab08734253ed7c98c81a345e573..e6a8c78a1a76241bcc6f0dee07838cb4
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 00df79d18755aa199f6dab25402aa30d8781a0bc..63a5e3cf2f185b07e053b162a890389732865f98 100644
+index 1bf60fd08b6b3cae8989fd0e29c68f09fea1304b..fb813690e2e8e0cd98a01fdaff2ce755d94d60d0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -362,6 +362,11 @@ public class PurpurWorldConfig {
+@@ -367,6 +367,11 @@ public class PurpurWorldConfig {
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);
}
diff --git a/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch
index 44fb1e086..27da53955 100644
--- a/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch
+++ b/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Customizeable Zombie Villager curing times
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
-index c90cf19a4c29aa33c96a67bfab24cbbb56d783da..54b5749a5e40ed9042af1c4904afcdc4af157d82 100644
+index aed21936435edcc83c8da714910132157fa57aa6..2bf8c32afe73668eedc15b2ae5bd4982a781ad2d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -217,7 +217,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -18,10 +18,10 @@ index c90cf19a4c29aa33c96a67bfab24cbbb56d783da..54b5749a5e40ed9042af1c4904afcdc4
return InteractionResult.SUCCESS;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 943e36e1e10240789836452d214505fd5f49bbd6..1aaa871a1d39022b25e514f68f436bad52e45b10 100644
+index fb813690e2e8e0cd98a01fdaff2ce755d94d60d0..676fd7d6163c793e468af998f87eee5d86b419a5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2704,6 +2704,8 @@ public class PurpurWorldConfig {
+@@ -2709,6 +2709,8 @@ public class PurpurWorldConfig {
public double zombieVillagerJockeyChance = 0.05D;
public boolean zombieVillagerJockeyTryExistingChickens = true;
public boolean zombieVillagerTakeDamageFromWater = false;
@@ -30,7 +30,7 @@ index 943e36e1e10240789836452d214505fd5f49bbd6..1aaa871a1d39022b25e514f68f436bad
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -2719,6 +2721,8 @@ public class PurpurWorldConfig {
+@@ -2724,6 +2726,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/0217-Option-for-sponges-to-work-on-lava.patch b/patches/server/0217-Option-for-sponges-to-work-on-lava.patch
index 03590460c..224950dc0 100644
--- a/patches/server/0217-Option-for-sponges-to-work-on-lava.patch
+++ b/patches/server/0217-Option-for-sponges-to-work-on-lava.patch
@@ -18,10 +18,10 @@ index d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829..df04a571ebd3c04bc7b58c1ee5661a1f
++i;
if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 1aaa871a1d39022b25e514f68f436bad52e45b10..dadd4ae7e3f5f88e66499ce11baccf04d9b098c2 100644
+index 676fd7d6163c793e468af998f87eee5d86b419a5..c2d73249ec7cb74a318d2c33159ad6aeb713bfed 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -904,9 +904,11 @@ public class PurpurWorldConfig {
+@@ -909,9 +909,11 @@ public class PurpurWorldConfig {
public int spongeAbsorptionArea = 64;
public int spongeAbsorptionRadius = 6;
diff --git a/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch
index d010cc8ca..aec2a8419 100644
--- a/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch
+++ b/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch
@@ -18,10 +18,10 @@ index 01397e9daf03a308707cc7e2bb85db68137d3021..0dd31e45252d54b8bfa3645b25c984de
// this.world.globalLevelEvent(1023, new BlockPosition(this), 0);
//int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index dadd4ae7e3f5f88e66499ce11baccf04d9b098c2..aa4331974afdd07c11353358fad4dec5309809e6 100644
+index c2d73249ec7cb74a318d2c33159ad6aeb713bfed..504487696324b53cebdb10e635c9f7aae733c028 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2549,6 +2549,7 @@ public class PurpurWorldConfig {
+@@ -2554,6 +2554,7 @@ public class PurpurWorldConfig {
public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false;
public float witherExplosionRadius = 1.0F;
@@ -29,7 +29,7 @@ index dadd4ae7e3f5f88e66499ce11baccf04d9b098c2..aa4331974afdd07c11353358fad4dec5
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2570,6 +2571,7 @@ public class PurpurWorldConfig {
+@@ -2575,6 +2576,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/0219-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch
index 4e272a8eb..931e4b32b 100644
--- a/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch
+++ b/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch
@@ -18,10 +18,10 @@ index 0fbabb84ef13e68b12212d9bfeb885c78893c116..56fa0e377b20ed063e47358be9e6bba8
return false;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index aa4331974afdd07c11353358fad4dec5309809e6..2ce8414941f4ef4fa5d1b45c9515a1bd0be7c5f1 100644
+index 504487696324b53cebdb10e635c9f7aae733c028..5326ffafa9ef7568f01840cb14c7c13d7965175c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -736,6 +736,11 @@ public class PurpurWorldConfig {
+@@ -741,6 +741,11 @@ public class PurpurWorldConfig {
buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch);
}
diff --git a/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch
index 662c2494f..94fb9c377 100644
--- a/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch
+++ b/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch
@@ -26,10 +26,10 @@ index 12643d60f4bfa8e07901aa0a556a1a245b0a7fb4..96a4a9f9b673a07630493290f5d5315e
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 29d09394eb6ee9fc7f412ffd9b0423b58a8b11fc..497696a008d6508aee4f0facb36258af48c3fec2 100644
+index 5326ffafa9ef7568f01840cb14c7c13d7965175c..25ac97095cf7099f78426c56d48864299d33e96c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -400,6 +400,7 @@ public class PurpurWorldConfig {
+@@ -405,6 +405,7 @@ public class PurpurWorldConfig {
public boolean playerArmorSwapping = false;
public boolean playerArmorSwappingCreativeMakesCopy = true;
public boolean playerRidableInWater = false;
@@ -37,7 +37,7 @@ index 29d09394eb6ee9fc7f412ffd9b0423b58a8b11fc..497696a008d6508aee4f0facb36258af
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -426,6 +427,7 @@ public class PurpurWorldConfig {
+@@ -431,6 +432,7 @@ public class PurpurWorldConfig {
playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping);
playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy);
playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater);
diff --git a/patches/server/0221-Conduit-behavior-configuration.patch b/patches/server/0221-Conduit-behavior-configuration.patch
index 615fc2572..86004aa5a 100644
--- a/patches/server/0221-Conduit-behavior-configuration.patch
+++ b/patches/server/0221-Conduit-behavior-configuration.patch
@@ -44,10 +44,10 @@ index 05eab04e4aec4151018f25b59f92ddbbb4c09f87..8db906e021ca57c7f2a1e7002647e5c5
}
CraftEventFactory.blockDamage = null;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index de0a8973d426544602b2f3ee95b9cdede86d7265..f8074566f211075cdfcbba1a5b54ff30dd329c14 100644
+index 25ac97095cf7099f78426c56d48864299d33e96c..48ad9e06f7f035dce6c294647bfeb9a579b37a5b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2768,5 +2768,28 @@ public class PurpurWorldConfig {
+@@ -2773,5 +2773,28 @@ public class PurpurWorldConfig {
private void hungerSettings() {
hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage);
}
diff --git a/patches/server/0222-Cauldron-fill-chances.patch b/patches/server/0222-Cauldron-fill-chances.patch
index 00f1d3ace..f2f0456d8 100644
--- a/patches/server/0222-Cauldron-fill-chances.patch
+++ b/patches/server/0222-Cauldron-fill-chances.patch
@@ -47,10 +47,10 @@ index ef15adf66ea994d15a7d2718dd3d22cd07c31f98..dd87e3efdeafb211c1e44f8dc3348830
if (dripChance < f1) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f8074566f211075cdfcbba1a5b54ff30dd329c14..3782f9e3979003039fa42abd830639a31fcc03f0 100644
+index 48ad9e06f7f035dce6c294647bfeb9a579b37a5b..c63cca8e91bbfc8633a886df2d6f198f947bb3e1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2791,5 +2791,16 @@ public class PurpurWorldConfig {
+@@ -2796,5 +2796,16 @@ public class PurpurWorldConfig {
});
conduitBlocks = conduitBlockList.toArray(Block[]::new);
}
diff --git a/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch
index 372e9356a..a5056a736 100644
--- a/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch
+++ b/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch
@@ -18,10 +18,10 @@ index ede91a2fbe67480d2b6bcdeb776f87da0b69bdae..444bec169c0cd5fe1a23f1d14fae1a10
if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) {
double g = (double)(x - direction.getStepX()) + 0.5D;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f94960a51c983cf66efcfed7622c7c515ccada29..fc3847897170994bbd4e8908a6740a7030048dc8 100644
+index c63cca8e91bbfc8633a886df2d6f198f947bb3e1..1312bcb035794c7143e24c9e1a06081af85cd91d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -135,6 +135,7 @@ public class PurpurWorldConfig {
+@@ -140,6 +140,7 @@ public class PurpurWorldConfig {
public double voidDamageDealt = 4.0D;
public int raidCooldownSeconds = 0;
public int animalBreedingCooldownSeconds = 0;
@@ -29,7 +29,7 @@ index f94960a51c983cf66efcfed7622c7c515ccada29..fc3847897170994bbd4e8908a6740a70
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
-@@ -156,6 +157,7 @@ public class PurpurWorldConfig {
+@@ -161,6 +162,7 @@ public class PurpurWorldConfig {
voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt);
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
diff --git a/patches/server/0224-Shulker-change-color-with-dye.patch b/patches/server/0224-Shulker-change-color-with-dye.patch
index 5ac261929..134ee248b 100644
--- a/patches/server/0224-Shulker-change-color-with-dye.patch
+++ b/patches/server/0224-Shulker-change-color-with-dye.patch
@@ -47,10 +47,10 @@ index ada070d8e1a2d328c02455eb9e5ad056046bcd0a..691b59f784e34b061ea156a3236c09f2
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index beec1bb2c0c606c53f18bb9c831ec8d098270483..20d396b63492712dacbb791040189301ab2df453 100644
+index 1312bcb035794c7143e24c9e1a06081af85cd91d..55733b718b077d90802e2bdace3dbcab76a166f2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2120,6 +2120,7 @@ public class PurpurWorldConfig {
+@@ -2125,6 +2125,7 @@ public class PurpurWorldConfig {
public double shulkerSpawnFromBulletNearbyRange = 8.0D;
public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0";
public boolean shulkerSpawnFromBulletRandomColor = false;
@@ -58,7 +58,7 @@ index beec1bb2c0c606c53f18bb9c831ec8d098270483..20d396b63492712dacbb791040189301
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -2136,6 +2137,7 @@ public class PurpurWorldConfig {
+@@ -2141,6 +2142,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/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
index cd3e7feda..e74e5764c 100644
--- a/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
+++ b/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 9a3ec0c8f1eacb06d383b666c567853acf8204e4..692fa17277cf89aebb3d98269e6b0e8271feb0ba 100644
+index 70e7ab610babafb0b3af5e22100876acae3a5919..81a0047e04f9be9dd8030fb68f2ce59c166700c1 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1143,6 +1143,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -25,10 +25,10 @@ index 9a3ec0c8f1eacb06d383b666c567853acf8204e4..692fa17277cf89aebb3d98269e6b0e82
// 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 3b2bfa5a72e4b0b5e6bb9e9f88645eda50877879..12038651b988ec3b67feff352a494dc2a99b843a 100644
+index 55733b718b077d90802e2bdace3dbcab76a166f2..0ec0db28bf3fa246a5f57c8b36fd8a43e8a72cba 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -136,6 +136,8 @@ public class PurpurWorldConfig {
+@@ -141,6 +141,8 @@ public class PurpurWorldConfig {
public int raidCooldownSeconds = 0;
public int animalBreedingCooldownSeconds = 0;
public boolean mobsIgnoreRails = false;
@@ -37,7 +37,7 @@ index 3b2bfa5a72e4b0b5e6bb9e9f88645eda50877879..12038651b988ec3b67feff352a494dc2
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
-@@ -158,6 +160,8 @@ public class PurpurWorldConfig {
+@@ -163,6 +165,8 @@ public class PurpurWorldConfig {
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails);
diff --git a/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
index d79d0a3b2..d4dbb360e 100644
--- a/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
+++ b/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
@@ -45,10 +45,10 @@ index bcc1ce196c1dbf60cf6ae73d95766dc41ed22012..ad0ee0d333ffd862fe74ac3a097c51d5
public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS)));
public static final Block BIG_DRIPLEAF = register("big_dripleaf", new BigDripleafBlock(BlockBehaviour.Properties.of(Material.PLANT).strength(0.1F).sound(SoundType.BIG_DRIPLEAF)));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ae7c6a18cca40b779c1beefc44b8a96accb53d9a..ac8f98c7a7f580e7371884994a512820d18bfa74 100644
+index 0ec0db28bf3fa246a5f57c8b36fd8a43e8a72cba..edb1390ae7f23d88ee8606dc93349488c694aa25 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -696,6 +696,11 @@ public class PurpurWorldConfig {
+@@ -701,6 +701,11 @@ public class PurpurWorldConfig {
anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors);
}
@@ -60,7 +60,7 @@ index ae7c6a18cca40b779c1beefc44b8a96accb53d9a..ac8f98c7a7f580e7371884994a512820
public int beaconLevelOne = 20;
public int beaconLevelTwo = 30;
public int beaconLevelThree = 40;
-@@ -825,6 +830,11 @@ public class PurpurWorldConfig {
+@@ -830,6 +835,11 @@ public class PurpurWorldConfig {
farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling);
}
diff --git a/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch
index 1a07b5b44..863460e4a 100644
--- a/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch
+++ b/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 5204b8157a45468a314bbcd2703896b9316128ac..4fb8ced22cb9f106fbe39ca233a844a7effb824a 100644
+index 28105d2d6d7e97c57246f7142c3bc2d593cf4ed0..af8cde5c413ee1ee410c728f56b4a24e9ee72985 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -511,6 +511,7 @@ public class ServerPlayerGameMode {
@@ -36,7 +36,7 @@ index 5204b8157a45468a314bbcd2703896b9316128ac..4fb8ced22cb9f106fbe39ca233a844a7
+ // 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 aa41e4aed283297b923985f7ceee914cb62666a9..4d61504698a54af354fdf047426f87771397cc02 100644
+index 9aa0c7eddccb7a81834582f4f50e7f6b93a688e8..65fe07e77745ec0c950117e8057368159833736c 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1999,6 +1999,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
@@ -48,10 +48,10 @@ index aa41e4aed283297b923985f7ceee914cb62666a9..4d61504698a54af354fdf047426f8777
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 db2a2a2845cf9155875d0ae1a11fce0dc2b6b4e7..95a643519ce3e4ef376acc2e8e2456595583db38 100644
+index edb1390ae7f23d88ee8606dc93349488c694aa25..e78b282022a72ff52ea941d661e1978b6eedc887 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -407,6 +407,7 @@ public class PurpurWorldConfig {
+@@ -412,6 +412,7 @@ public class PurpurWorldConfig {
public boolean playerArmorSwappingCreativeMakesCopy = true;
public boolean playerRidableInWater = false;
public boolean playerRemoveBindingWithWeakness = false;
@@ -59,7 +59,7 @@ index db2a2a2845cf9155875d0ae1a11fce0dc2b6b4e7..95a643519ce3e4ef376acc2e8e245659
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -434,6 +435,7 @@ public class PurpurWorldConfig {
+@@ -439,6 +440,7 @@ public class PurpurWorldConfig {
playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy);
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/0230-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch
index 6050032c5..b47d6cfce 100644
--- a/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch
+++ b/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
-index 1e95fa49a5dc8b756756924cbaf12d49ad33a274..89e3eec134868f727d776ee8144b291518a3931a 100644
+index b0c933644c1f4b5aa142c7c4d26a9b81cb4051f7..f8be4c96e7e7b8e6d8c538b1f425f01d866ce8f9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -79,6 +79,7 @@ public class Dolphin extends WaterAnimal {
@@ -47,10 +47,10 @@ index 1e95fa49a5dc8b756756924cbaf12d49ad33a274..89e3eec134868f727d776ee8144b2915
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 484db044eff9196d294b8afc272798b892585fa6..75cf05bef0cadd50ec86cd501d5e3afeb6128915 100644
+index e78b282022a72ff52ea941d661e1978b6eedc887..3bef36c72bd69b2751ca317223fbf8a50e7bc92a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1204,6 +1204,7 @@ public class PurpurWorldConfig {
+@@ -1209,6 +1209,7 @@ public class PurpurWorldConfig {
public double dolphinMaxHealth = 10.0D;
public boolean dolphinDisableTreasureSearching = false;
public boolean dolphinTakeDamageFromWater = false;
@@ -58,7 +58,7 @@ index 484db044eff9196d294b8afc272798b892585fa6..75cf05bef0cadd50ec86cd501d5e3afe
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -1218,6 +1219,7 @@ public class PurpurWorldConfig {
+@@ -1223,6 +1224,7 @@ public class PurpurWorldConfig {
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater);
diff --git a/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch
index 08ccd2abc..bf9b5baee 100644
--- a/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch
+++ b/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch
@@ -59,10 +59,10 @@ index 00eec3f51e62858e7b85b3340e76bf66bfd4370f..b5002526f20fb8ae52783a6ba95ccd2d
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 75cf05bef0cadd50ec86cd501d5e3afeb6128915..ad6ef83004344c4b7b23261a1757224ef25d9312 100644
+index 3bef36c72bd69b2751ca317223fbf8a50e7bc92a..b56bbca2961887ff993ac03d37cc0ec13f91f62d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1153,7 +1153,14 @@ public class PurpurWorldConfig {
+@@ -1158,7 +1158,14 @@ public class PurpurWorldConfig {
public int cowFeedMushrooms = 0;
public int cowBreedingTicks = 6000;
public boolean cowTakeDamageFromWater = false;
@@ -77,7 +77,7 @@ index 75cf05bef0cadd50ec86cd501d5e3afeb6128915..ad6ef83004344c4b7b23261a1757224e
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
cowControllable = getBoolean("mobs.cow.controllable", cowControllable);
-@@ -1166,6 +1173,8 @@ public class PurpurWorldConfig {
+@@ -1171,6 +1178,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/0232-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch
index 6f6d1e292..539c422a9 100644
--- a/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch
+++ b/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch
@@ -22,10 +22,10 @@ index 89435b0742064d77c7cc8bb871949acc9852f2c0..f04778287545e9619ee0359f1e51151d
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 ad6ef83004344c4b7b23261a1757224ef25d9312..abe7518b86340dd3a04044b445bb0a7286773188 100644
+index b56bbca2961887ff993ac03d37cc0ec13f91f62d..60b98696a8ea2fceb539a6dd0f8c16c811bb8ffa 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -715,11 +715,13 @@ public class PurpurWorldConfig {
+@@ -720,11 +720,13 @@ public class PurpurWorldConfig {
}
public boolean bedExplode = true;
diff --git a/patches/server/0233-Halloween-options-and-optimizations.patch b/patches/server/0233-Halloween-options-and-optimizations.patch
index 996a9e368..ea74b251a 100644
--- a/patches/server/0233-Halloween-options-and-optimizations.patch
+++ b/patches/server/0233-Halloween-options-and-optimizations.patch
@@ -60,10 +60,10 @@ index 0748babe61be5e5082132af6c4a3bc82612b70b3..5b7a6fa9692933ceb40c36e2c684a98d
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 abe7518b86340dd3a04044b445bb0a7286773188..71d90818d95cdeae57869058e7c12cf551f0cc85 100644
+index 60b98696a8ea2fceb539a6dd0f8c16c811bb8ffa..ac4a397db476ef49d3be0131eaa2a1e9c2012224 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1546,6 +1546,13 @@ public class PurpurWorldConfig {
+@@ -1551,6 +1551,13 @@ public class PurpurWorldConfig {
guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater);
}
diff --git a/patches/server/0236-Campfire-option-for-lit-when-placed.patch b/patches/server/0236-Campfire-option-for-lit-when-placed.patch
index 27531cdc6..89ccae5ad 100644
--- a/patches/server/0236-Campfire-option-for-lit-when-placed.patch
+++ b/patches/server/0236-Campfire-option-for-lit-when-placed.patch
@@ -18,10 +18,10 @@ index a4c44cb59dee29cf227dbb51bfc1576d89dfb2e3..551bacade8642e6aad17120d8a901bcc
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 71d90818d95cdeae57869058e7c12cf551f0cc85..570bb9fa09881c07e51784015904bad5168390f5 100644
+index ac4a397db476ef49d3be0131eaa2a1e9c2012224..907962842a93c771fbc2d5f712839da068940632 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -758,6 +758,11 @@ public class PurpurWorldConfig {
+@@ -763,6 +763,11 @@ public class PurpurWorldConfig {
cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors);
}
diff --git a/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch
index 46db9e321..f07dcd51a 100644
--- a/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch
+++ b/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch
@@ -46,10 +46,10 @@ index 74f798baafc53cd7dd1d4f58bc9a3581ba4f21da..c7c10c89871a3ee6d21da4bb19407a68
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 77d5ad2985eb0f3d4a75f6129b4d44a81b637861..f21fcef89306008af99b4ef086c87d5226689e5c 100644
+index 907962842a93c771fbc2d5f712839da068940632..9066c71e5cfb228b3e4491880c58b8860538e231 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 {
+@@ -231,6 +231,9 @@ public class PurpurWorldConfig {
public int glowBerriesEatGlowDuration = 0;
public boolean shulkerBoxItemDropContentsWhenDestroyed = true;
public boolean compassItemShowsBossBar = false;
@@ -59,7 +59,7 @@ index 77d5ad2985eb0f3d4a75f6129b4d44a81b637861..f21fcef89306008af99b4ef086c87d52
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -272,6 +275,9 @@ public class PurpurWorldConfig {
+@@ -277,6 +280,9 @@ public class PurpurWorldConfig {
glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration);
shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed);
compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar);
diff --git a/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch
index d4b40f1a6..45fb09aa1 100644
--- a/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch
+++ b/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie villagers cure
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
-index 54b5749a5e40ed9042af1c4904afcdc4af157d82..07c2ea2d16c9df6107247507fcd09025923a7798 100644
+index 2bf8c32afe73668eedc15b2ae5bd4982a781ad2d..0759d11e8d62b5794ef12dff792e0361600a8cb1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -211,7 +211,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -18,10 +18,10 @@ index 54b5749a5e40ed9042af1c4904afcdc4af157d82..07c2ea2d16c9df6107247507fcd09025
itemstack.shrink(1);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 6678f464bab069435196cfbf38ea166d7ad39a0d..c43e8954f8ab8e54082e9a1f33090a21f62ec060 100644
+index 9066c71e5cfb228b3e4491880c58b8860538e231..ec1b9bfa21f0c4b8abd7ba6a8d91776117f02ff4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2768,6 +2768,7 @@ public class PurpurWorldConfig {
+@@ -2773,6 +2773,7 @@ public class PurpurWorldConfig {
public boolean zombieVillagerTakeDamageFromWater = false;
public int zombieVillagerCuringTimeMin = 3600;
public int zombieVillagerCuringTimeMax = 6000;
@@ -29,7 +29,7 @@ index 6678f464bab069435196cfbf38ea166d7ad39a0d..c43e8954f8ab8e54082e9a1f33090a21
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -2785,6 +2786,7 @@ public class PurpurWorldConfig {
+@@ -2790,6 +2791,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/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch
index 0558d27c2..6e4f132af 100644
--- a/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch
+++ b/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch
@@ -195,10 +195,10 @@ index b96d57b0bcf21508f8e03e96b7553eb486fdf212..d3de829a4ab5f5a127fb026a8cb4ef4e
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 990918f2f48c5f035c1dc8d79cab2b8e6145cdbd..dd4a639596e14e6293262839121e60dce42ffda9 100644
+index ec1b9bfa21f0c4b8abd7ba6a8d91776117f02ff4..a20317cddd421c29fa3c713024466e4b07fa9e23 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -127,6 +127,7 @@ public class PurpurWorldConfig {
+@@ -132,6 +132,7 @@ public class PurpurWorldConfig {
public boolean milkCuresBadOmen = true;
public boolean noteBlockIgnoreAbove = false;
public boolean persistentDroppableEntityDisplayNames = false;
@@ -206,7 +206,7 @@ index 990918f2f48c5f035c1dc8d79cab2b8e6145cdbd..dd4a639596e14e6293262839121e60dc
public boolean projectilesBypassMobGriefing = false;
public boolean tickFluids = true;
public double mobsBlindnessMultiplier = 1;
-@@ -150,6 +151,7 @@ public class PurpurWorldConfig {
+@@ -155,6 +156,7 @@ public class PurpurWorldConfig {
imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
diff --git a/patches/server/0240-Signs-allow-color-codes.patch b/patches/server/0240-Signs-allow-color-codes.patch
index d63251672..e2811428d 100644
--- a/patches/server/0240-Signs-allow-color-codes.patch
+++ b/patches/server/0240-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 aace490037331f3ab59f2d13f6eecb3cf5ddfe80..9c09e46aeea0527880e935c1e3cf1046036d5764 100644
+index b95685e13130a214165acccbe287c249ca73f1bf..60873c874abbeff8f30b3536f5c4cc03e663530a 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1516,6 +1516,7 @@ public class ServerPlayer extends Player {
@@ -17,7 +17,7 @@ index aace490037331f3ab59f2d13f6eecb3cf5ddfe80..9c09e46aeea0527880e935c1e3cf1046
this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos()));
this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos()));
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 4d61504698a54af354fdf047426f87771397cc02..05bda808496f38d10416c3702b1f97fe18247769 100644
+index 65fe07e77745ec0c950117e8057368159833736c..526d4d796fbcabcdc574dada718f904809a6dbf4 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3384,11 +3384,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
@@ -70,10 +70,10 @@ index def4fdd2c7e4f925fa128692a744e5d10ae0203a..73382580cc23cbc868a6003e74826a55
public CompoundTag getUpdateTag() {
return this.saveWithoutMetadata();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 70504e9190a34fb76862fd1d7a75a7340d6bf4f8..7c7434a13a17a28ee08a0f4f1f4959f77849170c 100644
+index a20317cddd421c29fa3c713024466e4b07fa9e23..566fe203c4b788c316b8c893621579c4dae65f5b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -928,8 +928,10 @@ public class PurpurWorldConfig {
+@@ -933,8 +933,10 @@ public class PurpurWorldConfig {
}
public boolean signRightClickEdit = false;
diff --git a/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch
index cbeb2fc7b..5c51c4abc 100644
--- a/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch
+++ b/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Kelp weeping and twisting vines configurable max growth age
diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
-index 6659a96b3638265f128a352cc9f12629874bfb4b..5019fd602a913b01ea6b6278c73164c50a154476 100644
+index 4940e101250874111e9c55aeb5b87b28602246f0..1963831ccef0ea1e2ee519c8b3a53d245c80aa63 100644
--- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
@@ -88,4 +88,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl
@@ -131,10 +131,10 @@ index e5c135ec059746b75fe58516809584221285cdbe..b09ccc493c7503aa99a64d760b5bc769
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 57bc59537abfde26d1fe62f3661dc8eafd811e77..68c173fac745593404b63e8e94ed8c62766bd2c6 100644
+index 566fe203c4b788c316b8c893621579c4dae65f5b..4c087a6ed8032636f27b815f1350feeb092a75e2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -781,6 +781,11 @@ public class PurpurWorldConfig {
+@@ -786,6 +786,11 @@ public class PurpurWorldConfig {
composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess);
}
@@ -146,7 +146,7 @@ index 57bc59537abfde26d1fe62f3661dc8eafd811e77..68c173fac745593404b63e8e94ed8c62
public boolean dispenserApplyCursedArmor = true;
public boolean dispenserPlaceAnvils = false;
private void dispenserSettings() {
-@@ -875,6 +880,16 @@ public class PurpurWorldConfig {
+@@ -880,6 +885,16 @@ public class PurpurWorldConfig {
mobsSpawnOnBlueIce = getBoolean("blocks.blue_ice.allow-mob-spawns", mobsSpawnOnBlueIce);
}
@@ -163,7 +163,7 @@ index 57bc59537abfde26d1fe62f3661dc8eafd811e77..68c173fac745593404b63e8e94ed8c62
public boolean lavaInfinite = false;
public int lavaInfiniteRequiredSources = 2;
public int lavaSpeedNether = 10;
-@@ -964,6 +979,16 @@ public class PurpurWorldConfig {
+@@ -969,6 +984,16 @@ public class PurpurWorldConfig {
turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing);
}
@@ -180,7 +180,7 @@ index 57bc59537abfde26d1fe62f3661dc8eafd811e77..68c173fac745593404b63e8e94ed8c62
public boolean waterInfinite = true;
public int waterInfiniteRequiredSources = 2;
private void waterSources() {
-@@ -971,6 +996,16 @@ public class PurpurWorldConfig {
+@@ -976,6 +1001,16 @@ public class PurpurWorldConfig {
waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources);
}
diff --git a/patches/server/0242-Mobs-always-drop-experience.patch b/patches/server/0242-Mobs-always-drop-experience.patch
index 0ee710146..896eaaae4 100644
--- a/patches/server/0242-Mobs-always-drop-experience.patch
+++ b/patches/server/0242-Mobs-always-drop-experience.patch
@@ -37,7 +37,7 @@ index a851aaf84085c9bd79e933246bb2c79e435ab0f1..1436f9f62ce20b39c5ae2425c2fe47f5
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index a51fd1e4e6fb816f544112249e7f7192b334b255..4b9d13fb36d0e35f1cc7a5d95b26dc5f8ded0d6a 100644
+index a7189aff3d36efaee2c41336361960d3c9fa6f72..c3680aa6d92b0adb104d144875cea679084e36f2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -229,6 +229,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -117,7 +117,7 @@ index b5002526f20fb8ae52783a6ba95ccd2d4f9b7840..a79b4a90274d25d427214b96649cdf85
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
-index 89e3eec134868f727d776ee8144b291518a3931a..e3ae85877110a6eb8017efe3be730f4394cd9ce1 100644
+index f8be4c96e7e7b8e6d8c538b1f425f01d866ce8f9..284c1342695aeb652f39c236d14538647465846e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -168,6 +168,11 @@ public class Dolphin extends WaterAnimal {
@@ -133,7 +133,7 @@ index 89e3eec134868f727d776ee8144b291518a3931a..e3ae85877110a6eb8017efe3be730f43
@Nullable
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-index 8e04d20c0f1038dbe1c8e7f05242f66e95ec5a38..66749befa2e6d766d80224b507e1acef733e5b49 100644
+index 41690949a990a753a24e6c27595cb0b50a52e0a8..21d755f228fbb49ded0e78322c6d29fc2622bb79 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -193,6 +193,11 @@ public class Fox extends Animal {
@@ -421,7 +421,7 @@ index 83eef99d7f24634e301a51d2825370c9283b53ac..32870e6727d09fbf1c4913ffdf321a27
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
-index 60b40bf64de5562d124857614f3ebe7b505a59f1..52608eb55f0a191313fbf5a1ace8eafa3eb1bfcb 100644
+index ae50bb7e86cddd95a0b49a89682083994ddf14ef..4688e567dff250437335cbde34db4483f535b79a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -119,6 +119,11 @@ public class Goat extends Animal {
@@ -1045,7 +1045,7 @@ index 5b7a6fa9692933ceb40c36e2c684a98d2ba51d57..177bc2b03d2f103add8e8d8ff862c8fe
@Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
-index 07c2ea2d16c9df6107247507fcd09025923a7798..8f81ad1f4ee7bc31d136048a4b90bc7d234816f2 100644
+index 0759d11e8d62b5794ef12dff792e0361600a8cb1..1f845c00c3e184fd982bccc6951115c131e779d0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -123,6 +123,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -1157,10 +1157,10 @@ index 8d6930868a42b9fc98d7672bff433ec50d36999e..53bebecd30fee7613af73901b3aa9961
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee2c98802f 100644
+index 4c087a6ed8032636f27b815f1350feeb092a75e2..40e54a9d0bdd8e155eae9086facbe8cd7fd261bc 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1029,12 +1029,14 @@ public class PurpurWorldConfig {
+@@ -1034,12 +1034,14 @@ public class PurpurWorldConfig {
public double axolotlMaxHealth = 14.0D;
public int axolotlBreedingTicks = 6000;
public boolean axolotlTakeDamageFromWater = false;
@@ -1175,7 +1175,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean batRidable = false;
-@@ -1050,6 +1052,7 @@ public class PurpurWorldConfig {
+@@ -1055,6 +1057,7 @@ public class PurpurWorldConfig {
public double batArmorToughness = 0.0D;
public double batAttackKnockback = 0.0D;
public boolean batTakeDamageFromWater = false;
@@ -1183,7 +1183,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void batSettings() {
batRidable = getBoolean("mobs.bat.ridable", batRidable);
batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater);
-@@ -1062,6 +1065,7 @@ public class PurpurWorldConfig {
+@@ -1067,6 +1070,7 @@ public class PurpurWorldConfig {
}
batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth);
batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater);
@@ -1191,7 +1191,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean beeRidable = false;
-@@ -1073,6 +1077,7 @@ public class PurpurWorldConfig {
+@@ -1078,6 +1082,7 @@ public class PurpurWorldConfig {
public boolean beeTakeDamageFromWater = false;
public boolean beeCanWorkAtNight = false;
public boolean beeCanWorkInRain = false;
@@ -1199,7 +1199,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -1088,6 +1093,7 @@ public class PurpurWorldConfig {
+@@ -1093,6 +1098,7 @@ public class PurpurWorldConfig {
beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater);
beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight);
beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain);
@@ -1207,7 +1207,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean blazeRidable = false;
-@@ -1096,6 +1102,7 @@ public class PurpurWorldConfig {
+@@ -1101,6 +1107,7 @@ public class PurpurWorldConfig {
public double blazeMaxY = 320D;
public double blazeMaxHealth = 20.0D;
public boolean blazeTakeDamageFromWater = true;
@@ -1215,7 +1215,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void blazeSettings() {
blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable);
blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater);
-@@ -1108,6 +1115,7 @@ public class PurpurWorldConfig {
+@@ -1113,6 +1120,7 @@ public class PurpurWorldConfig {
}
blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth);
blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater);
@@ -1223,7 +1223,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean catRidable = false;
-@@ -1120,6 +1128,7 @@ public class PurpurWorldConfig {
+@@ -1125,6 +1133,7 @@ public class PurpurWorldConfig {
public int catBreedingTicks = 6000;
public DyeColor catDefaultCollarColor = DyeColor.RED;
public boolean catTakeDamageFromWater = false;
@@ -1231,7 +1231,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -1140,6 +1149,7 @@ public class PurpurWorldConfig {
+@@ -1145,6 +1154,7 @@ public class PurpurWorldConfig {
catDefaultCollarColor = DyeColor.RED;
}
catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater);
@@ -1239,7 +1239,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean caveSpiderRidable = false;
-@@ -1147,6 +1157,7 @@ public class PurpurWorldConfig {
+@@ -1152,6 +1162,7 @@ public class PurpurWorldConfig {
public boolean caveSpiderControllable = true;
public double caveSpiderMaxHealth = 12.0D;
public boolean caveSpiderTakeDamageFromWater = false;
@@ -1247,7 +1247,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void caveSpiderSettings() {
caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable);
caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater);
-@@ -1158,6 +1169,7 @@ public class PurpurWorldConfig {
+@@ -1163,6 +1174,7 @@ public class PurpurWorldConfig {
}
caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth);
caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater);
@@ -1255,7 +1255,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean chickenRidable = false;
-@@ -1167,6 +1179,7 @@ public class PurpurWorldConfig {
+@@ -1172,6 +1184,7 @@ public class PurpurWorldConfig {
public boolean chickenRetaliate = false;
public int chickenBreedingTicks = 6000;
public boolean chickenTakeDamageFromWater = false;
@@ -1263,7 +1263,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
-@@ -1180,12 +1193,14 @@ public class PurpurWorldConfig {
+@@ -1185,12 +1198,14 @@ public class PurpurWorldConfig {
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks);
chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater);
@@ -1278,7 +1278,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void codSettings() {
codRidable = getBoolean("mobs.cod.ridable", codRidable);
codControllable = getBoolean("mobs.cod.controllable", codControllable);
-@@ -1196,6 +1211,7 @@ public class PurpurWorldConfig {
+@@ -1201,6 +1216,7 @@ public class PurpurWorldConfig {
}
codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth);
codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater);
@@ -1286,7 +1286,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean cowRidable = false;
-@@ -1207,6 +1223,7 @@ public class PurpurWorldConfig {
+@@ -1212,6 +1228,7 @@ public class PurpurWorldConfig {
public boolean cowTakeDamageFromWater = false;
public double cowNaturallyAggressiveToPlayersChance = 0.0D;
public double cowNaturallyAggressiveToPlayersDamage = 2.0D;
@@ -1294,7 +1294,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void cowSettings() {
if (PurpurConfig.version < 22) {
double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance);
-@@ -1227,6 +1244,7 @@ public class PurpurWorldConfig {
+@@ -1232,6 +1249,7 @@ public class PurpurWorldConfig {
cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater);
cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance);
cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage);
@@ -1302,7 +1302,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean creeperRidable = false;
-@@ -1239,6 +1257,7 @@ public class PurpurWorldConfig {
+@@ -1244,6 +1262,7 @@ public class PurpurWorldConfig {
public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false;
public boolean creeperHealthRadius = false;
@@ -1310,7 +1310,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -1255,6 +1274,7 @@ public class PurpurWorldConfig {
+@@ -1260,6 +1279,7 @@ public class PurpurWorldConfig {
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
@@ -1318,7 +1318,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean dolphinRidable = false;
-@@ -1266,6 +1286,7 @@ public class PurpurWorldConfig {
+@@ -1271,6 +1291,7 @@ public class PurpurWorldConfig {
public boolean dolphinDisableTreasureSearching = false;
public boolean dolphinTakeDamageFromWater = false;
public double dolphinNaturallyAggressiveToPlayersChance = 0.0D;
@@ -1326,7 +1326,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -1281,6 +1302,7 @@ public class PurpurWorldConfig {
+@@ -1286,6 +1307,7 @@ public class PurpurWorldConfig {
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater);
dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance);
@@ -1334,7 +1334,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean donkeyRidableInWater = false;
-@@ -1292,6 +1314,7 @@ public class PurpurWorldConfig {
+@@ -1297,6 +1319,7 @@ public class PurpurWorldConfig {
public double donkeyMovementSpeedMax = 0.175D;
public int donkeyBreedingTicks = 6000;
public boolean donkeyTakeDamageFromWater = false;
@@ -1342,7 +1342,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1309,6 +1332,7 @@ public class PurpurWorldConfig {
+@@ -1314,6 +1337,7 @@ public class PurpurWorldConfig {
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks);
donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater);
@@ -1350,7 +1350,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean drownedRidable = false;
-@@ -1321,6 +1345,7 @@ public class PurpurWorldConfig {
+@@ -1326,6 +1350,7 @@ public class PurpurWorldConfig {
public boolean drownedJockeyTryExistingChickens = true;
public boolean drownedTakeDamageFromWater = false;
public boolean drownedBreakDoors = false;
@@ -1358,7 +1358,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
-@@ -1337,12 +1362,14 @@ public class PurpurWorldConfig {
+@@ -1342,12 +1367,14 @@ public class PurpurWorldConfig {
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
@@ -1373,7 +1373,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void elderGuardianSettings() {
elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable);
elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable);
-@@ -1353,6 +1380,7 @@ public class PurpurWorldConfig {
+@@ -1358,6 +1385,7 @@ public class PurpurWorldConfig {
}
elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth);
elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater);
@@ -1381,7 +1381,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean enderDragonRidable = false;
-@@ -1398,6 +1426,7 @@ public class PurpurWorldConfig {
+@@ -1403,6 +1431,7 @@ public class PurpurWorldConfig {
public boolean endermanIgnorePlayerDragonHead = false;
public boolean endermanDisableStareAggro = false;
public boolean endermanIgnoreProjectiles = false;
@@ -1389,7 +1389,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -1421,6 +1450,7 @@ public class PurpurWorldConfig {
+@@ -1426,6 +1455,7 @@ public class PurpurWorldConfig {
endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead);
endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles);
@@ -1397,7 +1397,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean endermiteRidable = false;
-@@ -1428,6 +1458,7 @@ public class PurpurWorldConfig {
+@@ -1433,6 +1463,7 @@ public class PurpurWorldConfig {
public boolean endermiteControllable = true;
public double endermiteMaxHealth = 8.0D;
public boolean endermiteTakeDamageFromWater = false;
@@ -1405,7 +1405,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void endermiteSettings() {
endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable);
endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater);
-@@ -1439,6 +1470,7 @@ public class PurpurWorldConfig {
+@@ -1444,6 +1475,7 @@ public class PurpurWorldConfig {
}
endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth);
endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater);
@@ -1413,7 +1413,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean evokerRidable = false;
-@@ -1447,6 +1479,7 @@ public class PurpurWorldConfig {
+@@ -1452,6 +1484,7 @@ public class PurpurWorldConfig {
public double evokerMaxHealth = 24.0D;
public boolean evokerBypassMobGriefing = false;
public boolean evokerTakeDamageFromWater = false;
@@ -1421,7 +1421,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
-@@ -1459,6 +1492,7 @@ public class PurpurWorldConfig {
+@@ -1464,6 +1497,7 @@ public class PurpurWorldConfig {
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing);
evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater);
@@ -1429,7 +1429,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean foxRidable = false;
-@@ -1469,6 +1503,7 @@ public class PurpurWorldConfig {
+@@ -1474,6 +1508,7 @@ public class PurpurWorldConfig {
public int foxBreedingTicks = 6000;
public boolean foxBypassMobGriefing = false;
public boolean foxTakeDamageFromWater = false;
@@ -1437,7 +1437,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -1483,6 +1518,7 @@ public class PurpurWorldConfig {
+@@ -1488,6 +1523,7 @@ public class PurpurWorldConfig {
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing);
foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater);
@@ -1445,7 +1445,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean frogRidable = false;
-@@ -1504,6 +1540,7 @@ public class PurpurWorldConfig {
+@@ -1509,6 +1545,7 @@ public class PurpurWorldConfig {
public double ghastMaxY = 320D;
public double ghastMaxHealth = 10.0D;
public boolean ghastTakeDamageFromWater = false;
@@ -1453,7 +1453,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void ghastSettings() {
ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable);
ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater);
-@@ -1516,6 +1553,7 @@ public class PurpurWorldConfig {
+@@ -1521,6 +1558,7 @@ public class PurpurWorldConfig {
}
ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth);
ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater);
@@ -1461,7 +1461,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean giantRidable = false;
-@@ -1529,6 +1567,7 @@ public class PurpurWorldConfig {
+@@ -1534,6 +1572,7 @@ public class PurpurWorldConfig {
public boolean giantHaveAI = false;
public boolean giantHaveHostileAI = false;
public boolean giantTakeDamageFromWater = false;
@@ -1469,7 +1469,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void giantSettings() {
giantRidable = getBoolean("mobs.giant.ridable", giantRidable);
giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater);
-@@ -1550,6 +1589,7 @@ public class PurpurWorldConfig {
+@@ -1555,6 +1594,7 @@ public class PurpurWorldConfig {
giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI);
giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI);
giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater);
@@ -1477,7 +1477,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean glowSquidRidable = false;
-@@ -1557,12 +1597,14 @@ public class PurpurWorldConfig {
+@@ -1562,12 +1602,14 @@ public class PurpurWorldConfig {
public double glowSquidMaxHealth = 10.0D;
public boolean glowSquidsCanFly = false;
public boolean glowSquidTakeDamageFromWater = false;
@@ -1492,7 +1492,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean goatRidable = false;
-@@ -1571,6 +1613,7 @@ public class PurpurWorldConfig {
+@@ -1576,6 +1618,7 @@ public class PurpurWorldConfig {
public double goatMaxHealth = 10.0D;
public int goatBreedingTicks = 6000;
public boolean goatTakeDamageFromWater = false;
@@ -1500,7 +1500,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void goatSettings() {
goatRidable = getBoolean("mobs.goat.ridable", goatRidable);
goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater);
-@@ -1578,12 +1621,14 @@ public class PurpurWorldConfig {
+@@ -1583,12 +1626,14 @@ public class PurpurWorldConfig {
goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth);
goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks);
goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater);
@@ -1515,7 +1515,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void guardianSettings() {
guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable);
guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable);
-@@ -1594,6 +1639,7 @@ public class PurpurWorldConfig {
+@@ -1599,6 +1644,7 @@ public class PurpurWorldConfig {
}
guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth);
guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater);
@@ -1523,7 +1523,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean forceHalloweenSeason = false;
-@@ -1609,6 +1655,7 @@ public class PurpurWorldConfig {
+@@ -1614,6 +1660,7 @@ public class PurpurWorldConfig {
public double hoglinMaxHealth = 40.0D;
public int hoglinBreedingTicks = 6000;
public boolean hoglinTakeDamageFromWater = false;
@@ -1531,7 +1531,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
-@@ -1621,6 +1668,7 @@ public class PurpurWorldConfig {
+@@ -1626,6 +1673,7 @@ public class PurpurWorldConfig {
hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth);
hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks);
hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater);
@@ -1539,7 +1539,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean horseRidableInWater = false;
-@@ -1633,6 +1681,7 @@ public class PurpurWorldConfig {
+@@ -1638,6 +1686,7 @@ public class PurpurWorldConfig {
public int horseBreedingTicks = 6000;
public boolean horseTakeDamageFromWater = false;
public boolean horseStandWithRider = true;
@@ -1547,7 +1547,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1651,6 +1700,7 @@ public class PurpurWorldConfig {
+@@ -1656,6 +1705,7 @@ public class PurpurWorldConfig {
horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks);
horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater);
horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider);
@@ -1555,7 +1555,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean huskRidable = false;
-@@ -1662,6 +1712,7 @@ public class PurpurWorldConfig {
+@@ -1667,6 +1717,7 @@ public class PurpurWorldConfig {
public double huskJockeyChance = 0.05D;
public boolean huskJockeyTryExistingChickens = true;
public boolean huskTakeDamageFromWater = false;
@@ -1563,7 +1563,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
-@@ -1677,6 +1728,7 @@ public class PurpurWorldConfig {
+@@ -1682,6 +1733,7 @@ public class PurpurWorldConfig {
huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance);
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
@@ -1571,7 +1571,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean illusionerRidable = false;
-@@ -1686,6 +1738,7 @@ public class PurpurWorldConfig {
+@@ -1691,6 +1743,7 @@ public class PurpurWorldConfig {
public double illusionerFollowRange = 18.0D;
public double illusionerMaxHealth = 32.0D;
public boolean illusionerTakeDamageFromWater = false;
@@ -1579,7 +1579,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void illusionerSettings() {
illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable);
illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater);
-@@ -1703,6 +1756,7 @@ public class PurpurWorldConfig {
+@@ -1708,6 +1761,7 @@ public class PurpurWorldConfig {
}
illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth);
illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater);
@@ -1587,7 +1587,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean ironGolemRidable = false;
-@@ -1713,6 +1767,7 @@ public class PurpurWorldConfig {
+@@ -1718,6 +1772,7 @@ public class PurpurWorldConfig {
public boolean ironGolemTakeDamageFromWater = false;
public boolean ironGolemPoppyCalm = false;
public boolean ironGolemHealCalm = false;
@@ -1595,7 +1595,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
-@@ -1727,6 +1782,7 @@ public class PurpurWorldConfig {
+@@ -1732,6 +1787,7 @@ public class PurpurWorldConfig {
ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater);
ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm);
ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm);
@@ -1603,7 +1603,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean llamaRidable = false;
-@@ -1741,6 +1797,7 @@ public class PurpurWorldConfig {
+@@ -1746,6 +1802,7 @@ public class PurpurWorldConfig {
public int llamaBreedingTicks = 6000;
public boolean llamaTakeDamageFromWater = false;
public boolean llamaJoinCaravans = true;
@@ -1611,7 +1611,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1761,6 +1818,7 @@ public class PurpurWorldConfig {
+@@ -1766,6 +1823,7 @@ public class PurpurWorldConfig {
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater);
llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans);
@@ -1619,7 +1619,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean magmaCubeRidable = false;
-@@ -1771,6 +1829,7 @@ public class PurpurWorldConfig {
+@@ -1776,6 +1834,7 @@ public class PurpurWorldConfig {
public Map magmaCubeMaxHealthCache = new HashMap<>();
public Map magmaCubeAttackDamageCache = new HashMap<>();
public boolean magmaCubeTakeDamageFromWater = false;
@@ -1627,7 +1627,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void magmaCubeSettings() {
magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable);
magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater);
-@@ -1785,6 +1844,7 @@ public class PurpurWorldConfig {
+@@ -1790,6 +1849,7 @@ public class PurpurWorldConfig {
magmaCubeMaxHealthCache.clear();
magmaCubeAttackDamageCache.clear();
magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater);
@@ -1635,7 +1635,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean mooshroomRidable = false;
-@@ -1793,6 +1853,7 @@ public class PurpurWorldConfig {
+@@ -1798,6 +1858,7 @@ public class PurpurWorldConfig {
public double mooshroomMaxHealth = 10.0D;
public int mooshroomBreedingTicks = 6000;
public boolean mooshroomTakeDamageFromWater = false;
@@ -1643,7 +1643,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
-@@ -1805,6 +1866,7 @@ public class PurpurWorldConfig {
+@@ -1810,6 +1871,7 @@ public class PurpurWorldConfig {
mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth);
mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks);
mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater);
@@ -1651,7 +1651,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean muleRidableInWater = false;
-@@ -1816,6 +1878,7 @@ public class PurpurWorldConfig {
+@@ -1821,6 +1883,7 @@ public class PurpurWorldConfig {
public double muleMovementSpeedMax = 0.175D;
public int muleBreedingTicks = 6000;
public boolean muleTakeDamageFromWater = false;
@@ -1659,7 +1659,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1833,6 +1896,7 @@ public class PurpurWorldConfig {
+@@ -1838,6 +1901,7 @@ public class PurpurWorldConfig {
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks);
muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater);
@@ -1667,7 +1667,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean ocelotRidable = false;
-@@ -1841,6 +1905,7 @@ public class PurpurWorldConfig {
+@@ -1846,6 +1910,7 @@ public class PurpurWorldConfig {
public double ocelotMaxHealth = 10.0D;
public int ocelotBreedingTicks = 6000;
public boolean ocelotTakeDamageFromWater = false;
@@ -1675,7 +1675,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -1853,6 +1918,7 @@ public class PurpurWorldConfig {
+@@ -1858,6 +1923,7 @@ public class PurpurWorldConfig {
ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth);
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater);
@@ -1683,7 +1683,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean pandaRidable = false;
-@@ -1861,6 +1927,7 @@ public class PurpurWorldConfig {
+@@ -1866,6 +1932,7 @@ public class PurpurWorldConfig {
public double pandaMaxHealth = 20.0D;
public int pandaBreedingTicks = 6000;
public boolean pandaTakeDamageFromWater = false;
@@ -1691,7 +1691,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
-@@ -1873,6 +1940,7 @@ public class PurpurWorldConfig {
+@@ -1878,6 +1945,7 @@ public class PurpurWorldConfig {
pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth);
pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks);
pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater);
@@ -1699,7 +1699,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean parrotRidable = false;
-@@ -1882,6 +1950,7 @@ public class PurpurWorldConfig {
+@@ -1887,6 +1955,7 @@ public class PurpurWorldConfig {
public double parrotMaxHealth = 6.0D;
public boolean parrotTakeDamageFromWater = false;
public boolean parrotBreedable = false;
@@ -1707,7 +1707,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
-@@ -1895,6 +1964,7 @@ public class PurpurWorldConfig {
+@@ -1900,6 +1969,7 @@ public class PurpurWorldConfig {
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater);
parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable);
@@ -1715,7 +1715,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean phantomRidable = false;
-@@ -1928,6 +1998,7 @@ public class PurpurWorldConfig {
+@@ -1933,6 +2003,7 @@ public class PurpurWorldConfig {
public boolean phantomBurnInDaylight = true;
public boolean phantomFlamesOnSwoop = false;
public boolean phantomTakeDamageFromWater = false;
@@ -1723,7 +1723,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1969,6 +2040,7 @@ public class PurpurWorldConfig {
+@@ -1974,6 +2045,7 @@ public class PurpurWorldConfig {
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater);
@@ -1731,7 +1731,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean pigRidable = false;
-@@ -1978,6 +2050,7 @@ public class PurpurWorldConfig {
+@@ -1983,6 +2055,7 @@ public class PurpurWorldConfig {
public boolean pigGiveSaddleBack = false;
public int pigBreedingTicks = 6000;
public boolean pigTakeDamageFromWater = false;
@@ -1739,7 +1739,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
-@@ -1991,6 +2064,7 @@ public class PurpurWorldConfig {
+@@ -1996,6 +2069,7 @@ public class PurpurWorldConfig {
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks);
pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater);
@@ -1747,7 +1747,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean piglinRidable = false;
-@@ -2000,6 +2074,7 @@ public class PurpurWorldConfig {
+@@ -2005,6 +2079,7 @@ public class PurpurWorldConfig {
public boolean piglinBypassMobGriefing = false;
public boolean piglinTakeDamageFromWater = false;
public int piglinPortalSpawnModifier = 2000;
@@ -1755,7 +1755,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -2013,6 +2088,7 @@ public class PurpurWorldConfig {
+@@ -2018,6 +2093,7 @@ public class PurpurWorldConfig {
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
@@ -1763,7 +1763,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean piglinBruteRidable = false;
-@@ -2020,6 +2096,7 @@ public class PurpurWorldConfig {
+@@ -2025,6 +2101,7 @@ public class PurpurWorldConfig {
public boolean piglinBruteControllable = true;
public double piglinBruteMaxHealth = 50.0D;
public boolean piglinBruteTakeDamageFromWater = false;
@@ -1771,7 +1771,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void piglinBruteSettings() {
piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable);
piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater);
-@@ -2031,6 +2108,7 @@ public class PurpurWorldConfig {
+@@ -2036,6 +2113,7 @@ public class PurpurWorldConfig {
}
piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth);
piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater);
@@ -1779,7 +1779,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean pillagerRidable = false;
-@@ -2039,6 +2117,7 @@ public class PurpurWorldConfig {
+@@ -2044,6 +2122,7 @@ public class PurpurWorldConfig {
public double pillagerMaxHealth = 24.0D;
public boolean pillagerBypassMobGriefing = false;
public boolean pillagerTakeDamageFromWater = false;
@@ -1787,7 +1787,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
-@@ -2051,6 +2130,7 @@ public class PurpurWorldConfig {
+@@ -2056,6 +2135,7 @@ public class PurpurWorldConfig {
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing);
pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater);
@@ -1795,7 +1795,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean polarBearRidable = false;
-@@ -2061,6 +2141,7 @@ public class PurpurWorldConfig {
+@@ -2066,6 +2146,7 @@ public class PurpurWorldConfig {
public Item polarBearBreedableItem = null;
public int polarBearBreedingTicks = 6000;
public boolean polarBearTakeDamageFromWater = false;
@@ -1803,7 +1803,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
-@@ -2076,12 +2157,14 @@ public class PurpurWorldConfig {
+@@ -2081,12 +2162,14 @@ public class PurpurWorldConfig {
if (item != Items.AIR) polarBearBreedableItem = item;
polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks);
polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater);
@@ -1818,7 +1818,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void pufferfishSettings() {
pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable);
pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable);
-@@ -2092,6 +2175,7 @@ public class PurpurWorldConfig {
+@@ -2097,6 +2180,7 @@ public class PurpurWorldConfig {
}
pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth);
pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater);
@@ -1826,7 +1826,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean rabbitRidable = false;
-@@ -2103,6 +2187,7 @@ public class PurpurWorldConfig {
+@@ -2108,6 +2192,7 @@ public class PurpurWorldConfig {
public int rabbitBreedingTicks = 6000;
public boolean rabbitBypassMobGriefing = false;
public boolean rabbitTakeDamageFromWater = false;
@@ -1834,7 +1834,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -2118,6 +2203,7 @@ public class PurpurWorldConfig {
+@@ -2123,6 +2208,7 @@ public class PurpurWorldConfig {
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing);
rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater);
@@ -1842,7 +1842,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean ravagerRidable = false;
-@@ -2127,6 +2213,7 @@ public class PurpurWorldConfig {
+@@ -2132,6 +2218,7 @@ public class PurpurWorldConfig {
public boolean ravagerBypassMobGriefing = false;
public boolean ravagerTakeDamageFromWater = false;
public List ravagerGriefableBlocks = new ArrayList<>();
@@ -1850,7 +1850,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -2156,12 +2243,14 @@ public class PurpurWorldConfig {
+@@ -2161,12 +2248,14 @@ public class PurpurWorldConfig {
ravagerGriefableBlocks.add(block);
}
});
@@ -1865,7 +1865,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void salmonSettings() {
salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable);
salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable);
-@@ -2172,6 +2261,7 @@ public class PurpurWorldConfig {
+@@ -2177,6 +2266,7 @@ public class PurpurWorldConfig {
}
salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth);
salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater);
@@ -1873,7 +1873,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean sheepRidable = false;
-@@ -2181,6 +2271,7 @@ public class PurpurWorldConfig {
+@@ -2186,6 +2276,7 @@ public class PurpurWorldConfig {
public int sheepBreedingTicks = 6000;
public boolean sheepBypassMobGriefing = false;
public boolean sheepTakeDamageFromWater = false;
@@ -1881,7 +1881,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -2194,6 +2285,7 @@ public class PurpurWorldConfig {
+@@ -2199,6 +2290,7 @@ public class PurpurWorldConfig {
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater);
@@ -1889,7 +1889,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean shulkerRidable = false;
-@@ -2207,6 +2299,7 @@ public class PurpurWorldConfig {
+@@ -2212,6 +2304,7 @@ public class PurpurWorldConfig {
public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0";
public boolean shulkerSpawnFromBulletRandomColor = false;
public boolean shulkerChangeColorWithDye = false;
@@ -1897,7 +1897,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -2224,6 +2317,7 @@ public class PurpurWorldConfig {
+@@ -2229,6 +2322,7 @@ public class PurpurWorldConfig {
shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation);
shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor);
shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye);
@@ -1905,7 +1905,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean silverfishRidable = false;
-@@ -2232,6 +2326,7 @@ public class PurpurWorldConfig {
+@@ -2237,6 +2331,7 @@ public class PurpurWorldConfig {
public double silverfishMaxHealth = 8.0D;
public boolean silverfishBypassMobGriefing = false;
public boolean silverfishTakeDamageFromWater = false;
@@ -1913,7 +1913,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
-@@ -2244,6 +2339,7 @@ public class PurpurWorldConfig {
+@@ -2249,6 +2344,7 @@ public class PurpurWorldConfig {
silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth);
silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing);
silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater);
@@ -1921,7 +1921,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean skeletonRidable = false;
-@@ -2251,6 +2347,7 @@ public class PurpurWorldConfig {
+@@ -2256,6 +2352,7 @@ public class PurpurWorldConfig {
public boolean skeletonControllable = true;
public double skeletonMaxHealth = 20.0D;
public boolean skeletonTakeDamageFromWater = false;
@@ -1929,7 +1929,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2262,6 +2359,7 @@ public class PurpurWorldConfig {
+@@ -2267,6 +2364,7 @@ public class PurpurWorldConfig {
}
skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth);
skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater);
@@ -1937,7 +1937,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean skeletonHorseRidableInWater = true;
-@@ -2273,6 +2371,7 @@ public class PurpurWorldConfig {
+@@ -2278,6 +2376,7 @@ public class PurpurWorldConfig {
public double skeletonHorseMovementSpeedMin = 0.2D;
public double skeletonHorseMovementSpeedMax = 0.2D;
public boolean skeletonHorseTakeDamageFromWater = false;
@@ -1945,7 +1945,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void skeletonHorseSettings() {
skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater);
skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim);
-@@ -2289,6 +2388,7 @@ public class PurpurWorldConfig {
+@@ -2294,6 +2393,7 @@ public class PurpurWorldConfig {
skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin);
skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax);
skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater);
@@ -1953,7 +1953,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean slimeRidable = false;
-@@ -2299,6 +2399,7 @@ public class PurpurWorldConfig {
+@@ -2304,6 +2404,7 @@ public class PurpurWorldConfig {
public Map slimeMaxHealthCache = new HashMap<>();
public Map slimeAttackDamageCache = new HashMap<>();
public boolean slimeTakeDamageFromWater = false;
@@ -1961,7 +1961,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void slimeSettings() {
slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable);
slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater);
-@@ -2313,6 +2414,7 @@ public class PurpurWorldConfig {
+@@ -2318,6 +2419,7 @@ public class PurpurWorldConfig {
slimeMaxHealthCache.clear();
slimeAttackDamageCache.clear();
slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater);
@@ -1969,7 +1969,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean snowGolemRidable = false;
-@@ -2328,6 +2430,7 @@ public class PurpurWorldConfig {
+@@ -2333,6 +2435,7 @@ public class PurpurWorldConfig {
public double snowGolemAttackDistance = 1.25D;
public boolean snowGolemBypassMobGriefing = false;
public boolean snowGolemTakeDamageFromWater = true;
@@ -1977,7 +1977,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -2347,6 +2450,7 @@ public class PurpurWorldConfig {
+@@ -2352,6 +2455,7 @@ public class PurpurWorldConfig {
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing);
snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater);
@@ -1985,7 +1985,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean squidRidable = false;
-@@ -2356,6 +2460,7 @@ public class PurpurWorldConfig {
+@@ -2361,6 +2465,7 @@ public class PurpurWorldConfig {
public double squidOffsetWaterCheck = 0.0D;
public boolean squidsCanFly = false;
public boolean squidTakeDamageFromWater = false;
@@ -1993,7 +1993,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -2369,6 +2474,7 @@ public class PurpurWorldConfig {
+@@ -2374,6 +2479,7 @@ public class PurpurWorldConfig {
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly);
squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater);
@@ -2001,7 +2001,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean spiderRidable = false;
-@@ -2376,6 +2482,7 @@ public class PurpurWorldConfig {
+@@ -2381,6 +2487,7 @@ public class PurpurWorldConfig {
public boolean spiderControllable = true;
public double spiderMaxHealth = 16.0D;
public boolean spiderTakeDamageFromWater = false;
@@ -2009,7 +2009,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void spiderSettings() {
spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable);
spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater);
-@@ -2387,6 +2494,7 @@ public class PurpurWorldConfig {
+@@ -2392,6 +2499,7 @@ public class PurpurWorldConfig {
}
spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth);
spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater);
@@ -2017,7 +2017,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean strayRidable = false;
-@@ -2394,6 +2502,7 @@ public class PurpurWorldConfig {
+@@ -2399,6 +2507,7 @@ public class PurpurWorldConfig {
public boolean strayControllable = true;
public double strayMaxHealth = 20.0D;
public boolean strayTakeDamageFromWater = false;
@@ -2025,7 +2025,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void straySettings() {
strayRidable = getBoolean("mobs.stray.ridable", strayRidable);
strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater);
-@@ -2405,6 +2514,7 @@ public class PurpurWorldConfig {
+@@ -2410,6 +2519,7 @@ public class PurpurWorldConfig {
}
strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth);
strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater);
@@ -2033,7 +2033,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean striderRidable = false;
-@@ -2414,6 +2524,7 @@ public class PurpurWorldConfig {
+@@ -2419,6 +2529,7 @@ public class PurpurWorldConfig {
public int striderBreedingTicks = 6000;
public boolean striderGiveSaddleBack = false;
public boolean striderTakeDamageFromWater = true;
@@ -2041,7 +2041,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -2427,6 +2538,7 @@ public class PurpurWorldConfig {
+@@ -2432,6 +2543,7 @@ public class PurpurWorldConfig {
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack);
striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater);
@@ -2049,7 +2049,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean tadpoleRidable = false;
-@@ -2449,6 +2561,7 @@ public class PurpurWorldConfig {
+@@ -2454,6 +2566,7 @@ public class PurpurWorldConfig {
public double traderLlamaMovementSpeedMax = 0.175D;
public int traderLlamaBreedingTicks = 6000;
public boolean traderLlamaTakeDamageFromWater = false;
@@ -2057,7 +2057,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
-@@ -2468,12 +2581,14 @@ public class PurpurWorldConfig {
+@@ -2473,12 +2586,14 @@ public class PurpurWorldConfig {
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks);
traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater);
@@ -2072,7 +2072,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void tropicalFishSettings() {
tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable);
tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable);
-@@ -2484,6 +2599,7 @@ public class PurpurWorldConfig {
+@@ -2489,6 +2604,7 @@ public class PurpurWorldConfig {
}
tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth);
tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater);
@@ -2080,7 +2080,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean turtleRidable = false;
-@@ -2492,6 +2608,7 @@ public class PurpurWorldConfig {
+@@ -2497,6 +2613,7 @@ public class PurpurWorldConfig {
public double turtleMaxHealth = 30.0D;
public int turtleBreedingTicks = 6000;
public boolean turtleTakeDamageFromWater = false;
@@ -2088,7 +2088,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
-@@ -2504,6 +2621,7 @@ public class PurpurWorldConfig {
+@@ -2509,6 +2626,7 @@ public class PurpurWorldConfig {
turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth);
turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks);
turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater);
@@ -2096,7 +2096,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean vexRidable = false;
-@@ -2512,6 +2630,7 @@ public class PurpurWorldConfig {
+@@ -2517,6 +2635,7 @@ public class PurpurWorldConfig {
public double vexMaxY = 320D;
public double vexMaxHealth = 14.0D;
public boolean vexTakeDamageFromWater = false;
@@ -2104,7 +2104,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void vexSettings() {
vexRidable = getBoolean("mobs.vex.ridable", vexRidable);
vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater);
-@@ -2524,6 +2643,7 @@ public class PurpurWorldConfig {
+@@ -2529,6 +2648,7 @@ public class PurpurWorldConfig {
}
vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth);
vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater);
@@ -2112,7 +2112,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean villagerRidable = false;
-@@ -2541,6 +2661,7 @@ public class PurpurWorldConfig {
+@@ -2546,6 +2666,7 @@ public class PurpurWorldConfig {
public boolean villagerBypassMobGriefing = false;
public boolean villagerTakeDamageFromWater = false;
public boolean villagerAllowTrading = true;
@@ -2120,7 +2120,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2562,6 +2683,7 @@ public class PurpurWorldConfig {
+@@ -2567,6 +2688,7 @@ public class PurpurWorldConfig {
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
@@ -2128,7 +2128,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean vindicatorRidable = false;
-@@ -2570,6 +2692,7 @@ public class PurpurWorldConfig {
+@@ -2575,6 +2697,7 @@ public class PurpurWorldConfig {
public double vindicatorMaxHealth = 24.0D;
public double vindicatorJohnnySpawnChance = 0D;
public boolean vindicatorTakeDamageFromWater = false;
@@ -2136,7 +2136,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
-@@ -2582,6 +2705,7 @@ public class PurpurWorldConfig {
+@@ -2587,6 +2710,7 @@ public class PurpurWorldConfig {
vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth);
vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance);
vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater);
@@ -2144,7 +2144,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean wanderingTraderRidable = false;
-@@ -2592,6 +2716,7 @@ public class PurpurWorldConfig {
+@@ -2597,6 +2721,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderCanBeLeashed = false;
public boolean wanderingTraderTakeDamageFromWater = false;
public boolean wanderingTraderAllowTrading = true;
@@ -2152,7 +2152,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
-@@ -2606,6 +2731,7 @@ public class PurpurWorldConfig {
+@@ -2611,6 +2736,7 @@ public class PurpurWorldConfig {
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater);
wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading);
@@ -2160,7 +2160,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean wardenRidable = false;
-@@ -2622,6 +2748,7 @@ public class PurpurWorldConfig {
+@@ -2627,6 +2753,7 @@ public class PurpurWorldConfig {
public boolean witchControllable = true;
public double witchMaxHealth = 26.0D;
public boolean witchTakeDamageFromWater = false;
@@ -2168,7 +2168,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void witchSettings() {
witchRidable = getBoolean("mobs.witch.ridable", witchRidable);
witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater);
-@@ -2633,6 +2760,7 @@ public class PurpurWorldConfig {
+@@ -2638,6 +2765,7 @@ public class PurpurWorldConfig {
}
witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth);
witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater);
@@ -2176,7 +2176,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean witherRidable = false;
-@@ -2647,6 +2775,7 @@ public class PurpurWorldConfig {
+@@ -2652,6 +2780,7 @@ public class PurpurWorldConfig {
public boolean witherCanRideVehicles = false;
public float witherExplosionRadius = 1.0F;
public boolean witherPlaySpawnSound = true;
@@ -2184,7 +2184,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2669,6 +2798,7 @@ public class PurpurWorldConfig {
+@@ -2674,6 +2803,7 @@ public class PurpurWorldConfig {
witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius);
witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound);
@@ -2192,7 +2192,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean witherSkeletonRidable = false;
-@@ -2676,6 +2806,7 @@ public class PurpurWorldConfig {
+@@ -2681,6 +2811,7 @@ public class PurpurWorldConfig {
public boolean witherSkeletonControllable = true;
public double witherSkeletonMaxHealth = 20.0D;
public boolean witherSkeletonTakeDamageFromWater = false;
@@ -2200,7 +2200,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void witherSkeletonSettings() {
witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable);
witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater);
-@@ -2687,6 +2818,7 @@ public class PurpurWorldConfig {
+@@ -2692,6 +2823,7 @@ public class PurpurWorldConfig {
}
witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth);
witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater);
@@ -2208,7 +2208,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean wolfRidable = false;
-@@ -2698,6 +2830,7 @@ public class PurpurWorldConfig {
+@@ -2703,6 +2835,7 @@ public class PurpurWorldConfig {
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
public boolean wolfTakeDamageFromWater = false;
@@ -2216,7 +2216,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
-@@ -2717,6 +2850,7 @@ public class PurpurWorldConfig {
+@@ -2722,6 +2855,7 @@ public class PurpurWorldConfig {
wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid);
wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks);
wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater);
@@ -2224,7 +2224,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean zoglinRidable = false;
-@@ -2724,6 +2858,7 @@ public class PurpurWorldConfig {
+@@ -2729,6 +2863,7 @@ public class PurpurWorldConfig {
public boolean zoglinControllable = true;
public double zoglinMaxHealth = 40.0D;
public boolean zoglinTakeDamageFromWater = false;
@@ -2232,7 +2232,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void zoglinSettings() {
zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable);
zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater);
-@@ -2735,6 +2870,7 @@ public class PurpurWorldConfig {
+@@ -2740,6 +2875,7 @@ public class PurpurWorldConfig {
}
zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth);
zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater);
@@ -2240,7 +2240,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean zombieRidable = false;
-@@ -2748,6 +2884,7 @@ public class PurpurWorldConfig {
+@@ -2753,6 +2889,7 @@ public class PurpurWorldConfig {
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
public boolean zombieBypassMobGriefing = false;
public boolean zombieTakeDamageFromWater = false;
@@ -2248,7 +2248,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2765,6 +2902,7 @@ public class PurpurWorldConfig {
+@@ -2770,6 +2907,7 @@ public class PurpurWorldConfig {
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing);
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
@@ -2256,7 +2256,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean zombieHorseRidableInWater = false;
-@@ -2777,6 +2915,7 @@ public class PurpurWorldConfig {
+@@ -2782,6 +2920,7 @@ public class PurpurWorldConfig {
public double zombieHorseMovementSpeedMax = 0.2D;
public double zombieHorseSpawnChance = 0.0D;
public boolean zombieHorseTakeDamageFromWater = false;
@@ -2264,7 +2264,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void zombieHorseSettings() {
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim);
-@@ -2794,6 +2933,7 @@ public class PurpurWorldConfig {
+@@ -2799,6 +2938,7 @@ public class PurpurWorldConfig {
zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax);
zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater);
@@ -2272,7 +2272,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean zombieVillagerRidable = false;
-@@ -2808,6 +2948,7 @@ public class PurpurWorldConfig {
+@@ -2813,6 +2953,7 @@ public class PurpurWorldConfig {
public int zombieVillagerCuringTimeMin = 3600;
public int zombieVillagerCuringTimeMax = 6000;
public boolean zombieVillagerCureEnabled = true;
@@ -2280,7 +2280,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -2826,6 +2967,7 @@ public class PurpurWorldConfig {
+@@ -2831,6 +2972,7 @@ public class PurpurWorldConfig {
zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin);
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
@@ -2288,7 +2288,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
}
public boolean zombifiedPiglinRidable = false;
-@@ -2838,6 +2980,7 @@ public class PurpurWorldConfig {
+@@ -2843,6 +2985,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
public boolean zombifiedPiglinTakeDamageFromWater = false;
@@ -2296,7 +2296,7 @@ index 68c173fac745593404b63e8e94ed8c62766bd2c6..73fb5e6d26517f4ffdaef29e1aebbfee
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
-@@ -2854,6 +2997,7 @@ public class PurpurWorldConfig {
+@@ -2859,6 +3002,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/0245-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch
index 2a23519ae..4a23654cf 100644
--- a/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch
+++ b/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Option to prevent spiders from climbing world border
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 151e573ece15fe19e5b09662a9bb7459aef7e9ae..3d4d3ec099a37458d43a0500724eec7594097a41 100644
+index db6a37a87823a3f305249c0fb7c9d90f669c5124..e5c401a8b2c7333b75188cc7305c271114071bd7 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -305,6 +305,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -39,10 +39,10 @@ index bdd4fc3072f7a5ea504ba35f6a08ae971e83b69f..b9ac8cefefe1f47548166330b7c889df
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e82f57bba3669fe7201563186148b42a33c0129b..2d5c629148a004f8cc8b5f41939486bfa5aa435b 100644
+index 40e54a9d0bdd8e155eae9086facbe8cd7fd261bc..452bb5070347251a3e53fef82872b8c5bd990d03 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2483,6 +2483,7 @@ public class PurpurWorldConfig {
+@@ -2488,6 +2488,7 @@ public class PurpurWorldConfig {
public double spiderMaxHealth = 16.0D;
public boolean spiderTakeDamageFromWater = false;
public boolean spiderAlwaysDropExp = false;
@@ -50,7 +50,7 @@ index e82f57bba3669fe7201563186148b42a33c0129b..2d5c629148a004f8cc8b5f41939486bf
private void spiderSettings() {
spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable);
spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater);
-@@ -2495,6 +2496,7 @@ public class PurpurWorldConfig {
+@@ -2500,6 +2501,7 @@ public class PurpurWorldConfig {
spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth);
spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater);
spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp);
diff --git a/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
index d7c7c9395..6c42f46df 100644
--- a/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
+++ b/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
@@ -74,10 +74,10 @@ index d1d10a7a62c7372634e22d6df8fc7d085d051237..e6a37649900f55d7178f7cd876b71c5d
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 50cfe61d4efeae6b00bde8bea9cf3c36f244989e..69c95e662d60ed63e4cdb4f33d59decd2de3190b 100644
+index 452bb5070347251a3e53fef82872b8c5bd990d03..c8fd074ab4c176c6cc722143879f912edc1880cb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -552,6 +552,8 @@ public class PurpurWorldConfig {
+@@ -557,6 +557,8 @@ public class PurpurWorldConfig {
public Map axeWaxables = new HashMap<>();
public Map axeWeatherables = new HashMap<>();
public Map hoeTillables = new HashMap<>();
@@ -86,7 +86,7 @@ index 50cfe61d4efeae6b00bde8bea9cf3c36f244989e..69c95e662d60ed63e4cdb4f33d59decd
private void toolSettings() {
axeStrippables.clear();
axeWaxables.clear();
-@@ -699,6 +701,8 @@ public class PurpurWorldConfig {
+@@ -704,6 +706,8 @@ public class PurpurWorldConfig {
});
hoeTillables.put(block, new Tillable(condition, into, drops));
});
diff --git a/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch
index 273192401..509ffba39 100644
--- a/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch
+++ b/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch
@@ -18,10 +18,10 @@ index 63aeab7204ac954b2908207dc6e743d17aa27f2e..aa6f6e252f6f2933825b97bf1b9679fe
if (entityitem != null) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 69c95e662d60ed63e4cdb4f33d59decd2de3190b..a7638fd6b75d04b454388b952157a3a6c791dba0 100644
+index c8fd074ab4c176c6cc722143879f912edc1880cb..6b40e6abbff31cd7af7c1d484f1043881e097d72 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2276,6 +2276,7 @@ public class PurpurWorldConfig {
+@@ -2281,6 +2281,7 @@ public class PurpurWorldConfig {
public boolean sheepBypassMobGriefing = false;
public boolean sheepTakeDamageFromWater = false;
public boolean sheepAlwaysDropExp = false;
@@ -29,7 +29,7 @@ index 69c95e662d60ed63e4cdb4f33d59decd2de3190b..a7638fd6b75d04b454388b952157a3a6
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -2290,6 +2291,7 @@ public class PurpurWorldConfig {
+@@ -2295,6 +2296,7 @@ public class PurpurWorldConfig {
sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater);
sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp);
diff --git a/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch
index 2951928a9..0ea1c869d 100644
--- a/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch
+++ b/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch
@@ -32,10 +32,10 @@ index 4907e0acb7d01b7f57b75579e58ce743e3e000bb..5e6df1d6cbaecb986d1b8d382fe673a2
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a7638fd6b75d04b454388b952157a3a6c791dba0..5dff0bfe5c9f92213715b46f37c87f8da379780b 100644
+index 6b40e6abbff31cd7af7c1d484f1043881e097d72..95ff1d59f4195c1d3815e36c7640aeca4b7a41e6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -976,11 +976,13 @@ public class PurpurWorldConfig {
+@@ -981,11 +981,13 @@ public class PurpurWorldConfig {
public boolean turtleEggsBreakFromItems = true;
public boolean turtleEggsBreakFromMinecarts = true;
public boolean turtleEggsBypassMobGriefing = false;
diff --git a/patches/server/0249-Mob-head-visibility-percent.patch b/patches/server/0249-Mob-head-visibility-percent.patch
index 943b3c697..21ff5f6d4 100644
--- a/patches/server/0249-Mob-head-visibility-percent.patch
+++ b/patches/server/0249-Mob-head-visibility-percent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6e7af1939df4ff99d6d4645f7ed270110d9d0373..d120c8808c6a8df2c8615fe02f2c8a5b6a126d8e 100644
+index 634363eb1c23e088b05d895565fb8ce9d3bdfb08..fd812571fef3782c03735ae8599845fc027c8e05 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1015,9 +1015,17 @@ public abstract class LivingEntity extends Entity {
@@ -29,10 +29,10 @@ index 6e7af1939df4ff99d6d4645f7ed270110d9d0373..d120c8808c6a8df2c8615fe02f2c8a5b
// 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 5dff0bfe5c9f92213715b46f37c87f8da379780b..f19e95fecdf19bf56d456e4e35edbe0abe5d5839 100644
+index 95ff1d59f4195c1d3815e36c7640aeca4b7a41e6..6f081554311a50678efb05e02bb4409cebe2a897 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1264,6 +1264,7 @@ public class PurpurWorldConfig {
+@@ -1269,6 +1269,7 @@ public class PurpurWorldConfig {
public boolean creeperExplodeWhenKilled = false;
public boolean creeperHealthRadius = false;
public boolean creeperAlwaysDropExp = false;
@@ -40,7 +40,7 @@ index 5dff0bfe5c9f92213715b46f37c87f8da379780b..f19e95fecdf19bf56d456e4e35edbe0a
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -1281,6 +1282,7 @@ public class PurpurWorldConfig {
+@@ -1286,6 +1287,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);
@@ -48,7 +48,7 @@ index 5dff0bfe5c9f92213715b46f37c87f8da379780b..f19e95fecdf19bf56d456e4e35edbe0a
}
public boolean dolphinRidable = false;
-@@ -2356,6 +2358,7 @@ public class PurpurWorldConfig {
+@@ -2361,6 +2363,7 @@ public class PurpurWorldConfig {
public double skeletonMaxHealth = 20.0D;
public boolean skeletonTakeDamageFromWater = false;
public boolean skeletonAlwaysDropExp = false;
@@ -56,7 +56,7 @@ index 5dff0bfe5c9f92213715b46f37c87f8da379780b..f19e95fecdf19bf56d456e4e35edbe0a
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2368,6 +2371,7 @@ public class PurpurWorldConfig {
+@@ -2373,6 +2376,7 @@ public class PurpurWorldConfig {
skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth);
skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater);
skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp);
@@ -64,7 +64,7 @@ index 5dff0bfe5c9f92213715b46f37c87f8da379780b..f19e95fecdf19bf56d456e4e35edbe0a
}
public boolean skeletonHorseRidableInWater = true;
-@@ -2895,6 +2899,7 @@ public class PurpurWorldConfig {
+@@ -2900,6 +2904,7 @@ public class PurpurWorldConfig {
public boolean zombieBypassMobGriefing = false;
public boolean zombieTakeDamageFromWater = false;
public boolean zombieAlwaysDropExp = false;
@@ -72,7 +72,7 @@ index 5dff0bfe5c9f92213715b46f37c87f8da379780b..f19e95fecdf19bf56d456e4e35edbe0a
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2913,6 +2918,7 @@ public class PurpurWorldConfig {
+@@ -2918,6 +2923,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/0252-Stop-bees-from-dying-after-stinging.patch b/patches/server/0252-Stop-bees-from-dying-after-stinging.patch
index da0dbf125..436cb2f7a 100644
--- a/patches/server/0252-Stop-bees-from-dying-after-stinging.patch
+++ b/patches/server/0252-Stop-bees-from-dying-after-stinging.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Stop bees from dying after stinging
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index 4b9d13fb36d0e35f1cc7a5d95b26dc5f8ded0d6a..a6378e6db70ba80aaa18954766f029cd6e97419e 100644
+index c3680aa6d92b0adb104d144875cea679084e36f2..a7c0c2a8b9b5c1336ce33418e24e0bfd77cec5b0 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -455,6 +455,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -17,10 +17,10 @@ index 4b9d13fb36d0e35f1cc7a5d95b26dc5f8ded0d6a..a6378e6db70ba80aaa18954766f029cd
++this.timeSinceSting;
if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, (int) 1, (int) 1200)) == 0) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f19e95fecdf19bf56d456e4e35edbe0abe5d5839..88bffce4f59c9d52ccaff90eeded2e375cc50f7a 100644
+index 6f081554311a50678efb05e02bb4409cebe2a897..49bd14bb82b3db30b7a45c6ca88d983a3bd8af91 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1084,6 +1084,7 @@ public class PurpurWorldConfig {
+@@ -1089,6 +1089,7 @@ public class PurpurWorldConfig {
public boolean beeCanWorkAtNight = false;
public boolean beeCanWorkInRain = false;
public boolean beeAlwaysDropExp = false;
@@ -28,7 +28,7 @@ index f19e95fecdf19bf56d456e4e35edbe0abe5d5839..88bffce4f59c9d52ccaff90eeded2e37
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -1100,6 +1101,7 @@ public class PurpurWorldConfig {
+@@ -1105,6 +1106,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/0254-Configurable-farmland-trample-height.patch b/patches/server/0254-Configurable-farmland-trample-height.patch
index 77b58dc77..ee104a8d5 100644
--- a/patches/server/0254-Configurable-farmland-trample-height.patch
+++ b/patches/server/0254-Configurable-farmland-trample-height.patch
@@ -35,10 +35,10 @@ index e5a3e3a4367dfb924624a913b816b3fd56e3fefd..7068cb39ab264fa0c65febff01236b8d
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 88bffce4f59c9d52ccaff90eeded2e375cc50f7a..fc16dbc73fda459e4832b555e20fcce914a90cb6 100644
+index 49bd14bb82b3db30b7a45c6ca88d983a3bd8af91..6944b5fb1f4d01866212012b3c9d8b126e85bf25 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -847,6 +847,7 @@ public class PurpurWorldConfig {
+@@ -852,6 +852,7 @@ public class PurpurWorldConfig {
public boolean farmlandTramplingDisabled = false;
public boolean farmlandTramplingOnlyPlayers = false;
public boolean farmlandTramplingFeatherFalling = false;
@@ -46,7 +46,7 @@ index 88bffce4f59c9d52ccaff90eeded2e375cc50f7a..fc16dbc73fda459e4832b555e20fcce9
private void farmlandSettings() {
farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing);
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
-@@ -854,6 +855,7 @@ public class PurpurWorldConfig {
+@@ -859,6 +860,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/0255-Configurable-player-pickup-exp-delay.patch b/patches/server/0255-Configurable-player-pickup-exp-delay.patch
index ed35f62b8..311d9ad18 100644
--- a/patches/server/0255-Configurable-player-pickup-exp-delay.patch
+++ b/patches/server/0255-Configurable-player-pickup-exp-delay.patch
@@ -37,10 +37,10 @@ index 870e794392b94d140db6d5650c3e7ae3dd6f593d..7344324517fb10ee6ab3467b40fcb9cd
} 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 62c2bd8988815b5afe54a26e328bf75a758ffab4..ce6744240e4e57aef9f5d452047f103068e37b91 100644
+index 6944b5fb1f4d01866212012b3c9d8b126e85bf25..98c12d6cdabad4c37d535238c8df47509d5afa25 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -416,6 +416,7 @@ public class PurpurWorldConfig {
+@@ -421,6 +421,7 @@ public class PurpurWorldConfig {
public boolean playerRidableInWater = false;
public boolean playerRemoveBindingWithWeakness = false;
public int shiftRightClickRepairsMendingPoints = 0;
@@ -48,7 +48,7 @@ index 62c2bd8988815b5afe54a26e328bf75a758ffab4..ce6744240e4e57aef9f5d452047f1030
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -444,6 +445,7 @@ public class PurpurWorldConfig {
+@@ -449,6 +450,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/0256-Allow-void-trading.patch b/patches/server/0256-Allow-void-trading.patch
index 9da7ba73e..0c20a850a 100644
--- a/patches/server/0256-Allow-void-trading.patch
+++ b/patches/server/0256-Allow-void-trading.patch
@@ -18,10 +18,10 @@ index 81a0047e04f9be9dd8030fb68f2ce59c166700c1..0d82ca8ba9f2b11213cfe1ab01dc6ef3
}
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ce6744240e4e57aef9f5d452047f103068e37b91..3b171cc74b925e7ae501f8d5c171afdf99936eb7 100644
+index 98c12d6cdabad4c37d535238c8df47509d5afa25..a9769af473aed648b9fe7505d19dd065ff1c5d64 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -417,6 +417,7 @@ public class PurpurWorldConfig {
+@@ -422,6 +422,7 @@ public class PurpurWorldConfig {
public boolean playerRemoveBindingWithWeakness = false;
public int shiftRightClickRepairsMendingPoints = 0;
public int playerExpPickupDelay = 2;
@@ -29,7 +29,7 @@ index ce6744240e4e57aef9f5d452047f103068e37b91..3b171cc74b925e7ae501f8d5c171afdf
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -446,6 +447,7 @@ public class PurpurWorldConfig {
+@@ -451,6 +452,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/0258-Configurable-phantom-size.patch b/patches/server/0258-Configurable-phantom-size.patch
index 274cf2603..918313dfe 100644
--- a/patches/server/0258-Configurable-phantom-size.patch
+++ b/patches/server/0258-Configurable-phantom-size.patch
@@ -22,10 +22,10 @@ index 33b347474b7485633ca77bdff28e4b32580b51b8..bfca1101025e473c97cd4804e74bed04
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 10535d574d71b5d3265f2d7fc6d739c028e503f2..369e4dd447cac95cb7325c2f1239f9c5527c5070 100644
+index a9769af473aed648b9fe7505d19dd065ff1c5d64..0574b279bde0237cd3318c9274e1281f305045b5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2015,6 +2015,8 @@ public class PurpurWorldConfig {
+@@ -2020,6 +2020,8 @@ public class PurpurWorldConfig {
public boolean phantomFlamesOnSwoop = false;
public boolean phantomTakeDamageFromWater = false;
public boolean phantomAlwaysDropExp = false;
@@ -34,7 +34,7 @@ index 10535d574d71b5d3265f2d7fc6d739c028e503f2..369e4dd447cac95cb7325c2f1239f9c5
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -2057,6 +2059,13 @@ public class PurpurWorldConfig {
+@@ -2062,6 +2064,13 @@ public class PurpurWorldConfig {
phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater);
phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp);
diff --git a/patches/server/0261-Configurable-minimum-demand-for-trades.patch b/patches/server/0261-Configurable-minimum-demand-for-trades.patch
index 3113991aa..4e88be88c 100644
--- a/patches/server/0261-Configurable-minimum-demand-for-trades.patch
+++ b/patches/server/0261-Configurable-minimum-demand-for-trades.patch
@@ -40,10 +40,10 @@ index 8a9a701baabdaf066cd9b28c05430f673fcafb4e..17cc3237c7fc8ceda136b2371fabf6f0
public ItemStack assemble() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 369e4dd447cac95cb7325c2f1239f9c5527c5070..73fae5e2af9d75bdc449febf34557f68b98c0f0c 100644
+index 0574b279bde0237cd3318c9274e1281f305045b5..e66f169b4355ef537dbde2c3aaf85e7b58cfe523 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2693,6 +2693,7 @@ public class PurpurWorldConfig {
+@@ -2698,6 +2698,7 @@ public class PurpurWorldConfig {
public boolean villagerTakeDamageFromWater = false;
public boolean villagerAllowTrading = true;
public boolean villagerAlwaysDropExp = false;
@@ -51,7 +51,7 @@ index 369e4dd447cac95cb7325c2f1239f9c5527c5070..73fae5e2af9d75bdc449febf34557f68
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2715,6 +2716,7 @@ public class PurpurWorldConfig {
+@@ -2720,6 +2721,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/0262-Lobotomize-stuck-villagers.patch b/patches/server/0262-Lobotomize-stuck-villagers.patch
index 70931c157..d1006bcc6 100644
--- a/patches/server/0262-Lobotomize-stuck-villagers.patch
+++ b/patches/server/0262-Lobotomize-stuck-villagers.patch
@@ -111,10 +111,10 @@ index f0b910df1ee471b4d72d97c6197ab14f2854976e..6ce32a52d621a0c2629568ea07e445f5
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 73fae5e2af9d75bdc449febf34557f68b98c0f0c..829b0d20d24855416138825066ff03d9baceb193 100644
+index e66f169b4355ef537dbde2c3aaf85e7b58cfe523..53903df5f2fd434b4abc7b66c97046ef850a6e8a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2694,6 +2694,8 @@ public class PurpurWorldConfig {
+@@ -2699,6 +2699,8 @@ public class PurpurWorldConfig {
public boolean villagerAllowTrading = true;
public boolean villagerAlwaysDropExp = false;
public int villagerMinimumDemand = 0;
@@ -123,7 +123,7 @@ index 73fae5e2af9d75bdc449febf34557f68b98c0f0c..829b0d20d24855416138825066ff03d9
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2717,6 +2719,17 @@ public class PurpurWorldConfig {
+@@ -2722,6 +2724,17 @@ public class PurpurWorldConfig {
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp);
villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand);
diff --git a/patches/server/0263-Option-for-villager-display-trade-item.patch b/patches/server/0263-Option-for-villager-display-trade-item.patch
index 1f64f86fb..eb443c832 100644
--- a/patches/server/0263-Option-for-villager-display-trade-item.patch
+++ b/patches/server/0263-Option-for-villager-display-trade-item.patch
@@ -17,10 +17,10 @@ index 385f3df7044e3f03f17c3ec7484b268004a3def9..90ba6a3abf62e4b272fada96b554ca31
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 829b0d20d24855416138825066ff03d9baceb193..8e6201dd9fbacb9f8fae3a2013d5efe7b16b5400 100644
+index 53903df5f2fd434b4abc7b66c97046ef850a6e8a..4c05e766ce5eeec876193b564c8eec9676ae6205 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2696,6 +2696,7 @@ public class PurpurWorldConfig {
+@@ -2701,6 +2701,7 @@ public class PurpurWorldConfig {
public int villagerMinimumDemand = 0;
public boolean villagerLobotomizeEnabled = false;
public int villagerLobotomizeCheckInterval = 100;
@@ -28,7 +28,7 @@ index 829b0d20d24855416138825066ff03d9baceb193..8e6201dd9fbacb9f8fae3a2013d5efe7
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2730,6 +2731,7 @@ public class PurpurWorldConfig {
+@@ -2735,6 +2736,7 @@ public class PurpurWorldConfig {
}
villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled);
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
diff --git a/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
index e70027d49..91bfccdaf 100644
--- a/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
+++ b/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
@@ -17,10 +17,10 @@ index 18389f46902bb9879ac6d734723e9a720724dc48..b2b8663a9cff08bacdab91c7bb014ba6
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8e6201dd9fbacb9f8fae3a2013d5efe7b16b5400..3efe2f056b4186093248ef8faaba5ba664e849dd 100644
+index 4c05e766ce5eeec876193b564c8eec9676ae6205..378b2d00193c69f020e4ac6f39dd62ba4dc918c5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -965,8 +965,10 @@ public class PurpurWorldConfig {
+@@ -970,8 +970,10 @@ public class PurpurWorldConfig {
}
public boolean spawnerDeactivateByRedstone = false;
diff --git a/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch
index 637f845a7..0eb21c4e6 100644
--- a/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch
+++ b/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index d120c8808c6a8df2c8615fe02f2c8a5b6a126d8e..ebc92079fa9434689c30782000950842929d6102 100644
+index fd812571fef3782c03735ae8599845fc027c8e05..411593b1b105d62440d76b7bd1b8c74b701e3e75 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1441,13 +1441,13 @@ public abstract class LivingEntity extends Entity {
@@ -38,10 +38,10 @@ index 1e854090c986f480e35fac5c6f347e72904f9ab5..76a4803decea19f8bed8cb11e73bd789
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f90e847e1236bd5a67a6970f2273073c801e37f4..6b21494a7461c2a449b754248cf19d4da571e3e0 100644
+index 378b2d00193c69f020e4ac6f39dd62ba4dc918c5..7d08e462f20a5f8f0263d3786b35219c618e259a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -139,6 +139,7 @@ public class PurpurWorldConfig {
+@@ -144,6 +144,7 @@ public class PurpurWorldConfig {
public boolean mobsIgnoreRails = false;
public boolean rainStopsAfterSleep = true;
public boolean thunderStopsAfterSleep = true;
@@ -49,7 +49,7 @@ index f90e847e1236bd5a67a6970f2273073c801e37f4..6b21494a7461c2a449b754248cf19d4d
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
-@@ -164,6 +165,7 @@ public class PurpurWorldConfig {
+@@ -169,6 +170,7 @@ public class PurpurWorldConfig {
mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails);
rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep);
thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep);
diff --git a/patches/server/0267-Anvil-repair-damage-options.patch b/patches/server/0267-Anvil-repair-damage-options.patch
index 19f174e06..3207d926f 100644
--- a/patches/server/0267-Anvil-repair-damage-options.patch
+++ b/patches/server/0267-Anvil-repair-damage-options.patch
@@ -64,10 +64,10 @@ index 1b23352a9deae37f9c947fef1b1f8a2875507cfa..ad5aad3682926e2e8965bb87ad8d5381
return InteractionResult.SUCCESS;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index cc785c36228fb3653cbbc9cd8d9923d8c8d69a53..145b8e2cf1929203a0c9cdc39c9985ec8020c9d7 100644
+index 7d08e462f20a5f8f0263d3786b35219c618e259a..bd7295f82c963b95b32e9115bc9f4b380852f001 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -712,8 +712,12 @@ public class PurpurWorldConfig {
+@@ -717,8 +717,12 @@ public class PurpurWorldConfig {
}
public boolean anvilAllowColors = false;
diff --git a/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch
index e415599b6..d13c3db0e 100644
--- a/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch
+++ b/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch
@@ -20,10 +20,10 @@ index 5e6df1d6cbaecb986d1b8d382fe673a2cbb76115..6151226a88a9ca44955821521641e788
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 145b8e2cf1929203a0c9cdc39c9985ec8020c9d7..65236d76e7b3c4bd0a493529eebc5b3f971fbfb2 100644
+index bd7295f82c963b95b32e9115bc9f4b380852f001..0e5002f3dee2aff00c3e848ecd9429417ea88669 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -991,12 +991,14 @@ public class PurpurWorldConfig {
+@@ -996,12 +996,14 @@ public class PurpurWorldConfig {
public boolean turtleEggsBreakFromMinecarts = true;
public boolean turtleEggsBypassMobGriefing = false;
public int turtleEggsRandomTickCrackChance = 500;
diff --git a/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch b/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch
index d834b223a..ae0b7bfe4 100644
--- a/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch
+++ b/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch
@@ -21,10 +21,10 @@ index 7466c437b2e996f16a08aaefc5c2b7cba216a14c..205ce2bd91a98a0c67d3c5dd640eb88c
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 65236d76e7b3c4bd0a493529eebc5b3f971fbfb2..64f580007451ff1b5d8efd9ffc9d70a97bf76441 100644
+index 0e5002f3dee2aff00c3e848ecd9429417ea88669..4a7caa3ac7d47647dd8b771dad30af487b143bde 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1707,6 +1707,7 @@ public class PurpurWorldConfig {
+@@ -1712,6 +1712,7 @@ public class PurpurWorldConfig {
public int horseBreedingTicks = 6000;
public boolean horseTakeDamageFromWater = false;
public boolean horseStandWithRider = true;
@@ -32,7 +32,7 @@ index 65236d76e7b3c4bd0a493529eebc5b3f971fbfb2..64f580007451ff1b5d8efd9ffc9d70a9
public boolean horseAlwaysDropExp = false;
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
-@@ -1726,6 +1727,7 @@ public class PurpurWorldConfig {
+@@ -1731,6 +1732,7 @@ public class PurpurWorldConfig {
horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks);
horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater);
horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider);
diff --git a/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch
index 0e805e68b..0c67834f0 100644
--- a/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch
+++ b/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch
@@ -18,10 +18,10 @@ index ace39b0585c67b2764d75ff9e64d132347157a51..20668d53625ec88ba3eb2a655ad3f6bc
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 64f580007451ff1b5d8efd9ffc9d70a97bf76441..c64d1107119792e3f523bbc39a5a711d209585c9 100644
+index 4a7caa3ac7d47647dd8b771dad30af487b143bde..1a5d5db4cf3a9b5c84d4da46a103afe6461179b4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2709,6 +2709,8 @@ public class PurpurWorldConfig {
+@@ -2714,6 +2714,8 @@ public class PurpurWorldConfig {
public boolean villagerLobotomizeEnabled = false;
public int villagerLobotomizeCheckInterval = 100;
public boolean villagerDisplayTradeItem = true;
@@ -30,7 +30,7 @@ index 64f580007451ff1b5d8efd9ffc9d70a97bf76441..c64d1107119792e3f523bbc39a5a711d
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2744,6 +2746,8 @@ public class PurpurWorldConfig {
+@@ -2749,6 +2751,8 @@ public class PurpurWorldConfig {
villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled);
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
diff --git a/patches/server/0274-Stonecutter-damage.patch b/patches/server/0274-Stonecutter-damage.patch
index 1578b34c8..02b3e966f 100644
--- a/patches/server/0274-Stonecutter-damage.patch
+++ b/patches/server/0274-Stonecutter-damage.patch
@@ -80,7 +80,7 @@ index f4ca0a9481533befc78cb18c1f9810826f57562c..902e420d19288df124da2292a60f95e9
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.msgId));
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index 619b6bb634e3be722b1e8ab8a7a5974f494da1ff..3d96a49cca34f0a3f3b37de839e476c2a4c1f1d6 100644
+index ac6e4936b0ad1cef84eae68ebccb5279060d884b..8caf0861433263086dbae6f13b5fa6a36de68843 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -200,8 +200,10 @@ public class PurpurConfig {
@@ -95,10 +95,10 @@ index 619b6bb634e3be722b1e8ab8a7a5974f494da1ff..3d96a49cca34f0a3f3b37de839e476c2
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 de67f86b7cae63084b51948807bff0f7921541ee..aa1c86640c4674835ab31dbeaf9b592f26bff198 100644
+index 1a5d5db4cf3a9b5c84d4da46a103afe6461179b4..b3228abefb9dab924324a5aceda4fa0d7a904b3e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -986,6 +986,11 @@ public class PurpurWorldConfig {
+@@ -991,6 +991,11 @@ public class PurpurWorldConfig {
spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava);
}
diff --git a/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch
index a82b4e801..4f0214d68 100644
--- a/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch
+++ b/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch
@@ -18,10 +18,10 @@ index d3540a4daaa8021ae009bfd4d9ef4f1172ab4c56..2b250439f263f64db7920536ed6eaf64
entity.hurt(DamageSource.HOT_FLOOR, 1.0F);
org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f781ea51472cea86d8eb5279326d21a63710b426..d0c725d8fb610a276d96370359eaab7010c85b53 100644
+index b3228abefb9dab924324a5aceda4fa0d7a904b3e..74cac857c8ecc60b333d355258c78db96ca468a2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -922,6 +922,13 @@ public class PurpurWorldConfig {
+@@ -927,6 +927,13 @@ public class PurpurWorldConfig {
pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit);
}
diff --git a/patches/server/0276-Add-config-for-snow-on-blue-ice.patch b/patches/server/0276-Add-config-for-snow-on-blue-ice.patch
index 4d0c009f5..f78f57d8a 100644
--- a/patches/server/0276-Add-config-for-snow-on-blue-ice.patch
+++ b/patches/server/0276-Add-config-for-snow-on-blue-ice.patch
@@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d0c725d8fb610a276d96370359eaab7010c85b53..80b827eb45092a9069a9dced5b04eebce7b82b58 100644
+index 74cac857c8ecc60b333d355258c78db96ca468a2..bb012e35d9a5df7638950c72c03364f8d1f9f1b7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -891,9 +891,11 @@ public class PurpurWorldConfig {
+@@ -896,9 +896,11 @@ public class PurpurWorldConfig {
public boolean mobsSpawnOnPackedIce = true;
public boolean mobsSpawnOnBlueIce = true;
diff --git a/patches/server/0278-Skeletons-eat-wither-roses.patch b/patches/server/0278-Skeletons-eat-wither-roses.patch
index 34d503222..16df53e66 100644
--- a/patches/server/0278-Skeletons-eat-wither-roses.patch
+++ b/patches/server/0278-Skeletons-eat-wither-roses.patch
@@ -94,10 +94,10 @@ index 51c548cd84bd83624fbff3f853a8050dc1e71ecd..a5ab36fdd0751cb3b96525d53bbaec33
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c4b43f805bc82d5e087728cda23183f990806b54..e8cc15345734ee1f0d7e452f2a90ddd9e57951ba 100644
+index bb012e35d9a5df7638950c72c03364f8d1f9f1b7..137dd05616eba132f5a418dc361adcc22c89d0ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2402,6 +2402,7 @@ public class PurpurWorldConfig {
+@@ -2407,6 +2407,7 @@ public class PurpurWorldConfig {
public boolean skeletonTakeDamageFromWater = false;
public boolean skeletonAlwaysDropExp = false;
public double skeletonHeadVisibilityPercent = 0.5D;
@@ -105,7 +105,7 @@ index c4b43f805bc82d5e087728cda23183f990806b54..e8cc15345734ee1f0d7e452f2a90ddd9
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2415,6 +2416,7 @@ public class PurpurWorldConfig {
+@@ -2420,6 +2421,7 @@ public class PurpurWorldConfig {
skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater);
skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp);
skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent);
diff --git a/patches/server/0279-Enchantment-Table-Persists-Lapis.patch b/patches/server/0279-Enchantment-Table-Persists-Lapis.patch
index 6e2ac1656..596e132e7 100644
--- a/patches/server/0279-Enchantment-Table-Persists-Lapis.patch
+++ b/patches/server/0279-Enchantment-Table-Persists-Lapis.patch
@@ -146,10 +146,10 @@ index 2341a5a249d455628165fc6ba508fc6d70c3dbfb..4ccb8a7dc4201a7cffa59e4195765001
+ // Purpur
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e8cc15345734ee1f0d7e452f2a90ddd9e57951ba..6a5572714916937eff21c1b984a2a2f00c561cbe 100644
+index 137dd05616eba132f5a418dc361adcc22c89d0ca..07c6a2deac19f7edf25258337981f1e74702b2a9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1423,6 +1423,11 @@ public class PurpurWorldConfig {
+@@ -1428,6 +1428,11 @@ public class PurpurWorldConfig {
elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp);
}
diff --git a/patches/server/0282-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0282-Config-for-sculk-shrieker-can_summon-state.patch
index 25f6973c3..834fbe786 100644
--- a/patches/server/0282-Config-for-sculk-shrieker-can_summon-state.patch
+++ b/patches/server/0282-Config-for-sculk-shrieker-can_summon-state.patch
@@ -18,10 +18,10 @@ index e0998215841e500e5982a242e9f4e646402e1521..11038ba560439dab04c54c31a32d63be
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 6a5572714916937eff21c1b984a2a2f00c561cbe..1ffa1182482cd5581979de3ef20a0dc1178eabf4 100644
+index 07c6a2deac19f7edf25258337981f1e74702b2a9..17f01ba3a6d824ea5ab2d6ec445ce17ab85aad87 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -962,6 +962,11 @@ public class PurpurWorldConfig {
+@@ -967,6 +967,11 @@ public class PurpurWorldConfig {
fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping);
}
diff --git a/patches/server/0283-Config-to-not-let-coral-die.patch b/patches/server/0283-Config-to-not-let-coral-die.patch
index 89f74e62d..d4071fec3 100644
--- a/patches/server/0283-Config-to-not-let-coral-die.patch
+++ b/patches/server/0283-Config-to-not-let-coral-die.patch
@@ -29,10 +29,10 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4
int i = aenumdirection.length;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 1ffa1182482cd5581979de3ef20a0dc1178eabf4..fad04b8c56d6183bc72f78915847e56c77228106 100644
+index 17f01ba3a6d824ea5ab2d6ec445ce17ab85aad87..a0e3323d35291b3d7980fe83ec5f27193b4fa79a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -800,6 +800,11 @@ public class PurpurWorldConfig {
+@@ -805,6 +805,11 @@ public class PurpurWorldConfig {
caveVinesMaxGrowthAge = getInt("blocks.cave_vines.max-growth-age", caveVinesMaxGrowthAge);
}
diff --git a/patches/server/0285-Add-toggle-for-RNG-manipulation.patch b/patches/server/0285-Add-toggle-for-RNG-manipulation.patch
index adc178df6..166ef4ecd 100644
--- a/patches/server/0285-Add-toggle-for-RNG-manipulation.patch
+++ b/patches/server/0285-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 3d4d3ec099a37458d43a0500724eec7594097a41..d0cfea27a287b91747585053d1ffb3f203196fd7 100644
+index e5c401a8b2c7333b75188cc7305c271114071bd7..c2335d3aa056d3636d22390278d1fd92915fb1a6 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -576,7 +576,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -33,10 +33,10 @@ index 21f5304e01e0844f1bbf3e1b2f9d50c01f8bf8fd..8afdb5d4fecbb45bad2ed801fc0e526d
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index fad04b8c56d6183bc72f78915847e56c77228106..c75fbe3f3f9f92535e0de92a9fa1fe1ade213192 100644
+index a0e3323d35291b3d7980fe83ec5f27193b4fa79a..2a3ae8ba73a547d02e7a635321e4534de7daafdc 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -201,9 +201,11 @@ public class PurpurWorldConfig {
+@@ -206,9 +206,11 @@ public class PurpurWorldConfig {
public int entityLifeSpan = 0;
public float entityLeftHandedChance = 0.05f;