diff --git a/gradle.properties b/gradle.properties
index 87df81e05..3c9a827b2 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
version = 1.21.1-R0.1-SNAPSHOT
mcVersion = 1.21.1
-paperCommit = 6d7a438faddfbea99d6af7f99f99a480883cef8a
+paperCommit = 7cd4f2c15fbd12637c2161779986f8b56aa0a59e
org.gradle.caching = true
org.gradle.parallel = true
diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch
index 7f00ccc11..daf09777d 100644
--- a/patches/api/0001-Pufferfish-API-Changes.patch
+++ b/patches/api/0001-Pufferfish-API-Changes.patch
@@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/build.gradle.kts b/build.gradle.kts
-index 540fe7e2c110e79c3742f229b3ed8c54b101d260..07945418e95cbe07c45bfa815d828fa311c7f033 100644
+index ab84a1405acc1f0d5f267892243b82b8dab03e21..4114aa99614ae588b1cf465ea7900308476a7568 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -52,6 +52,7 @@ dependencies {
@@ -31,7 +31,7 @@ index 540fe7e2c110e79c3742f229b3ed8c54b101d260..07945418e95cbe07c45bfa815d828fa3
implementation("org.ow2.asm:asm:9.7")
implementation("org.ow2.asm:asm-commons:9.7")
-@@ -130,6 +131,13 @@ val generateApiVersioningFile by tasks.registering {
+@@ -131,6 +132,13 @@ val generateApiVersioningFile by tasks.registering {
}
}
diff --git a/patches/api/0002-Fix-pufferfish-issues.patch b/patches/api/0002-Fix-pufferfish-issues.patch
index 85559ee90..61275c5d4 100644
--- a/patches/api/0002-Fix-pufferfish-issues.patch
+++ b/patches/api/0002-Fix-pufferfish-issues.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java
-index 9df9d09aa477d4cd3c496ba0933c816df1ef0964..2655f98322bcab8622e5f84db1085c3b1f5174b7 100644
+index 652ff54e7c50412503725d628bfe72ed03059790..a7c0936a1ee80618f9a504087c88814f738f4693 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfo.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java
-@@ -18,6 +18,13 @@ public interface ServerBuildInfo {
+@@ -19,6 +19,13 @@ public interface ServerBuildInfo {
*/
Key BRAND_PAPER_ID = Key.key("papermc", "paper");
@@ -23,7 +23,7 @@ index 9df9d09aa477d4cd3c496ba0933c816df1ef0964..2655f98322bcab8622e5f84db1085c3b
* Gets the {@code ServerBuildInfo}.
*
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
-index b82f07a2879412f6b30643ca93a97439aa49a98a..6369124775f8b51b10476a6819969fd075cb61e1 100644
+index 88d5db2995829cba919d78f988d5c735cf70cb1b..494ba7e7bfe2c73d6ea3a348f023372f23a62b1c 100644
--- a/src/test/java/org/bukkit/AnnotationTest.java
+++ b/src/test/java/org/bukkit/AnnotationTest.java
@@ -47,6 +47,10 @@ public class AnnotationTest {
diff --git a/patches/api/0003-Rebrand.patch b/patches/api/0003-Rebrand.patch
index 7427e0cae..97f4d9656 100644
--- a/patches/api/0003-Rebrand.patch
+++ b/patches/api/0003-Rebrand.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Rebrand
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java
-index 2655f98322bcab8622e5f84db1085c3b1f5174b7..8c2c5ea14a839c8767bbf120ae5512f65475cbb0 100644
+index a7c0936a1ee80618f9a504087c88814f738f4693..7196594e07af19a14c320d77df893978525fe386 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfo.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java
-@@ -25,6 +25,13 @@ public interface ServerBuildInfo {
+@@ -26,6 +26,13 @@ public interface ServerBuildInfo {
Key BRAND_PUFFERFISH_ID = Key.key("pufferfish", "pufferfish");
// Purpur end
diff --git a/patches/api/0005-Build-System-Changes.patch b/patches/api/0005-Build-System-Changes.patch
index b4123cae3..ffa035ede 100644
--- a/patches/api/0005-Build-System-Changes.patch
+++ b/patches/api/0005-Build-System-Changes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes
diff --git a/build.gradle.kts b/build.gradle.kts
-index 07945418e95cbe07c45bfa815d828fa311c7f033..b7d584c8b96eb7699e5df90ed04bf22ee256d571 100644
+index 4114aa99614ae588b1cf465ea7900308476a7568..f68a447f309bc9d45c275bbfee1c237f6fb0d680 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -150,6 +150,8 @@ tasks.jar {
+@@ -151,6 +151,8 @@ tasks.jar {
}
tasks.withType {
diff --git a/patches/api/0030-Clean-up-version-command-output.patch b/patches/api/0030-Clean-up-version-command-output.patch
index b71081eb6..3bbcebb14 100644
--- a/patches/api/0030-Clean-up-version-command-output.patch
+++ b/patches/api/0030-Clean-up-version-command-output.patch
@@ -5,12 +5,12 @@ Subject: [PATCH] Clean up version command output
diff --git a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java
-index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48cc50fad5b 100644
+index 023cc52a9e28e1238c7452c0f3f577f2850fd861..00b3f46ddd26ae08744d3dba211f92624d4b1063 100644
--- a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java
+++ b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java
-@@ -26,6 +26,12 @@ public interface VersionFetcher {
- @NotNull
- Component getVersionMessage(@NotNull String serverVersion);
+@@ -28,6 +28,12 @@ public interface VersionFetcher {
+ */
+ Component getVersionMessage(String serverVersion);
+ // Purpur start
+ default int distance() {
@@ -18,9 +18,9 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c
+ }
+ // Purpur end
+
+ @ApiStatus.Internal
class DummyVersionFetcher implements VersionFetcher {
- @Override
diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
index e64bb57f74e6d6f78927be228825b3e0bdf41f48..c880d0010849ab733ad13bbd18fab3c864d0cf61 100644
--- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java
diff --git a/patches/api/0036-Add-local-difficulty-api.patch b/patches/api/0036-Add-local-difficulty-api.patch
index c55fc8364..d34fee58e 100644
--- a/patches/api/0036-Add-local-difficulty-api.patch
+++ b/patches/api/0036-Add-local-difficulty-api.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index adcd8161846b06fd1a7895750f98b629204a8406..c9edc1d91046c80feb39a2f9cb7f3b69a99fe0b5 100644
+index ef32a937e6faf1e8a5d6b1207986715bae5a246c..24d39c8c449e0ea6175989295d24eee902baec17 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
-@@ -4161,6 +4161,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -4209,6 +4209,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@Nullable
public DragonBattle getEnderDragonBattle();
diff --git a/patches/api/0039-Debug-Marker-API.patch b/patches/api/0039-Debug-Marker-API.patch
index d5cc7a2a9..0725aa5cd 100644
--- a/patches/api/0039-Debug-Marker-API.patch
+++ b/patches/api/0039-Debug-Marker-API.patch
@@ -179,10 +179,10 @@ index 5c0dbd534aaab560a4f327f48e1359de0bf7d3c9..eb29794f6ca2efc9cde4dd1685822f9a
// Purpur end
}
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index c9edc1d91046c80feb39a2f9cb7f3b69a99fe0b5..efe32ca9cbe0cd43e308ab0528f345345584c254 100644
+index 24d39c8c449e0ea6175989295d24eee902baec17..36cf567973900d1e472616748926aecb9afcb42f 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
-@@ -4169,6 +4169,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -4217,6 +4217,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
* @return The local difficulty
*/
public float getLocalDifficultyAt(@NotNull Location location);
diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch
index f7fd8f209..131c60cb9 100644
--- a/patches/server/0001-Pufferfish-Server-Changes.patch
+++ b/patches/server/0001-Pufferfish-Server-Changes.patch
@@ -1425,7 +1425,7 @@ index befeaac4786760f6847a5945da2296a3e68dbb17..6c28390e33c07d4c65493019375b669c
final io.papermc.paper.configuration.type.number.IntOr.Disabled pageMax = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax;
if (!this.cserver.isPrimaryThread() && pageMax.enabled()) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd546fd4bbc8 100644
+index 4b54d0ea31062972e68ee8fafe3cfaf68f65a5cd..8492421ed2186c0eab517a67f3140b9988f65250 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -429,6 +429,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1451,7 +1451,7 @@ index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd54
this.baseTick();
}
-@@ -4450,16 +4459,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4452,16 +4461,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) {
@@ -1477,7 +1477,7 @@ index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd54
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
-@@ -4467,14 +4478,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4469,14 +4480,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -1545,7 +1545,7 @@ index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd54
if (d2 >= axisalignedbb.minY) {
flag1 = true;
-@@ -4496,9 +4554,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4498,9 +4556,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end
}
}
@@ -1572,7 +1572,7 @@ index cb61462d4691a055a4b25f7b953609d8a154fdfe..f9440014ab2fe753c16b9383f5fffbb8
private String descriptionId;
@Nullable
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 30f4f1254fc295442d72d50479e8af635f2fe983..731f5111127f048f8afed8ed970cd6cfc492fb89 100644
+index 2aa6374cd4a96efd85899be8cd3172a8257bfe6b..5132e108df37ca97ba94b8b72c0ef292cbb2ec94 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch
index 8ecfda434..a10ef828d 100644
--- a/patches/server/0004-Purpur-config-files.patch
+++ b/patches/server/0004-Purpur-config-files.patch
@@ -92,7 +92,7 @@ index 18bf9c42e76c8c35f57d74ea4adfa5b3bb53762f..ca9afa93a9c43208ef64f86d534e5540
gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish
gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index d3cc65612c44f42ecae2e09b942438a03bc244bd..116cfd126df3ed5c6643e70912c0d6a63f4a6eb2 100644
+index 2479b47186202de40cdb4ae773c696a4adee9bad..97f83c9737726be0c3b6dc847b56970e81cc6b6f 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -173,6 +173,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@@ -179,7 +179,7 @@ index c1e88c31910e96ef07cece05046c0b55e708b52d..22bdc8fe2796940eb971437e1c97d638
.withRequiredArg()
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
new file mode 100644
-index 0000000000000000000000000000000000000000..f06fed3ae5631d46a953617cfdd766a02e628515
+index 0000000000000000000000000000000000000000..7a571d04eb7622004720dd7c7ec946d88e01ddc7
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -0,0 +1,177 @@
@@ -262,8 +262,8 @@ index 0000000000000000000000000000000000000000..f06fed3ae5631d46a953617cfdd766a0
+ commands = new HashMap<>();
+ commands.put("purpur", new PurpurCommand("purpur"));
+
-+ version = getInt("config-version", 35);
-+ set("config-version", 35);
++ version = getInt("config-version", 36);
++ set("config-version", 36);
+
+ readConfig(PurpurConfig.class, null);
+
diff --git a/patches/server/0008-Component-related-conveniences.patch b/patches/server/0008-Component-related-conveniences.patch
index 6ec6e2378..6b9587f4c 100644
--- a/patches/server/0008-Component-related-conveniences.patch
+++ b/patches/server/0008-Component-related-conveniences.patch
@@ -36,7 +36,7 @@ index 2e45bc48c8a86d9522e4574bf3037611cfda63a3..98fd4d8aab273ab86bcb9b95a331cd8b
public void displayClientMessage(Component message, boolean overlay) {
this.sendSystemMessage(message, overlay);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index c13922d2fb1c15f895b14d4cb6d5379b59ea1ef8..fbfcd1bd4f6bbaef2d5eb4b5f4c286b343ffb294 100644
+index 5e2c4969e77c669acbb4a13c07033cb267c3d586..0a7f30f86adfbcbfc4d65f6194d26c51dba8bff1 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1026,6 +1026,20 @@ public abstract class PlayerList {
@@ -81,10 +81,10 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308
return this.type().msgId();
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 7abe795de5c9965e4f9481aacc7189f759b0f86b..899a89d64ae9c7320c4ff86281670e432b4a88e4 100644
+index b0db87fc0e1a05a6268b3f93403ec4209f10f685..bc484b2ad1fbbece041adb3282d80fac2dc826bd 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4187,6 +4187,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4189,6 +4189,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return SlotAccess.NULL;
}
diff --git a/patches/server/0009-Ridables.patch b/patches/server/0009-Ridables.patch
index ec674c5bd..99e4bffef 100644
--- a/patches/server/0009-Ridables.patch
+++ b/patches/server/0009-Ridables.patch
@@ -79,7 +79,7 @@ index 6c28390e33c07d4c65493019375b669ccfa5ae2d..d5267431f0ac8fdf2d474951dde50f29
if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa212efd414 100644
+index bc484b2ad1fbbece041adb3282d80fac2dc826bd..ed2452720f098e12cfce7475e7bfeeadcd3ec611 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -91,7 +91,7 @@ index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa2
private float eyeHeight;
public boolean isInPowderSnow;
public boolean wasInPowderSnow;
-@@ -3133,6 +3133,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3135,6 +3135,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.passengers = ImmutableList.copyOf(list);
}
@@ -105,7 +105,7 @@ index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa2
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
}
}
-@@ -3172,6 +3179,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3174,6 +3181,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false;
}
// CraftBukkit end
@@ -120,7 +120,7 @@ index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa2
if (this.passengers.size() == 1 && this.passengers.get(0) == entity) {
this.passengers = ImmutableList.of();
} else {
-@@ -5065,4 +5080,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -5067,4 +5082,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this);
}
// Paper end - Expose entity id counter
@@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 731f5111127f048f8afed8ed970cd6cfc492fb89..ae97b6a5aa43889e48a422c9b1692308b7535b21 100644
+index 5132e108df37ca97ba94b8b72c0ef292cbb2ec94..42218910d3003310d71a8bdb491293ff98284039 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -5150,7 +5150,7 @@ index 4632eb883e9f5efde520ee543bcad25827c0da2c..df37da354b5ffffc484a8660949c8969
event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index f06fed3ae5631d46a953617cfdd766a02e628515..08f38c2a87feb138b202f0934abb3724ef79c4c1 100644
+index 7a571d04eb7622004720dd7c7ec946d88e01ddc7..30269a03ae894c4291416182eaaea413ad8507ea 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -174,4 +174,9 @@ public class PurpurConfig {
diff --git a/patches/server/0033-Add-option-to-set-armorstand-step-height.patch b/patches/server/0033-Add-option-to-set-armorstand-step-height.patch
index 7c7e806f0..a5c9453a2 100644
--- a/patches/server/0033-Add-option-to-set-armorstand-step-height.patch
+++ b/patches/server/0033-Add-option-to-set-armorstand-step-height.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 736e33331c591567d1fbb4b046ee6ea0a40bff88..32007168992c47c1029f91ee9c5319490b3f9e3a 100644
+index 624df1834b25ae8a02596fa582fb9030b99107d2..2fc9f26af5aaa41762c48010f08fc3d17d24bdfe 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -343,6 +343,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -16,7 +16,7 @@ index 736e33331c591567d1fbb4b046ee6ea0a40bff88..32007168992c47c1029f91ee9c531949
public boolean noPhysics;
public final RandomSource random;
public int tickCount;
-@@ -4888,7 +4889,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4890,7 +4891,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public float maxUpStep() {
diff --git a/patches/server/0050-Allow-leashing-villagers.patch b/patches/server/0050-Allow-leashing-villagers.patch
index 89937c6b6..97102be54 100644
--- a/patches/server/0050-Allow-leashing-villagers.patch
+++ b/patches/server/0050-Allow-leashing-villagers.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 3708fe0bb7af7b542ffd103f803223893e6dea72..79b158062b37fe19956a025ae6d74563092e3b8e 100644
+index 2fc9f26af5aaa41762c48010f08fc3d17d24bdfe..2bbb185b2f2c4ea93f49a14baedfce83db3134f3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -2931,6 +2931,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2933,6 +2933,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (this.isAlive() && this instanceof Leashable leashable) {
if (leashable.getLeashHolder() == player) {
if (!this.level().isClientSide()) {
diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch
index 5448af4c7..1c703002c 100644
--- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch
+++ b/patches/server/0054-Configurable-void-damage-height-and-damage.patch
@@ -3,49 +3,170 @@ From: William Blake Galbreath
Date: Thu, 27 Feb 2020 21:42:19 -0600
Subject: [PATCH] Configurable void damage height and damage
+temporarily migrate to paper's config
+drop patch on the next minecraft release
-diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 79b158062b37fe19956a025ae6d74563092e3b8e..4ba8de9d87fc1b94019e8529a279cbc8a91a2b7f 100644
---- a/src/main/java/net/minecraft/world/entity/Entity.java
-+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -942,7 +942,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
+index 1029b6de6f36b08bf634b4056ef5701383f6f258..ee0d1df78838e05450ad1a06ce70eab2d5e5d3b8 100644
+--- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
++++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
+@@ -260,6 +260,7 @@ public class PaperConfigurations extends Configurations this.getY() >= v)
- && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
- // Paper end - Configurable nether ceiling damage
-diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index b4c50e28cad3a063c2168cd9a813dfc6349d86e3..f721bd0286d8ea903b1d41983451fa406e870bd3 100644
---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
-+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -2657,7 +2657,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
-
- @Override
- protected void onBelowWorld() {
-- this.hurt(this.damageSources().fellOutOfWorld(), 4.0F);
-+ this.hurt(this.damageSources().fellOutOfWorld(), (float) level().purpurConfig.voidDamageDealt); // Purpur
+ final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder();
+diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4be5a7561e 100644
+--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
++++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+@@ -401,6 +401,7 @@ public class WorldConfiguration extends ConfigurationPart {
+ public boolean useVanillaWorldScoreboardNameColoring = false;
}
- protected void updateSwingTime() {
-diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8..022cebe27d305073a05475cb045e863135de5446 100644
---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -99,10 +99,14 @@ public class PurpurWorldConfig {
- public boolean disableDropsOnCrammingDeath = false;
- public boolean milkCuresBadOmen = true;
- public double tridentLoyaltyVoidReturnHeight = 0.0D;
-+ public double voidDamageHeight = -64.0D;
-+ public double voidDamageDealt = 4.0D;
- private void miscGameplayMechanicsSettings() {
- disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
- milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
- 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);
- }
++ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.ENVIRONMENT_KEY) // Purpur
+ public Environment environment;
- public double minecartMaxSpeed = 0.4D;
+ public class Environment extends ConfigurationPart {
+@@ -410,7 +411,9 @@ public class WorldConfiguration extends ConfigurationPart {
+ public boolean disableExplosionKnockback = false;
+ public boolean generateFlatBedrock = false;
+ public FrostedIce frostedIce;
++ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.VOID_DAMAGE_KEY) // Purpur
+ public DoubleOr.Disabled voidDamageAmount = new DoubleOr.Disabled(OptionalDouble.of(4));
++ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.VOID_DAMAGE_MIN_HEIGHT_OFFSET_KEY) // Purpur
+ public double voidDamageMinBuildHeightOffset = -64.0;
+
+ public class FrostedIce extends ConfigurationPart {
+diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
+index f200a105bd3f5013d0590f1a10d4edc08ad745d1..debc521eaa05c6befc6fe67f44780372b078039d 100644
+--- a/src/main/java/net/minecraft/server/MinecraftServer.java
++++ b/src/main/java/net/minecraft/server/MinecraftServer.java
+@@ -1249,7 +1249,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop phantomMaxHealthCache = new HashMap<>();
public Map phantomAttackDamageCache = new HashMap<>();
@@ -269,7 +269,7 @@ index a4eef27653adda8486130c5affea09396a8901a7..97c6c063729b8bbff87761b90d4314dd
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1175,6 +1178,9 @@ public class PurpurWorldConfig {
+@@ -1171,6 +1174,9 @@ public class PurpurWorldConfig {
phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage);
phantomMaxHealthCache.clear();
phantomAttackDamageCache.clear();
diff --git a/patches/server/0067-Add-phantom-spawning-options.patch b/patches/server/0067-Add-phantom-spawning-options.patch
index 8246695d2..404bfa3b9 100644
--- a/patches/server/0067-Add-phantom-spawning-options.patch
+++ b/patches/server/0067-Add-phantom-spawning-options.patch
@@ -40,10 +40,10 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f
for (int l = 0; l < k; ++l) {
// Paper start - PhantomPreSpawnEvent
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 97c6c063729b8bbff87761b90d4314dd0612e3a1..1369a14df3736cce6b6806fba7de7ffdefac1ab2 100644
+index 25db0b39456aed561f1fe12b08db8ff3e9244879..0117359271289b9ebe28b028ba0def78a7c024d2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1157,6 +1157,12 @@ public class PurpurWorldConfig {
+@@ -1153,6 +1153,12 @@ public class PurpurWorldConfig {
public double phantomAttackedByCrystalRadius = 0.0D;
public float phantomAttackedByCrystalDamage = 1.0F;
public double phantomOrbitCrystalRadius = 0.0D;
@@ -56,7 +56,7 @@ index 97c6c063729b8bbff87761b90d4314dd0612e3a1..1369a14df3736cce6b6806fba7de7ffd
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1181,6 +1187,12 @@ public class PurpurWorldConfig {
+@@ -1177,6 +1183,12 @@ public class PurpurWorldConfig {
phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius);
phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage);
phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius);
diff --git a/patches/server/0068-Implement-bed-explosion-options.patch b/patches/server/0068-Implement-bed-explosion-options.patch
index 1cb3a99f9..091cbdcfd 100644
--- a/patches/server/0068-Implement-bed-explosion-options.patch
+++ b/patches/server/0068-Implement-bed-explosion-options.patch
@@ -27,10 +27,10 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 1369a14df3736cce6b6806fba7de7ffdefac1ab2..799e599f79b2ed4852a4adbec47fde9c7b67e569 100644
+index 0117359271289b9ebe28b028ba0def78a7c024d2..cea3e28f38e5ab585351893f62142db6dc9f4949 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -283,6 +283,27 @@ public class PurpurWorldConfig {
+@@ -279,6 +279,27 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0069-Implement-respawn-anchor-explosion-options.patch b/patches/server/0069-Implement-respawn-anchor-explosion-options.patch
index 849039d7d..19b1f93cb 100644
--- a/patches/server/0069-Implement-respawn-anchor-explosion-options.patch
+++ b/patches/server/0069-Implement-respawn-anchor-explosion-options.patch
@@ -18,10 +18,10 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b
public static boolean canSetSpawn(Level world) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 799e599f79b2ed4852a4adbec47fde9c7b67e569..e1c2080ffd8be35c224e0e41a69b6a98c4b932dc 100644
+index cea3e28f38e5ab585351893f62142db6dc9f4949..7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -323,6 +323,27 @@ public class PurpurWorldConfig {
+@@ -319,6 +319,27 @@ public class PurpurWorldConfig {
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
}
diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch
index 03fd34554..4141c84c5 100644
--- a/patches/server/0072-Entity-lifespan.patch
+++ b/patches/server/0072-Entity-lifespan.patch
@@ -94,10 +94,10 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e1c2080ffd8be35c224e0e41a69b6a98c4b932dc..65b5ddde3496d1b04bedd410675a548f662aa073 100644
+index 7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc..063b8ba15e6ed01a5d77572df363b5fc89edfea6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -124,6 +124,11 @@ public class PurpurWorldConfig {
+@@ -120,6 +120,11 @@ public class PurpurWorldConfig {
elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
}
diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
index 9c45085d3..f29cbd7ef 100644
--- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
+++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
@@ -36,7 +36,7 @@ index 14df0de1e1abe154991c77319a73dbb3a709af80..aca60e21e7a191212d07a03a105fc4fb
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 9ee0ff0a32634cda0fff6bc16df32e47f0edec1c..7dd20ec15b038df76d3f9e34e0f2c90c4659c9e8 100644
+index d8db30c9051aebf2cb6567a273bcfdfbe06d4936..cacda8947f0d88f6022e2c468e94da25ac0a1d7e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -461,6 +461,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -48,10 +48,10 @@ index 9ee0ff0a32634cda0fff6bc16df32e47f0edec1c..7dd20ec15b038df76d3f9e34e0f2c90c
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 65b5ddde3496d1b04bedd410675a548f662aa073..7e416c24a336b53a71b53c020171a32adca6c95c 100644
+index 063b8ba15e6ed01a5d77572df363b5fc89edfea6..bb88e3e6b467f9c66df48389f0f99218972b5856 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -241,6 +241,7 @@ public class PurpurWorldConfig {
+@@ -237,6 +237,7 @@ public class PurpurWorldConfig {
public boolean idleTimeoutTargetPlayer = true;
public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100;
@@ -59,7 +59,7 @@ index 65b5ddde3496d1b04bedd410675a548f662aa073..7e416c24a336b53a71b53c020171a32a
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -254,6 +255,7 @@ public class PurpurWorldConfig {
+@@ -250,6 +251,7 @@ public class PurpurWorldConfig {
idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer);
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
diff --git a/patches/server/0074-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch
index 697697ddb..4c61612ed 100644
--- a/patches/server/0074-Squid-EAR-immunity.patch
+++ b/patches/server/0074-Squid-EAR-immunity.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7e416c24a336b53a71b53c020171a32adca6c95c..4ed5b8babbbace9b26659b54c7de395aaa9ab8ac 100644
+index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552fae53e3a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1577,6 +1577,7 @@ public class PurpurWorldConfig {
+@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig {
public boolean squidControllable = true;
public double squidMaxHealth = 10.0D;
public double squidScale = 1.0D;
@@ -16,7 +16,7 @@ index 7e416c24a336b53a71b53c020171a32adca6c95c..4ed5b8babbbace9b26659b54c7de395a
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -1587,6 +1588,7 @@ public class PurpurWorldConfig {
+@@ -1583,6 +1584,7 @@ public class PurpurWorldConfig {
}
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
diff --git a/patches/server/0075-Phantoms-burn-in-light.patch b/patches/server/0075-Phantoms-burn-in-light.patch
index 3412cc1ea..d55662b89 100644
--- a/patches/server/0075-Phantoms-burn-in-light.patch
+++ b/patches/server/0075-Phantoms-burn-in-light.patch
@@ -51,10 +51,10 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139
list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error
Iterator iterator = list.iterator();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 4ed5b8babbbace9b26659b54c7de395aaa9ab8ac..bc04f87a0603b3b27cd542156a0173c09e28d5ab 100644
+index 2eb90a4bc6db46de1a288c454bd5b552fae53e3a..619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1212,6 +1212,9 @@ public class PurpurWorldConfig {
+@@ -1208,6 +1208,9 @@ public class PurpurWorldConfig {
public double phantomSpawnLocalDifficultyChance = 3.0D;
public int phantomSpawnMinPerAttempt = 1;
public int phantomSpawnMaxPerAttempt = -1;
@@ -64,7 +64,7 @@ index 4ed5b8babbbace9b26659b54c7de395aaa9ab8ac..bc04f87a0603b3b27cd542156a0173c0
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1242,6 +1245,9 @@ public class PurpurWorldConfig {
+@@ -1238,6 +1241,9 @@ public class PurpurWorldConfig {
phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance);
phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt);
phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt);
diff --git a/patches/server/0076-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch
index 29d4f3d0a..bfc002ca6 100644
--- a/patches/server/0076-Configurable-villager-breeding.patch
+++ b/patches/server/0076-Configurable-villager-breeding.patch
@@ -18,10 +18,10 @@ index f083de2448e0e6dfa277c58a082b305cdc1e11e7..37aefffb16c43221e39ef0b41a16968a
private boolean hungry() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bc04f87a0603b3b27cd542156a0173c09e28d5ab..4172de8958c5216eeca7535de3be97515d32337e 100644
+index 619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da..6657fdacd399d0c097f81abe8de282f5a7c35445 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1749,6 +1749,7 @@ public class PurpurWorldConfig {
+@@ -1745,6 +1745,7 @@ public class PurpurWorldConfig {
public double villagerScale = 1.0D;
public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false;
@@ -29,7 +29,7 @@ index bc04f87a0603b3b27cd542156a0173c09e28d5ab..4172de8958c5216eeca7535de3be9751
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1762,6 +1763,7 @@ public class PurpurWorldConfig {
+@@ -1758,6 +1759,7 @@ public class PurpurWorldConfig {
villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
diff --git a/patches/server/0077-Redstone-deactivates-spawners.patch b/patches/server/0077-Redstone-deactivates-spawners.patch
index 825da468f..be7bc39a5 100644
--- a/patches/server/0077-Redstone-deactivates-spawners.patch
+++ b/patches/server/0077-Redstone-deactivates-spawners.patch
@@ -17,10 +17,10 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 4172de8958c5216eeca7535de3be97515d32337e..41e07eec0ba1cc2e31b967fdc616e59f7cd76b28 100644
+index 6657fdacd399d0c097f81abe8de282f5a7c35445..c613cc628f5f40d85000709b228c09bfa057028a 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 {
+@@ -347,6 +347,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0078-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch
index 93c98e393..3a37df8fd 100644
--- a/patches/server/0078-Totems-work-in-inventory.patch
+++ b/patches/server/0078-Totems-work-in-inventory.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 56d07a0aef9cd1732b5cf10765137730129e5c03..6c3e1ec1058854a5dd4115e26f529624f5e4eef3 100644
+index cacda8947f0d88f6022e2c468e94da25ac0a1d7e..cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1679,6 +1679,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -28,10 +28,10 @@ index 56d07a0aef9cd1732b5cf10765137730129e5c03..6c3e1ec1058854a5dd4115e26f529624
EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
event.setCancelled(itemstack == null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 41e07eec0ba1cc2e31b967fdc616e59f7cd76b28..d320a16646d0e15278c7d459f49627293b96a0f9 100644
+index c613cc628f5f40d85000709b228c09bfa057028a..a3e40d92a32e214a69b605740bcbe639211bedb6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -242,6 +242,7 @@ public class PurpurWorldConfig {
+@@ -238,6 +238,7 @@ public class PurpurWorldConfig {
public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false;
@@ -39,7 +39,7 @@ index 41e07eec0ba1cc2e31b967fdc616e59f7cd76b28..d320a16646d0e15278c7d459f4962729
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -256,6 +257,7 @@ public class PurpurWorldConfig {
+@@ -252,6 +253,7 @@ public class PurpurWorldConfig {
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
diff --git a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch
index d365960c2..8f8366485 100644
--- a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch
+++ b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch
@@ -21,10 +21,10 @@ index e5c6baf199235812f7b4fcec20145d7146737224..f8c2911496aa18e8e2b589309e9cdd78
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d320a16646d0e15278c7d459f49627293b96a0f9..cf75f01c719ad6d3bfef73314c31c51c200fc4aa 100644
+index a3e40d92a32e214a69b605740bcbe639211bedb6..cf8165b5a5a1b82c966ae891d95e0093bf76526f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1778,6 +1778,7 @@ public class PurpurWorldConfig {
+@@ -1774,6 +1774,7 @@ public class PurpurWorldConfig {
public boolean vindicatorControllable = true;
public double vindicatorMaxHealth = 24.0D;
public double vindicatorScale = 1.0D;
@@ -32,7 +32,7 @@ index d320a16646d0e15278c7d459f49627293b96a0f9..cf75f01c719ad6d3bfef73314c31c51c
private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
-@@ -1789,6 +1790,7 @@ public class PurpurWorldConfig {
+@@ -1785,6 +1786,7 @@ public class PurpurWorldConfig {
}
vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth);
vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D);
diff --git a/patches/server/0080-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch
index 997ef980a..9c180a248 100644
--- a/patches/server/0080-Dispensers-place-anvils-option.patch
+++ b/patches/server/0080-Dispensers-place-anvils-option.patch
@@ -32,10 +32,10 @@ index 60d3319016beb4f60cbc26dde165f64cf7577602..bd07743817f2510c179614a6215434e7
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index cf75f01c719ad6d3bfef73314c31c51c200fc4aa..b11f86ad33df553b598e859e110ab6d6abf1f744 100644
+index cf8165b5a5a1b82c966ae891d95e0093bf76526f..f291018ef35645d14811bbc1e47c56ac34fb73c6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -314,8 +314,10 @@ public class PurpurWorldConfig {
+@@ -310,8 +310,10 @@ public class PurpurWorldConfig {
}
public boolean dispenserApplyCursedArmor = true;
diff --git a/patches/server/0081-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch
index e5d50b4b5..4af7877f3 100644
--- a/patches/server/0081-Allow-anvil-colors.patch
+++ b/patches/server/0081-Allow-anvil-colors.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Allow anvil colors
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
-index 99bfa7cdc58c690d6f0c742dafedd40cace3223f..2d300905c05c7c23a4da30b3651b331381a1dc0d 100644
+index b1810b5dfc89dd2921607b0040afd69b05d36b9e..3cdadb7028de83d3c2a939ba883061171137a620 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -282,6 +282,54 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -64,10 +64,10 @@ index 99bfa7cdc58c690d6f0c742dafedd40cace3223f..2d300905c05c7c23a4da30b3651b3313
}
} else if (itemstack.has(DataComponents.CUSTOM_NAME)) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b11f86ad33df553b598e859e110ab6d6abf1f744..91536c5280330a9a2beccf1bee59ad071736b57e 100644
+index f291018ef35645d14811bbc1e47c56ac34fb73c6..1c1cf0e4c7fa41c2b5239ca47048670e058fd685 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -292,6 +292,13 @@ public class PurpurWorldConfig {
+@@ -288,6 +288,13 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch
index e51f6d32c..499108698 100644
--- a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch
+++ b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch
@@ -17,10 +17,10 @@ index 98885a788af662736435fa8465c9b6ffeb16811b..6278d1020aeac52622ecf98c34453044
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 91536c5280330a9a2beccf1bee59ad071736b57e..271bb47c47312c1d09d4cd4024f19935a3ec469b 100644
+index 1c1cf0e4c7fa41c2b5239ca47048670e058fd685..0411116e9b6735dcddf5f4d197f83ce61bd2aab6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -660,6 +660,7 @@ public class PurpurWorldConfig {
+@@ -656,6 +656,7 @@ public class PurpurWorldConfig {
public float dolphinSpitDamage = 2.0F;
public double dolphinMaxHealth = 10.0D;
public double dolphinScale = 1.0D;
@@ -28,7 +28,7 @@ index 91536c5280330a9a2beccf1bee59ad071736b57e..271bb47c47312c1d09d4cd4024f19935
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -673,6 +674,7 @@ public class PurpurWorldConfig {
+@@ -669,6 +670,7 @@ public class PurpurWorldConfig {
}
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D);
diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch
index ca3af363f..a16fe0c1c 100644
--- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch
+++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 6182fcddb7fdb10d03e1db4943ff80e288c25e31..9dfbe5a9139909f07f5081783ebdb22b0060801f 100644
+index e6c1ae7b70bed34fa9b1acdeaf0d969a1f5b6f08..8911eb7f6f307c7846eeb10f68e5cd231bd22e1b 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4494,6 +4494,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4496,6 +4496,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return Mth.lerp(delta, this.yRotO, this.yRot);
}
@@ -54,10 +54,10 @@ index 29123f3a2f211c08d1a9ccf62ca9bc9822f90111..db78616676ba021ee0f03cfea932f291
+ // Purpur
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 271bb47c47312c1d09d4cd4024f19935a3ec469b..b3a9e307d1bed0c53a42119fa74c3a0f1be12d36 100644
+index 0411116e9b6735dcddf5f4d197f83ce61bd2aab6..45238996bb7ee057ab981178baf56194411d5b77 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1602,6 +1602,7 @@ public class PurpurWorldConfig {
+@@ -1598,6 +1598,7 @@ public class PurpurWorldConfig {
public double squidMaxHealth = 10.0D;
public double squidScale = 1.0D;
public boolean squidImmuneToEAR = true;
@@ -65,7 +65,7 @@ index 271bb47c47312c1d09d4cd4024f19935a3ec469b..b3a9e307d1bed0c53a42119fa74c3a0f
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -1613,6 +1614,7 @@ public class PurpurWorldConfig {
+@@ -1609,6 +1610,7 @@ public class PurpurWorldConfig {
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
diff --git a/patches/server/0086-Entities-can-use-portals.patch b/patches/server/0086-Entities-can-use-portals.patch
index e1fceb5c7..277528f86 100644
--- a/patches/server/0086-Entities-can-use-portals.patch
+++ b/patches/server/0086-Entities-can-use-portals.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 9dfbe5a9139909f07f5081783ebdb22b0060801f..18fafad5458472bfcee3b819d212ae481deec293 100644
+index 8911eb7f6f307c7846eeb10f68e5cd231bd22e1b..acf10656ea445554ee537dcb2f23164ee77e4d60 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3275,7 +3275,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3277,7 +3277,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public void setAsInsidePortal(Portal portal, BlockPos pos) {
if (this.isOnPortalCooldown()) {
this.setPortalCooldown();
@@ -17,7 +17,7 @@ index 9dfbe5a9139909f07f5081783ebdb22b0060801f..18fafad5458472bfcee3b819d212ae48
if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) {
this.portalProcess.updateEntryPosition(pos.immutable());
this.portalProcess.setAsInsidePortalThisTick(true);
-@@ -3900,7 +3900,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3902,7 +3902,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end
public boolean canUsePortal(boolean allowVehicles) {
@@ -27,22 +27,21 @@ index 9dfbe5a9139909f07f5081783ebdb22b0060801f..18fafad5458472bfcee3b819d212ae48
public boolean canChangeDimensions(Level from, Level to) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b3a9e307d1bed0c53a42119fa74c3a0f1be12d36..9f00ee2e9882226973c6846211574809c18b52bc 100644
+index 45238996bb7ee057ab981178baf56194411d5b77..96dc75c3ab53dbd2df040c84ddf878881d26a051 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -99,6 +99,7 @@ public class PurpurWorldConfig {
+@@ -99,12 +99,14 @@ public class PurpurWorldConfig {
public boolean useBetterMending = false;
public boolean boatEjectPlayersOnLand = false;
public boolean disableDropsOnCrammingDeath = false;
+ public boolean entitiesCanUsePortals = true;
public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
- public double voidDamageHeight = -64.0D;
-@@ -107,6 +108,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);
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);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
- voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight);
+ }
diff --git a/patches/server/0087-Customizable-wither-health-and-healing.patch b/patches/server/0087-Customizable-wither-health-and-healing.patch
index 8bebdf5cc..c76294668 100644
--- a/patches/server/0087-Customizable-wither-health-and-healing.patch
+++ b/patches/server/0087-Customizable-wither-health-and-healing.patch
@@ -23,10 +23,10 @@ index 8a4f48956cb0804c0d717783556b97603a1e59b2..0d753a16c77251b421735f9e38202af0
this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth());
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9f00ee2e9882226973c6846211574809c18b52bc..0fbb32272453df331df54e8eda37da0b9b7af954 100644
+index 96dc75c3ab53dbd2df040c84ddf878881d26a051..07bb161fce3e66eaac6ca347a0ad508aa80ecbf4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1863,6 +1863,8 @@ public class PurpurWorldConfig {
+@@ -1859,6 +1859,8 @@ public class PurpurWorldConfig {
public double witherMaxY = 320D;
public double witherMaxHealth = 300.0D;
public double witherScale = 1.0D;
@@ -35,7 +35,7 @@ index 9f00ee2e9882226973c6846211574809c18b52bc..0fbb32272453df331df54e8eda37da0b
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -1879,6 +1881,8 @@ public class PurpurWorldConfig {
+@@ -1875,6 +1877,8 @@ public class PurpurWorldConfig {
}
witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth);
witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D);
diff --git a/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch
index 7ea339b12..7eaf976f4 100644
--- a/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch
+++ b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world
In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index ef645bf72db80a0d085c8bca29bf67cab189ffde..98e369bcd556306ec380600b4c7385e240cef06c 100644
+index 8b2ab0a91a5243357400c91c01c9f27a79825047..9eeb5a5304a25f8709288bc78ec8458b70e18649 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -520,7 +520,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573
if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) {
blockposition1 = blockposition2;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0fbb32272453df331df54e8eda37da0b9b7af954..03aa9b6bc1095475c21a93544c14e5f5bfa1e141 100644
+index 07bb161fce3e66eaac6ca347a0ad508aa80ecbf4..84713d2c265d2ce097a59f64eb693742933ad8ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -70,6 +70,12 @@ public class PurpurWorldConfig {
@@ -75,7 +75,7 @@ index 0fbb32272453df331df54e8eda37da0b9b7af954..03aa9b6bc1095475c21a93544c14e5f5
private double getDouble(String path, double def) {
PurpurConfig.config.addDefault("world-settings.default." + path, def);
return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path));
-@@ -236,6 +242,21 @@ public class PurpurWorldConfig {
+@@ -232,6 +238,21 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0089-Raid-cooldown-setting.patch b/patches/server/0089-Raid-cooldown-setting.patch
index 84f4093ae..1fd6933d5 100644
--- a/patches/server/0089-Raid-cooldown-setting.patch
+++ b/patches/server/0089-Raid-cooldown-setting.patch
@@ -49,21 +49,21 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948
if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) {
this.raidMap.put(raid.getId(), raid);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 03aa9b6bc1095475c21a93544c14e5f5bfa1e141..0549d17b69e869d9014040528e9163d56a316972 100644
+index 84713d2c265d2ce097a59f64eb693742933ad8ca..54e7250a70ef538ff25df1737a064690a204fa91 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -110,6 +110,7 @@ public class PurpurWorldConfig {
+@@ -108,6 +108,7 @@ public class PurpurWorldConfig {
+ public boolean entitiesCanUsePortals = true;
+ public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
- public double voidDamageHeight = -64.0D;
- public double voidDamageDealt = 4.0D;
+ public int raidCooldownSeconds = 0;
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
-@@ -119,6 +120,7 @@ public class PurpurWorldConfig {
+@@ -115,6 +116,7 @@ public class PurpurWorldConfig {
+ entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
+ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
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);
+ raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
}
diff --git a/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch
index a5f344de4..855b6c1ab 100644
--- a/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch
+++ b/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch
@@ -7,10 +7,10 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim
The config remains for migration purposes.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0549d17b69e869d9014040528e9163d56a316972..f10a009ad72789015861fbc35d490f6c72dd036c 100644
+index 54e7250a70ef538ff25df1737a064690a204fa91..0d2a9c030404e57a0ec5d921080304fd54838bbd 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -317,6 +317,40 @@ public class PurpurWorldConfig {
+@@ -313,6 +313,40 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch
index c2dfbac95..c9073fde4 100644
--- a/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch
+++ b/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch
@@ -45,7 +45,7 @@ index b5a46c844e0f366828f8c287a598abb9aaeacf21..4f9daaeb1bd4d115a84b0c20649e4dd4
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index ada1f9f9bf8770c48ff25d562cf84cb04be17ca2..21e0028ad33f8de0211dd733d98a00af8461684b 100644
+index bd24217d0c696a506c916e062b3cb5bc751981f8..c0adb41e2772ac1204bbdf8e6eee27fbfc82ef12 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -159,7 +159,19 @@ public class Zombie extends Monster {
@@ -70,10 +70,10 @@ index ada1f9f9bf8770c48ff25d562cf84cb04be17ca2..21e0028ad33f8de0211dd733d98a00af
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f10a009ad72789015861fbc35d490f6c72dd036c..b7af904f30fdbb9a3f680d1d8244edf1e0061e25 100644
+index 0d2a9c030404e57a0ec5d921080304fd54838bbd..51485b123545d11f7327aea9b6d76cb1fe1f3b97 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2005,6 +2005,7 @@ public class PurpurWorldConfig {
+@@ -2001,6 +2001,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyOnlyBaby = true;
public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true;
@@ -81,7 +81,7 @@ index f10a009ad72789015861fbc35d490f6c72dd036c..b7af904f30fdbb9a3f680d1d8244edf1
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2020,6 +2021,7 @@ public class PurpurWorldConfig {
+@@ -2016,6 +2017,7 @@ public class PurpurWorldConfig {
zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby);
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
diff --git a/patches/server/0093-Flying-squids-Oh-my.patch b/patches/server/0093-Flying-squids-Oh-my.patch
index a3a45c8bc..984b90c6b 100644
--- a/patches/server/0093-Flying-squids-Oh-my.patch
+++ b/patches/server/0093-Flying-squids-Oh-my.patch
@@ -58,10 +58,10 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2
float g = Mth.cos(f) * 0.2F;
float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0a679aa93 100644
+index 51485b123545d11f7327aea9b6d76cb1fe1f3b97..0c852bdc84dbb3fc9855dc69269daac2e2dfe305 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -971,11 +971,13 @@ public class PurpurWorldConfig {
+@@ -967,11 +967,13 @@ public class PurpurWorldConfig {
public boolean glowSquidControllable = true;
public double glowSquidMaxHealth = 10.0D;
public double glowSquidScale = 1.0D;
@@ -75,7 +75,7 @@ index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0
}
public boolean goatRidable = false;
-@@ -1662,6 +1664,7 @@ public class PurpurWorldConfig {
+@@ -1658,6 +1660,7 @@ public class PurpurWorldConfig {
public double squidScale = 1.0D;
public boolean squidImmuneToEAR = true;
public double squidOffsetWaterCheck = 0.0D;
@@ -83,7 +83,7 @@ index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -1674,6 +1677,7 @@ public class PurpurWorldConfig {
+@@ -1670,6 +1673,7 @@ public class PurpurWorldConfig {
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
diff --git a/patches/server/0094-Infinity-bow-settings.patch b/patches/server/0094-Infinity-bow-settings.patch
index 766e11325..a23d81e10 100644
--- a/patches/server/0094-Infinity-bow-settings.patch
+++ b/patches/server/0094-Infinity-bow-settings.patch
@@ -30,10 +30,10 @@ index 6eb5c0f23d9dc61e69ad5ad493c89602a9dcd4b5..4db2032178471860baddc6b669c9a4f8
} else {
user.startUsingItem(hand);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8ee07ea25cbc5d59b972116c09ec57f0a679aa93..22522af6a0b0894c798399456303d951ca884fe6 100644
+index 0c852bdc84dbb3fc9855dc69269daac2e2dfe305..c28c1a42600345468edd87ff2bf6223d8b0398bf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -139,6 +139,11 @@ public class PurpurWorldConfig {
+@@ -135,6 +135,11 @@ public class PurpurWorldConfig {
entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan);
}
diff --git a/patches/server/0095-Configurable-daylight-cycle.patch b/patches/server/0095-Configurable-daylight-cycle.patch
index 669937c82..9b7085f65 100644
--- a/patches/server/0095-Configurable-daylight-cycle.patch
+++ b/patches/server/0095-Configurable-daylight-cycle.patch
@@ -18,10 +18,10 @@ index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd88
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
this.gameTime = time;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index b783a77032b108aa7cb50b0ce15abee4f3d06740..dd02ae5af707c8335a296e66b0f55e960c8e86bc 100644
+index b2ce50799ff158ff2160b0d75404e52e34d54805..f514c421b5ff7e46b2d211f895dcb0d7a375704f 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1776,7 +1776,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop recipe, NonNullList slots, int count) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 34aafc5bac4e7876fdf50289748df5070126139e..b398af642abe85747cc416f49cc229c1f491c1a3 100644
+index 939da41bf38a912c1f25f56096d8c10d1b9bfb08..5cf762eeb981c4b2832bacefd79027148693e58f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -403,6 +403,17 @@ public class PurpurWorldConfig {
+@@ -399,6 +399,17 @@ public class PurpurWorldConfig {
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
}
diff --git a/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch
index a096f45e4..de06a18b3 100644
--- a/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch
+++ b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch
@@ -24,10 +24,10 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88
return;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 61585b3e964f5f80d6c3dba8ee5dfae7e59e53f3..af9c365025df231f53ffe1c28013c4b36c325ea2 100644
+index 4f105633f458cab3ed2877594a5b56f888f546ae..9289c97d303588c55db43b0e239904ffa91131fb 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 {
+@@ -400,8 +400,10 @@ public class PurpurWorldConfig {
}
public boolean farmlandGetsMoistFromBelow = false;
diff --git a/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch
index a5a1801b8..0f05eed08 100644
--- a/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch
+++ b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch
@@ -42,7 +42,7 @@ index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2e
EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience);
if (entityBreedEvent.isCancelled()) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 99c58ab01b0a61def3c9b9e39e0fbcf90e600a6c..442c77fb3ac421ae6a90b5b96e1d00d4d65eeade 100644
+index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -182,6 +182,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@@ -104,20 +104,20 @@ index 99c58ab01b0a61def3c9b9e39e0fbcf90e600a6c..442c77fb3ac421ae6a90b5b96e1d00d4
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 af9c365025df231f53ffe1c28013c4b36c325ea2..d2ecc35e4c20549c71b32ae444b3c4e98ed3561a 100644
+index 9289c97d303588c55db43b0e239904ffa91131fb..560342aff844201ee678eae45e77079fc1fd2a23 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -116,6 +116,7 @@ public class PurpurWorldConfig {
- public double voidDamageHeight = -64.0D;
- public double voidDamageDealt = 4.0D;
+@@ -114,6 +114,7 @@ public class PurpurWorldConfig {
+ public boolean milkCuresBadOmen = true;
+ public double tridentLoyaltyVoidReturnHeight = 0.0D;
public int raidCooldownSeconds = 0;
+ public int animalBreedingCooldownSeconds = 0;
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
-@@ -126,6 +127,7 @@ public class PurpurWorldConfig {
- voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight);
- voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt);
+@@ -122,6 +123,7 @@ public class PurpurWorldConfig {
+ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
+ tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
+ animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
}
diff --git a/patches/server/0100-Make-entity-breeding-times-configurable.patch b/patches/server/0100-Make-entity-breeding-times-configurable.patch
index 358bd9993..a3aef6c47 100644
--- a/patches/server/0100-Make-entity-breeding-times-configurable.patch
+++ b/patches/server/0100-Make-entity-breeding-times-configurable.patch
@@ -538,10 +538,10 @@ index cd6428d0d61f68eafa8829fc21084586447cd61e..eb4a2e57ee9bddacef184e81167f8ee3
public boolean canBeLeashed() {
return true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339b457ffdc 100644
+index 560342aff844201ee678eae45e77079fc1fd2a23..b0397d5586f4356e9b8bd11973a5c6839734098a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -501,23 +501,27 @@ public class PurpurWorldConfig {
+@@ -497,23 +497,27 @@ public class PurpurWorldConfig {
public boolean armadilloControllable = true;
public double armadilloMaxHealth = 12.0D;
public double armadilloScale = 1.0D;
@@ -569,7 +569,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean batRidable = false;
-@@ -560,6 +564,7 @@ public class PurpurWorldConfig {
+@@ -556,6 +560,7 @@ public class PurpurWorldConfig {
public double beeMaxY = 320D;
public double beeMaxHealth = 10.0D;
public double beeScale = 1.0D;
@@ -577,7 +577,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -572,6 +577,7 @@ public class PurpurWorldConfig {
+@@ -568,6 +573,7 @@ public class PurpurWorldConfig {
}
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D);
@@ -585,7 +585,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean blazeRidable = false;
-@@ -614,6 +620,7 @@ public class PurpurWorldConfig {
+@@ -610,6 +616,7 @@ public class PurpurWorldConfig {
public double camelJumpStrengthMax = 0.42D;
public double camelMovementSpeedMin = 0.09D;
public double camelMovementSpeedMax = 0.09D;
@@ -593,7 +593,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void camelSettings() {
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
-@@ -622,6 +629,7 @@ public class PurpurWorldConfig {
+@@ -618,6 +625,7 @@ public class PurpurWorldConfig {
camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax);
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
@@ -601,7 +601,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean catRidable = false;
-@@ -632,6 +640,7 @@ public class PurpurWorldConfig {
+@@ -628,6 +636,7 @@ public class PurpurWorldConfig {
public int catSpawnDelay = 1200;
public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48;
@@ -609,7 +609,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -646,6 +655,7 @@ public class PurpurWorldConfig {
+@@ -642,6 +651,7 @@ public class PurpurWorldConfig {
catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay);
catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange);
catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
@@ -617,7 +617,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean caveSpiderRidable = false;
-@@ -672,6 +682,7 @@ public class PurpurWorldConfig {
+@@ -668,6 +678,7 @@ public class PurpurWorldConfig {
public double chickenMaxHealth = 4.0D;
public double chickenScale = 1.0D;
public boolean chickenRetaliate = false;
@@ -625,7 +625,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
-@@ -684,6 +695,7 @@ public class PurpurWorldConfig {
+@@ -680,6 +691,7 @@ public class PurpurWorldConfig {
chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth);
chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D);
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
@@ -633,7 +633,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean codRidable = false;
-@@ -708,6 +720,7 @@ public class PurpurWorldConfig {
+@@ -704,6 +716,7 @@ public class PurpurWorldConfig {
public double cowMaxHealth = 10.0D;
public double cowScale = 1.0D;
public int cowFeedMushrooms = 0;
@@ -641,7 +641,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void cowSettings() {
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
-@@ -720,6 +733,7 @@ public class PurpurWorldConfig {
+@@ -716,6 +729,7 @@ public class PurpurWorldConfig {
cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth);
cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
@@ -649,7 +649,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean creeperRidable = false;
-@@ -775,6 +789,7 @@ public class PurpurWorldConfig {
+@@ -771,6 +785,7 @@ public class PurpurWorldConfig {
public double donkeyJumpStrengthMax = 0.5D;
public double donkeyMovementSpeedMin = 0.175D;
public double donkeyMovementSpeedMax = 0.175D;
@@ -657,7 +657,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -790,6 +805,7 @@ public class PurpurWorldConfig {
+@@ -786,6 +801,7 @@ public class PurpurWorldConfig {
donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax);
donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin);
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
@@ -665,7 +665,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean drownedRidable = false;
-@@ -920,6 +936,7 @@ public class PurpurWorldConfig {
+@@ -916,6 +932,7 @@ public class PurpurWorldConfig {
public double foxMaxHealth = 10.0D;
public double foxScale = 1.0D;
public boolean foxTypeChangesWithTulips = false;
@@ -673,7 +673,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -932,17 +949,20 @@ public class PurpurWorldConfig {
+@@ -928,17 +945,20 @@ public class PurpurWorldConfig {
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
@@ -694,7 +694,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean ghastRidable = false;
-@@ -1017,12 +1037,14 @@ public class PurpurWorldConfig {
+@@ -1013,12 +1033,14 @@ public class PurpurWorldConfig {
public boolean goatControllable = true;
public double goatMaxHealth = 10.0D;
public double goatScale = 1.0D;
@@ -709,7 +709,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean guardianRidable = false;
-@@ -1046,6 +1068,7 @@ public class PurpurWorldConfig {
+@@ -1042,6 +1064,7 @@ public class PurpurWorldConfig {
public boolean hoglinControllable = true;
public double hoglinMaxHealth = 40.0D;
public double hoglinScale = 1.0D;
@@ -717,7 +717,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
-@@ -1057,6 +1080,7 @@ public class PurpurWorldConfig {
+@@ -1053,6 +1076,7 @@ public class PurpurWorldConfig {
}
hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth);
hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D);
@@ -725,7 +725,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean horseRidableInWater = false;
-@@ -1066,6 +1090,7 @@ public class PurpurWorldConfig {
+@@ -1062,6 +1086,7 @@ public class PurpurWorldConfig {
public double horseJumpStrengthMax = 1.0D;
public double horseMovementSpeedMin = 0.1125D;
public double horseMovementSpeedMax = 0.3375D;
@@ -733,7 +733,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1081,6 +1106,7 @@ public class PurpurWorldConfig {
+@@ -1077,6 +1102,7 @@ public class PurpurWorldConfig {
horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax);
horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin);
horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax);
@@ -741,7 +741,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean huskRidable = false;
-@@ -1164,6 +1190,7 @@ public class PurpurWorldConfig {
+@@ -1160,6 +1186,7 @@ public class PurpurWorldConfig {
public double llamaJumpStrengthMax = 0.5D;
public double llamaMovementSpeedMin = 0.175D;
public double llamaMovementSpeedMax = 0.175D;
@@ -749,7 +749,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1181,6 +1208,7 @@ public class PurpurWorldConfig {
+@@ -1177,6 +1204,7 @@ public class PurpurWorldConfig {
llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax);
llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin);
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
@@ -757,7 +757,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean magmaCubeRidable = false;
-@@ -1210,6 +1238,7 @@ public class PurpurWorldConfig {
+@@ -1206,6 +1234,7 @@ public class PurpurWorldConfig {
public boolean mooshroomControllable = true;
public double mooshroomMaxHealth = 10.0D;
public double mooshroomScale = 1.0D;
@@ -765,7 +765,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
-@@ -1221,6 +1250,7 @@ public class PurpurWorldConfig {
+@@ -1217,6 +1246,7 @@ public class PurpurWorldConfig {
}
mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth);
mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D);
@@ -773,7 +773,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean muleRidableInWater = false;
-@@ -1230,6 +1260,7 @@ public class PurpurWorldConfig {
+@@ -1226,6 +1256,7 @@ public class PurpurWorldConfig {
public double muleJumpStrengthMax = 0.5D;
public double muleMovementSpeedMin = 0.175D;
public double muleMovementSpeedMax = 0.175D;
@@ -781,7 +781,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1245,6 +1276,7 @@ public class PurpurWorldConfig {
+@@ -1241,6 +1272,7 @@ public class PurpurWorldConfig {
muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax);
muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin);
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
@@ -789,7 +789,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean ocelotRidable = false;
-@@ -1252,6 +1284,7 @@ public class PurpurWorldConfig {
+@@ -1248,6 +1280,7 @@ public class PurpurWorldConfig {
public boolean ocelotControllable = true;
public double ocelotMaxHealth = 10.0D;
public double ocelotScale = 1.0D;
@@ -797,7 +797,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -1263,6 +1296,7 @@ public class PurpurWorldConfig {
+@@ -1259,6 +1292,7 @@ public class PurpurWorldConfig {
}
ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth);
ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D);
@@ -805,7 +805,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean pandaRidable = false;
-@@ -1270,6 +1304,7 @@ public class PurpurWorldConfig {
+@@ -1266,6 +1300,7 @@ public class PurpurWorldConfig {
public boolean pandaControllable = true;
public double pandaMaxHealth = 20.0D;
public double pandaScale = 1.0D;
@@ -813,7 +813,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
-@@ -1281,6 +1316,7 @@ public class PurpurWorldConfig {
+@@ -1277,6 +1312,7 @@ public class PurpurWorldConfig {
}
pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth);
pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D);
@@ -821,7 +821,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean parrotRidable = false;
-@@ -1367,6 +1403,7 @@ public class PurpurWorldConfig {
+@@ -1363,6 +1399,7 @@ public class PurpurWorldConfig {
public double pigMaxHealth = 10.0D;
public double pigScale = 1.0D;
public boolean pigGiveSaddleBack = false;
@@ -829,7 +829,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
-@@ -1379,6 +1416,7 @@ public class PurpurWorldConfig {
+@@ -1375,6 +1412,7 @@ public class PurpurWorldConfig {
pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth);
pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D);
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
@@ -837,7 +837,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean piglinRidable = false;
-@@ -1442,6 +1480,7 @@ public class PurpurWorldConfig {
+@@ -1438,6 +1476,7 @@ public class PurpurWorldConfig {
public double polarBearScale = 1.0D;
public String polarBearBreedableItemString = "";
public Item polarBearBreedableItem = null;
@@ -845,7 +845,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
-@@ -1456,6 +1495,7 @@ public class PurpurWorldConfig {
+@@ -1452,6 +1491,7 @@ public class PurpurWorldConfig {
polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString);
Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString));
if (item != Items.AIR) polarBearBreedableItem = item;
@@ -853,7 +853,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean pufferfishRidable = false;
-@@ -1481,6 +1521,7 @@ public class PurpurWorldConfig {
+@@ -1477,6 +1517,7 @@ public class PurpurWorldConfig {
public double rabbitScale = 1.0D;
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
@@ -861,7 +861,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -1494,6 +1535,7 @@ public class PurpurWorldConfig {
+@@ -1490,6 +1531,7 @@ public class PurpurWorldConfig {
rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D);
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
@@ -869,7 +869,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean ravagerRidable = false;
-@@ -1535,6 +1577,7 @@ public class PurpurWorldConfig {
+@@ -1531,6 +1573,7 @@ public class PurpurWorldConfig {
public boolean sheepControllable = true;
public double sheepMaxHealth = 8.0D;
public double sheepScale = 1.0D;
@@ -877,7 +877,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -1546,6 +1589,7 @@ public class PurpurWorldConfig {
+@@ -1542,6 +1585,7 @@ public class PurpurWorldConfig {
}
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D);
@@ -885,7 +885,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean shulkerRidable = false;
-@@ -1682,12 +1726,14 @@ public class PurpurWorldConfig {
+@@ -1678,12 +1722,14 @@ public class PurpurWorldConfig {
public boolean snifferControllable = true;
public double snifferMaxHealth = 14.0D;
public double snifferScale = 1.0D;
@@ -900,7 +900,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean squidRidable = false;
-@@ -1753,6 +1799,7 @@ public class PurpurWorldConfig {
+@@ -1749,6 +1795,7 @@ public class PurpurWorldConfig {
public boolean striderControllable = true;
public double striderMaxHealth = 20.0D;
public double striderScale = 1.0D;
@@ -908,7 +908,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -1764,6 +1811,7 @@ public class PurpurWorldConfig {
+@@ -1760,6 +1807,7 @@ public class PurpurWorldConfig {
}
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D);
@@ -916,7 +916,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean tadpoleRidable = false;
-@@ -1784,6 +1832,7 @@ public class PurpurWorldConfig {
+@@ -1780,6 +1828,7 @@ public class PurpurWorldConfig {
public double traderLlamaJumpStrengthMax = 0.5D;
public double traderLlamaMovementSpeedMin = 0.175D;
public double traderLlamaMovementSpeedMax = 0.175D;
@@ -924,7 +924,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
-@@ -1801,6 +1850,7 @@ public class PurpurWorldConfig {
+@@ -1797,6 +1846,7 @@ public class PurpurWorldConfig {
traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax);
traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin);
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
@@ -932,7 +932,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean tropicalFishRidable = false;
-@@ -1824,6 +1874,7 @@ public class PurpurWorldConfig {
+@@ -1820,6 +1870,7 @@ public class PurpurWorldConfig {
public boolean turtleControllable = true;
public double turtleMaxHealth = 30.0D;
public double turtleScale = 1.0D;
@@ -940,7 +940,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
-@@ -1835,6 +1886,7 @@ public class PurpurWorldConfig {
+@@ -1831,6 +1882,7 @@ public class PurpurWorldConfig {
}
turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth);
turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D);
@@ -948,7 +948,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean vexRidable = false;
-@@ -1865,6 +1917,7 @@ public class PurpurWorldConfig {
+@@ -1861,6 +1913,7 @@ public class PurpurWorldConfig {
public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false;
public boolean villagerCanBreed = true;
@@ -956,7 +956,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1879,6 +1932,7 @@ public class PurpurWorldConfig {
+@@ -1875,6 +1928,7 @@ public class PurpurWorldConfig {
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed);
@@ -964,7 +964,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
}
public boolean vindicatorRidable = false;
-@@ -2001,6 +2055,7 @@ public class PurpurWorldConfig {
+@@ -1997,6 +2051,7 @@ public class PurpurWorldConfig {
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D;
public double wolfScale = 1.0D;
@@ -972,7 +972,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
-@@ -2012,6 +2067,7 @@ public class PurpurWorldConfig {
+@@ -2008,6 +2063,7 @@ public class PurpurWorldConfig {
}
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);
diff --git a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch
index fc3c92ca5..69cea675c 100644
--- a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch
+++ b/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch
@@ -126,7 +126,7 @@ index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414
if (((HangingEntity) object).survives()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 3cb0f571577a1377f339362434a6d339b457ffdc..79eb0e3553a3f9b2fb8059e882fed0427be67043 100644
+index b0397d5586f4356e9b8bd11973a5c6839734098a..53d0d688a0a4195bc1fe57a47e523bd4edf9a58f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -98,8 +98,10 @@ public class PurpurWorldConfig {
@@ -146,13 +146,13 @@ index 3cb0f571577a1377f339362434a6d339b457ffdc..79eb0e3553a3f9b2fb8059e882fed042
public boolean milkCuresBadOmen = true;
+ public boolean persistentDroppableEntityDisplayNames = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
- public double voidDamageHeight = -64.0D;
- public double voidDamageDealt = 4.0D;
-@@ -123,6 +126,7 @@ public class PurpurWorldConfig {
+ public int raidCooldownSeconds = 0;
+ public int animalBreedingCooldownSeconds = 0;
+@@ -121,6 +124,7 @@ public class PurpurWorldConfig {
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
+ persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
- voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight);
- 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/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
index b35ca6933..08c1333b6 100644
--- a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
+++ b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
@@ -21,10 +21,10 @@ index b081ea3f272ec2dba426bf0ebdfbbba1cec718ee..3348b5a9e4e00ef7f4dabe10d0fe0a9c
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 39aa800ecca20af51d7d07288c8db2f16969fc20..82cd55f78f957875514213c21c36586fc1f27c10 100644
+index de933c8cc5eafc99a77cd1271238ab9717f81d25..5089e9c899fef29a0078d5fce8af93538046b3b8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -886,6 +886,7 @@ public class PurpurWorldConfig {
+@@ -882,6 +882,7 @@ public class PurpurWorldConfig {
public double endermanMaxHealth = 40.0D;
public double endermanScale = 1.0D;
public boolean endermanAllowGriefing = true;
@@ -32,7 +32,7 @@ index 39aa800ecca20af51d7d07288c8db2f16969fc20..82cd55f78f957875514213c21c36586f
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -898,6 +899,7 @@ public class PurpurWorldConfig {
+@@ -894,6 +895,7 @@ public class PurpurWorldConfig {
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
diff --git a/patches/server/0104-Add-configurable-snowball-damage.patch b/patches/server/0104-Add-configurable-snowball-damage.patch
index 9df460563..0f2f1e4a6 100644
--- a/patches/server/0104-Add-configurable-snowball-damage.patch
+++ b/patches/server/0104-Add-configurable-snowball-damage.patch
@@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa
entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 82cd55f78f957875514213c21c36586fc1f27c10..cf3d1d188cb3a83cf81bf6a5af2640db4c0a2785 100644
+index 5089e9c899fef29a0078d5fce8af93538046b3b8..5540dca552e6a6aa4b3ee2042cc7898adb25eae9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -376,6 +376,11 @@ public class PurpurWorldConfig {
+@@ -372,6 +372,11 @@ public class PurpurWorldConfig {
//}
}
diff --git a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch
index 1e88b4720..c9c819d08 100644
--- a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch
+++ b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch
@@ -18,10 +18,10 @@ index 0d93a8cbf15fa84f422d61adddb420ba5dcb226a..d9743c9e0026d1f858aacc6a78dc39f1
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index cf3d1d188cb3a83cf81bf6a5af2640db4c0a2785..56c7b913fb598d40eae8d966acbac66e8bed827d 100644
+index 5540dca552e6a6aa4b3ee2042cc7898adb25eae9..9e909a0a151997c8fd2922f40a858c673bd723b8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -155,8 +155,10 @@ public class PurpurWorldConfig {
+@@ -151,8 +151,10 @@ public class PurpurWorldConfig {
}
public int entityLifeSpan = 0;
diff --git a/patches/server/0106-Add-boat-fall-damage-config.patch b/patches/server/0106-Add-boat-fall-damage-config.patch
index 4dad76a17..665fdec61 100644
--- a/patches/server/0106-Add-boat-fall-damage-config.patch
+++ b/patches/server/0106-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 855b8920eb5119ea6bf4726a9b77e3149779d0b3..d38a94ad94e09e71200d59e4d6a1d751da020020 100644
+index aca60e21e7a191212d07a03a105fc4fb636359b2..0b57d9a2e2573bdb41c9e163d953130c3a4a1747 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1182,7 +1182,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -27,7 +27,7 @@ index 855b8920eb5119ea6bf4726a9b77e3149779d0b3..d38a94ad94e09e71200d59e4d6a1d751
if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 56c7b913fb598d40eae8d966acbac66e8bed827d..2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a 100644
+index 9e909a0a151997c8fd2922f40a858c673bd723b8..3ffa21c107a2b815f729d28294c530f64dc75287 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -113,6 +113,7 @@ public class PurpurWorldConfig {
@@ -38,7 +38,7 @@ index 56c7b913fb598d40eae8d966acbac66e8bed827d..2fe0f5856e6d07a671ae9c59bb3e4e27
public boolean disableDropsOnCrammingDeath = false;
public boolean entitiesCanUsePortals = true;
public boolean milkCuresBadOmen = true;
-@@ -125,6 +126,7 @@ public class PurpurWorldConfig {
+@@ -123,6 +124,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/0107-Snow-Golem-rate-of-fire-config.patch b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch
index 011255274..9497a0ab9 100644
--- a/patches/server/0107-Snow-Golem-rate-of-fire-config.patch
+++ b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch
@@ -23,10 +23,10 @@ index dc5af0b71ec82a8f22e64b03950e35845110a331..5b910b4168b7f7825916c14e402f7f00
this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a..d3f7829ba6059a89cdcd51e1efc99c644a89e87d 100644
+index 3ffa21c107a2b815f729d28294c530f64dc75287..05f206afe40b6924a0354f2b9ffb9b8390e24539 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1723,6 +1723,10 @@ public class PurpurWorldConfig {
+@@ -1719,6 +1719,10 @@ public class PurpurWorldConfig {
public double snowGolemMaxHealth = 4.0D;
public double snowGolemScale = 1.0D;
public boolean snowGolemPutPumpkinBack = false;
@@ -37,7 +37,7 @@ index 2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a..d3f7829ba6059a89cdcd51e1efc99c64
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -1736,6 +1740,10 @@ public class PurpurWorldConfig {
+@@ -1732,6 +1736,10 @@ public class PurpurWorldConfig {
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
snowGolemScale = Mth.clamp(getDouble("mobs.snow_golem.attributes.scale", snowGolemScale), 0.0625D, 16.0D);
snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
diff --git a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
index 642c84cd6..63cf0ef08 100644
--- a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
+++ b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
@@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d
"farmer",
PoiTypes.FARMER,
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d3f7829ba6059a89cdcd51e1efc99c644a89e87d..5a650cca4475e5fd2c130b3c1c5f8370df7d53ad 100644
+index 05f206afe40b6924a0354f2b9ffb9b8390e24539..24ecf0e61ce4957eda46c2a507543ae6c2ac51c3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1943,6 +1943,8 @@ public class PurpurWorldConfig {
+@@ -1939,6 +1939,8 @@ public class PurpurWorldConfig {
public boolean villagerCanBeLeashed = false;
public boolean villagerCanBreed = true;
public int villagerBreedingTicks = 6000;
@@ -186,7 +186,7 @@ index d3f7829ba6059a89cdcd51e1efc99c644a89e87d..5a650cca4475e5fd2c130b3c1c5f8370
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1958,6 +1960,8 @@ public class PurpurWorldConfig {
+@@ -1954,6 +1956,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/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
index d136176e9..001d0223c 100644
--- a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
+++ b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
@@ -35,10 +35,10 @@ index 53b8f46bda60289ec310cb45513a2b729fcbea76..2756319fd1e53eca6a3dfa094d7c6690
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5a650cca4475e5fd2c130b3c1c5f8370df7d53ad..76a4fb37b908a1f8523ae3fa5a56a7ef3726391f 100644
+index 24ecf0e61ce4957eda46c2a507543ae6c2ac51c3..03a74aa5e0b9d51b63722809bbee288e544c5ff5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2209,6 +2209,7 @@ public class PurpurWorldConfig {
+@@ -2205,6 +2205,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinJockeyOnlyBaby = true;
public double zombifiedPiglinJockeyChance = 0.05D;
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
@@ -46,7 +46,7 @@ index 5a650cca4475e5fd2c130b3c1c5f8370df7d53ad..76a4fb37b908a1f8523ae3fa5a56a7ef
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
-@@ -2224,5 +2225,6 @@ public class PurpurWorldConfig {
+@@ -2220,5 +2221,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/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch
index b2e780d91..ed3617a13 100644
--- a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch
+++ b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch
@@ -182,10 +182,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 76a4fb37b908a1f8523ae3fa5a56a7ef3726391f..c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90 100644
+index 03a74aa5e0b9d51b63722809bbee288e544c5ff5..da84a0bbfeeccc3a6db0f5aa8ae3cdd6c8043ea4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2084,6 +2084,8 @@ public class PurpurWorldConfig {
+@@ -2080,6 +2080,8 @@ public class PurpurWorldConfig {
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D;
public double wolfScale = 1.0D;
@@ -194,7 +194,7 @@ index 76a4fb37b908a1f8523ae3fa5a56a7ef3726391f..c5aa4e74a6a8f796ae3000c970ccc8d5
public int wolfBreedingTicks = 6000;
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
-@@ -2096,6 +2098,8 @@ public class PurpurWorldConfig {
+@@ -2092,6 +2094,8 @@ public class PurpurWorldConfig {
}
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);
diff --git a/patches/server/0112-Configurable-default-collar-color.patch b/patches/server/0112-Configurable-default-collar-color.patch
index 34f0963a0..ffe5ab5bd 100644
--- a/patches/server/0112-Configurable-default-collar-color.patch
+++ b/patches/server/0112-Configurable-default-collar-color.patch
@@ -43,10 +43,10 @@ index d159d573d5f87c31cf61baacbaae193d24ab6801..143717d64651ffd75124973ca7a15fc1
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee305471173726 100644
+index da84a0bbfeeccc3a6db0f5aa8ae3cdd6c8043ea4..84989993500837388e1c6cea74f8bce46c131627 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -656,6 +656,7 @@ public class PurpurWorldConfig {
+@@ -652,6 +652,7 @@ public class PurpurWorldConfig {
public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48;
public int catBreedingTicks = 6000;
@@ -54,7 +54,7 @@ index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee3054
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -671,6 +672,11 @@ public class PurpurWorldConfig {
+@@ -667,6 +668,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 c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee3054
}
public boolean caveSpiderRidable = false;
-@@ -2084,6 +2090,7 @@ public class PurpurWorldConfig {
+@@ -2080,6 +2086,7 @@ public class PurpurWorldConfig {
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D;
public double wolfScale = 1.0D;
@@ -74,7 +74,7 @@ index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee3054
public boolean wolfMilkCuresRabies = true;
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
-@@ -2098,6 +2105,11 @@ public class PurpurWorldConfig {
+@@ -2094,6 +2101,11 @@ public class PurpurWorldConfig {
}
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);
diff --git a/patches/server/0113-Phantom-flames-on-swoop.patch b/patches/server/0113-Phantom-flames-on-swoop.patch
index 22dc1293f..fb14a5a37 100644
--- a/patches/server/0113-Phantom-flames-on-swoop.patch
+++ b/patches/server/0113-Phantom-flames-on-swoop.patch
@@ -17,10 +17,10 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0d5ad3c193841bdb08853ceadeee305471173726..561398fe6cf4d20a8418582e6d002edfe7060125 100644
+index 84989993500837388e1c6cea74f8bce46c131627..d43f1f2fac56a7590e80639cf2baa9190e348342 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1385,6 +1385,7 @@ public class PurpurWorldConfig {
+@@ -1381,6 +1381,7 @@ public class PurpurWorldConfig {
public int phantomBurnInLight = 0;
public boolean phantomIgnorePlayersWithTorch = false;
public boolean phantomBurnInDaylight = true;
@@ -28,7 +28,7 @@ index 0d5ad3c193841bdb08853ceadeee305471173726..561398fe6cf4d20a8418582e6d002edf
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1418,6 +1419,7 @@ public class PurpurWorldConfig {
+@@ -1414,6 +1415,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/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch
index 38643354f..0d32afc81 100644
--- a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch
+++ b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch
@@ -17,10 +17,10 @@ index 0b27baf10770cb3077c4e75da55209689d614513..485ea9892f257c6843db23bca43f9fdc
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 561398fe6cf4d20a8418582e6d002edfe7060125..c2d9ec6da2d4c6523a073c8bda10ce8486953574 100644
+index d43f1f2fac56a7590e80639cf2baa9190e348342..fefe3331c6b383288b47fde58dda050f6dbbdb90 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 {
+@@ -409,6 +409,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0116-Striders-give-saddle-back.patch b/patches/server/0116-Striders-give-saddle-back.patch
index 8905acf44..4cc49e8fc 100644
--- a/patches/server/0116-Striders-give-saddle-back.patch
+++ b/patches/server/0116-Striders-give-saddle-back.patch
@@ -29,10 +29,10 @@ index 8c233a90d07db7959b778a84c4ed0589a6a10dd4..d534eaa9231602f8fa73d0230223f083
if (!this.level().isClientSide) {
player.startRiding(this);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c2d9ec6da2d4c6523a073c8bda10ce8486953574..cc5a653f534b4050e2129e3746bf06d28132a252 100644
+index fefe3331c6b383288b47fde58dda050f6dbbdb90..3f605c912f99a41babb61eeebd031ca7f94f51ee 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1838,6 +1838,7 @@ public class PurpurWorldConfig {
+@@ -1834,6 +1834,7 @@ public class PurpurWorldConfig {
public double striderMaxHealth = 20.0D;
public double striderScale = 1.0D;
public int striderBreedingTicks = 6000;
@@ -40,7 +40,7 @@ index c2d9ec6da2d4c6523a073c8bda10ce8486953574..cc5a653f534b4050e2129e3746bf06d2
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -1850,6 +1851,7 @@ public class PurpurWorldConfig {
+@@ -1846,6 +1847,7 @@ public class PurpurWorldConfig {
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D);
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
diff --git a/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch
index 54d492f2d..7302bdd4e 100644
--- a/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch
+++ b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch
@@ -26,10 +26,10 @@ index 9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45..33c1b2b387e7412a001841d1bcbb3966
protected ItemCooldowns createItemCooldowns() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index cc5a653f534b4050e2129e3746bf06d28132a252..03380ffce492af4620d613ef8af0a11c3c322cd7 100644
+index 3f605c912f99a41babb61eeebd031ca7f94f51ee..84f96d814d724902d71bd777f37bd2dc0601fb05 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -288,6 +288,19 @@ public class PurpurWorldConfig {
+@@ -284,6 +284,19 @@ public class PurpurWorldConfig {
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);
}
diff --git a/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch
index 6aa5760a2..9b0f53398 100644
--- a/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch
+++ b/patches/server/0119-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 5ac53d35538373f81822b1dea7d29c2d3d52cb27..ccfcce1e25e8b94ef805a690cfadafe2f2ab7150 100644
+index cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a..4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1857,7 +1857,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -375,7 +375,7 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56bebf1c5f 100644
+index 84f96d814d724902d71bd777f37bd2dc0601fb05..6c7916d3b9841bd68775389ad4f8f5dfe67ca847 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -116,8 +116,11 @@ public class PurpurWorldConfig {
@@ -388,9 +388,9 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
public boolean persistentDroppableEntityDisplayNames = true;
+ public boolean projectilesBypassMobGriefing = false;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
- public double voidDamageHeight = -64.0D;
- public double voidDamageDealt = 4.0D;
-@@ -129,8 +132,11 @@ public class PurpurWorldConfig {
+ public int raidCooldownSeconds = 0;
+ public int animalBreedingCooldownSeconds = 0;
+@@ -127,8 +130,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);
@@ -400,9 +400,9 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
+ projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
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 {
+ raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
+ animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
+@@ -434,9 +440,11 @@ public class PurpurWorldConfig {
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
@@ -414,7 +414,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha);
}
-@@ -465,6 +473,11 @@ public class PurpurWorldConfig {
+@@ -461,6 +469,11 @@ public class PurpurWorldConfig {
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
}
@@ -426,7 +426,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
public boolean respawnAnchorExplode = true;
public double respawnAnchorExplosionPower = 5.0D;
public boolean respawnAnchorExplosionFire = true;
-@@ -494,10 +507,12 @@ public class PurpurWorldConfig {
+@@ -490,10 +503,12 @@ public class PurpurWorldConfig {
public boolean turtleEggsBreakFromExpOrbs = false;
public boolean turtleEggsBreakFromItems = false;
public boolean turtleEggsBreakFromMinecarts = false;
@@ -439,7 +439,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public int waterInfiniteRequiredSources = 2;
-@@ -782,6 +797,7 @@ public class PurpurWorldConfig {
+@@ -778,6 +793,7 @@ public class PurpurWorldConfig {
public double creeperScale = 1.0D;
public double creeperChargedChance = 0.0D;
public boolean creeperAllowGriefing = true;
@@ -447,7 +447,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -795,6 +811,7 @@ public class PurpurWorldConfig {
+@@ -791,6 +807,7 @@ public class PurpurWorldConfig {
creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D);
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
@@ -455,7 +455,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean dolphinRidable = false;
-@@ -895,6 +912,7 @@ public class PurpurWorldConfig {
+@@ -891,6 +908,7 @@ public class PurpurWorldConfig {
public double enderDragonMaxY = 320D;
public double enderDragonMaxHealth = 200.0D;
public boolean enderDragonAlwaysDropsFullExp = false;
@@ -463,7 +463,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
-@@ -911,6 +929,7 @@ public class PurpurWorldConfig {
+@@ -907,6 +925,7 @@ public class PurpurWorldConfig {
}
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
@@ -471,7 +471,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean endermanRidable = false;
-@@ -920,6 +939,7 @@ public class PurpurWorldConfig {
+@@ -916,6 +935,7 @@ public class PurpurWorldConfig {
public double endermanScale = 1.0D;
public boolean endermanAllowGriefing = true;
public boolean endermanDespawnEvenWithBlock = false;
@@ -479,7 +479,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -933,6 +953,7 @@ public class PurpurWorldConfig {
+@@ -929,6 +949,7 @@ public class PurpurWorldConfig {
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
@@ -487,7 +487,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean endermiteRidable = false;
-@@ -958,6 +979,7 @@ public class PurpurWorldConfig {
+@@ -954,6 +975,7 @@ public class PurpurWorldConfig {
public boolean evokerControllable = true;
public double evokerMaxHealth = 24.0D;
public double evokerScale = 1.0D;
@@ -495,7 +495,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
-@@ -969,6 +991,7 @@ public class PurpurWorldConfig {
+@@ -965,6 +987,7 @@ public class PurpurWorldConfig {
}
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D);
@@ -503,7 +503,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean foxRidable = false;
-@@ -978,6 +1001,7 @@ public class PurpurWorldConfig {
+@@ -974,6 +997,7 @@ public class PurpurWorldConfig {
public double foxScale = 1.0D;
public boolean foxTypeChangesWithTulips = false;
public int foxBreedingTicks = 6000;
@@ -511,7 +511,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -991,6 +1015,7 @@ public class PurpurWorldConfig {
+@@ -987,6 +1011,7 @@ public class PurpurWorldConfig {
foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
@@ -519,7 +519,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean frogRidable = false;
-@@ -1467,6 +1492,7 @@ public class PurpurWorldConfig {
+@@ -1463,6 +1488,7 @@ public class PurpurWorldConfig {
public boolean piglinControllable = true;
public double piglinMaxHealth = 16.0D;
public double piglinScale = 1.0D;
@@ -527,7 +527,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -1478,6 +1504,7 @@ public class PurpurWorldConfig {
+@@ -1474,6 +1500,7 @@ public class PurpurWorldConfig {
}
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D);
@@ -535,7 +535,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean piglinBruteRidable = false;
-@@ -1503,6 +1530,7 @@ public class PurpurWorldConfig {
+@@ -1499,6 +1526,7 @@ public class PurpurWorldConfig {
public boolean pillagerControllable = true;
public double pillagerMaxHealth = 24.0D;
public double pillagerScale = 1.0D;
@@ -543,7 +543,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
-@@ -1514,6 +1542,7 @@ public class PurpurWorldConfig {
+@@ -1510,6 +1538,7 @@ public class PurpurWorldConfig {
}
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D);
@@ -551,7 +551,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean polarBearRidable = false;
-@@ -1565,6 +1594,7 @@ public class PurpurWorldConfig {
+@@ -1561,6 +1590,7 @@ public class PurpurWorldConfig {
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
public int rabbitBreedingTicks = 6000;
@@ -559,7 +559,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -1579,6 +1609,7 @@ public class PurpurWorldConfig {
+@@ -1575,6 +1605,7 @@ public class PurpurWorldConfig {
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
@@ -567,7 +567,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean ravagerRidable = false;
-@@ -1586,6 +1617,7 @@ public class PurpurWorldConfig {
+@@ -1582,6 +1613,7 @@ public class PurpurWorldConfig {
public boolean ravagerControllable = true;
public double ravagerMaxHealth = 100.0D;
public double ravagerScale = 1.0D;
@@ -575,7 +575,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -1597,6 +1629,7 @@ public class PurpurWorldConfig {
+@@ -1593,6 +1625,7 @@ public class PurpurWorldConfig {
}
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D);
@@ -583,7 +583,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean salmonRidable = false;
-@@ -1621,6 +1654,7 @@ public class PurpurWorldConfig {
+@@ -1617,6 +1650,7 @@ public class PurpurWorldConfig {
public double sheepMaxHealth = 8.0D;
public double sheepScale = 1.0D;
public int sheepBreedingTicks = 6000;
@@ -591,7 +591,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -1633,6 +1667,7 @@ public class PurpurWorldConfig {
+@@ -1629,6 +1663,7 @@ public class PurpurWorldConfig {
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D);
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
@@ -599,7 +599,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean shulkerRidable = false;
-@@ -1660,6 +1695,7 @@ public class PurpurWorldConfig {
+@@ -1656,6 +1691,7 @@ public class PurpurWorldConfig {
public double silverfishScale = 1.0D;
public double silverfishMovementSpeed = 0.25D;
public double silverfishAttackDamage = 1.0D;
@@ -607,7 +607,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
-@@ -1673,6 +1709,7 @@ public class PurpurWorldConfig {
+@@ -1669,6 +1705,7 @@ public class PurpurWorldConfig {
silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D);
silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed);
silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage);
@@ -615,7 +615,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean skeletonRidable = false;
-@@ -1753,6 +1790,7 @@ public class PurpurWorldConfig {
+@@ -1749,6 +1786,7 @@ public class PurpurWorldConfig {
public int snowGolemSnowBallMax = 20;
public float snowGolemSnowBallModifier = 10.0F;
public double snowGolemAttackDistance = 1.25D;
@@ -623,7 +623,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -1770,6 +1808,7 @@ public class PurpurWorldConfig {
+@@ -1766,6 +1804,7 @@ public class PurpurWorldConfig {
snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax);
snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier);
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
@@ -631,7 +631,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean snifferRidable = false;
-@@ -1973,6 +2012,7 @@ public class PurpurWorldConfig {
+@@ -1969,6 +2008,7 @@ public class PurpurWorldConfig {
public int villagerBreedingTicks = 6000;
public boolean villagerClericsFarmWarts = false;
public boolean villagerClericFarmersThrowWarts = true;
@@ -639,7 +639,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -1990,6 +2030,7 @@ public class PurpurWorldConfig {
+@@ -1986,6 +2026,7 @@ public class PurpurWorldConfig {
villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks);
villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts);
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
@@ -647,7 +647,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean vindicatorRidable = false;
-@@ -2069,6 +2110,7 @@ public class PurpurWorldConfig {
+@@ -2065,6 +2106,7 @@ public class PurpurWorldConfig {
public double witherScale = 1.0D;
public float witherHealthRegenAmount = 1.0f;
public int witherHealthRegenDelay = 20;
@@ -655,7 +655,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2087,6 +2129,7 @@ public class PurpurWorldConfig {
+@@ -2083,6 +2125,7 @@ public class PurpurWorldConfig {
witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D);
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
@@ -663,7 +663,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
}
public boolean witherSkeletonRidable = false;
-@@ -2165,6 +2208,7 @@ public class PurpurWorldConfig {
+@@ -2161,6 +2204,7 @@ public class PurpurWorldConfig {
public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true;
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
@@ -671,7 +671,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2181,6 +2225,7 @@ public class PurpurWorldConfig {
+@@ -2177,6 +2221,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/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch
index 23ebd4f13..6cc3a7f6a 100644
--- a/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch
+++ b/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch
@@ -22,7 +22,7 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7
// org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE));
// if (event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0a6eea1ff455da964acf85e24d2d1e56bebf1c5f..4712bd3d2221bd0b54977cf671cecab6120ab1fa 100644
+index 6c7916d3b9841bd68775389ad4f8f5dfe67ca847..cd7c3762e216e9d6417e7a01fd7f71c23bd8142a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -119,6 +119,7 @@ public class PurpurWorldConfig {
@@ -33,7 +33,7 @@ index 0a6eea1ff455da964acf85e24d2d1e56bebf1c5f..4712bd3d2221bd0b54977cf671cecab6
public boolean persistentDroppableEntityDisplayNames = true;
public boolean projectilesBypassMobGriefing = false;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
-@@ -135,6 +136,7 @@ public class PurpurWorldConfig {
+@@ -133,6 +134,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/0121-Add-EntityTeleportHinderedEvent.patch b/patches/server/0121-Add-EntityTeleportHinderedEvent.patch
index 0f9e9c63a..7b917e254 100644
--- a/patches/server/0121-Add-EntityTeleportHinderedEvent.patch
+++ b/patches/server/0121-Add-EntityTeleportHinderedEvent.patch
@@ -95,7 +95,7 @@ index 82b8fca9ca46f24d71b357ed5eab89c6b27ecd8a..9df9b518f6188a758d9a712def36dadb
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 4712bd3d2221bd0b54977cf671cecab6120ab1fa..fbe6c149be4b0d46a6092c97f52cf125e5aa2e7b 100644
+index cd7c3762e216e9d6417e7a01fd7f71c23bd8142a..ec3d6553f3ab84078878e6e423b45b944efb299e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -118,6 +118,9 @@ public class PurpurWorldConfig {
@@ -108,7 +108,7 @@ index 4712bd3d2221bd0b54977cf671cecab6120ab1fa..fbe6c149be4b0d46a6092c97f52cf125
public boolean milkCuresBadOmen = true;
public boolean noteBlockIgnoreAbove = false;
public boolean persistentDroppableEntityDisplayNames = true;
-@@ -135,6 +138,9 @@ public class PurpurWorldConfig {
+@@ -133,6 +136,9 @@ public class PurpurWorldConfig {
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
diff --git a/patches/server/0122-Farmland-trampling-changes.patch b/patches/server/0122-Farmland-trampling-changes.patch
index 0484fff77..0dc11baee 100644
--- a/patches/server/0122-Farmland-trampling-changes.patch
+++ b/patches/server/0122-Farmland-trampling-changes.patch
@@ -37,10 +37,10 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb
if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) {
return;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index fbe6c149be4b0d46a6092c97f52cf125e5aa2e7b..3fba79b4520d7fb3345ba3e9fda6ea015471428e 100644
+index ec3d6553f3ab84078878e6e423b45b944efb299e..4319f30cc1287fa557de5ab281f285d38d311d87 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -455,10 +455,16 @@ public class PurpurWorldConfig {
+@@ -451,10 +451,16 @@ public class PurpurWorldConfig {
public boolean farmlandBypassMobGriefing = false;
public boolean farmlandGetsMoistFromBelow = false;
public boolean farmlandAlpha = false;
diff --git a/patches/server/0123-Movement-options-for-armor-stands.patch b/patches/server/0123-Movement-options-for-armor-stands.patch
index 0796e5a52..146d3ba23 100644
--- a/patches/server/0123-Movement-options-for-armor-stands.patch
+++ b/patches/server/0123-Movement-options-for-armor-stands.patch
@@ -17,10 +17,10 @@ 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 88de6ab4ac4857433c0c96dc4c030e5f4943c1dd..808c533a0092ca659bad32f400d83a869bcf6a64 100644
+index acf10656ea445554ee537dcb2f23164ee77e4d60..b8b38d6b544261038905c97e8c600625f5ce2bda 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1935,7 +1935,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1937,7 +1937,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return this.isInWater() || flag;
}
@@ -66,7 +66,7 @@ index 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 3fba79b4520d7fb3345ba3e9fda6ea015471428e..59e5f8f9e2a7b782b4e20334515252afaaaf4036 100644
+index 4319f30cc1287fa557de5ab281f285d38d311d87..5ab701eccf0ad74cddc9a37a779dc295fbff1254 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -100,10 +100,16 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0124-Fix-stuck-in-portals.patch b/patches/server/0124-Fix-stuck-in-portals.patch
index 50100488c..70b3b4c0e 100644
--- a/patches/server/0124-Fix-stuck-in-portals.patch
+++ b/patches/server/0124-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 97e05432626ae78b3ac91d41bbe0784c61d3d184..578809e48dc52dcde5866672291d70168a09811c 100644
+index 6100c35a54a9f597bb7e4925bf2c63aa7e0d64d3..d677c1308412e5a12046225ce2449af136b7665f 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1424,6 +1424,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -17,10 +17,10 @@ index 97e05432626ae78b3ac91d41bbe0784c61d3d184..578809e48dc52dcde5866672291d7016
this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
this.connection.resetPosition();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 808c533a0092ca659bad32f400d83a869bcf6a64..73cac6256baa32b0dbd47f06444adda2fc4e0fc1 100644
+index b8b38d6b544261038905c97e8c600625f5ce2bda..901080dd8431b83b20aa5604e931519dcba82b22 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3272,13 +3272,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3274,13 +3274,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return Vec3.directionFromRotation(this.getRotationVector());
}
@@ -38,10 +38,10 @@ index 808c533a0092ca659bad32f400d83a869bcf6a64..73cac6256baa32b0dbd47f06444adda2
this.portalProcess = new PortalProcessor(portal, pos.immutable());
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 59e5f8f9e2a7b782b4e20334515252afaaaf4036..e65d5ce9833e4e949290016d0a85eff329dcd2e8 100644
+index 5ab701eccf0ad74cddc9a37a779dc295fbff1254..aeb6171c1fad09e3837c51fb4d2395f958c78103 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -330,6 +330,7 @@ public class PurpurWorldConfig {
+@@ -326,6 +326,7 @@ public class PurpurWorldConfig {
public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false;
public boolean totemOfUndyingWorksInInventory = false;
@@ -49,7 +49,7 @@ index 59e5f8f9e2a7b782b4e20334515252afaaaf4036..e65d5ce9833e4e949290016d0a85eff3
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -345,6 +346,7 @@ public class PurpurWorldConfig {
+@@ -341,6 +342,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/0125-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch
index 4c7d3f885..b6b86af67 100644
--- a/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch
+++ b/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch
@@ -937,7 +937,7 @@ index d7d16e091f25db68d22b0609f5a16360604e8cd7..69d7594a7495cfefdd32a409b2bc71c0
public boolean dismountsUnderwater() {
return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java
-index 472c271352aa80c6af497c8b913c034afd2f65a6..dc832c9d3ef797580785b2b61abbb93b629cb80e 100644
+index cf4175e1e0a457e459e1de23417a8c7cec9f285c..9dcc0ecf276bfbe4b6eeecc783c52779d2b93b78 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java
@@ -74,6 +74,11 @@ public class Spider extends Monster {
@@ -1071,7 +1071,7 @@ index 28c400e1d8b56d1dd91d41a30b12543b242eadf9..3c9c32f09b3c60b52cd2e678e3c9e328
protected Brain.Provider brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index 21e0028ad33f8de0211dd733d98a00af8461684b..e6321e1c5ed453824de4af629feff272e24def01 100644
+index c0adb41e2772ac1204bbdf8e6eee27fbfc82ef12..990daa4f12ed7fb9a1ab40443c7f68bca4534626 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -143,6 +143,11 @@ public class Zombie extends Monster {
@@ -1199,10 +1199,10 @@ index 0d5e828a7fb6fd6facc04a27175541ac463c918e..05c63eb6cf8a7067105c58d244c7cc27
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a97e3d4897 100644
+index aeb6171c1fad09e3837c51fb4d2395f958c78103..886203f69ec02774ef82f53d8649fa1f991a8a0f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -586,12 +586,14 @@ public class PurpurWorldConfig {
+@@ -582,12 +582,14 @@ public class PurpurWorldConfig {
public double axolotlMaxHealth = 14.0D;
public double axolotlScale = 1.0D;
public int axolotlBreedingTicks = 6000;
@@ -1217,7 +1217,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean batRidable = false;
-@@ -607,6 +609,7 @@ public class PurpurWorldConfig {
+@@ -603,6 +605,7 @@ public class PurpurWorldConfig {
public double batArmor = 0.0D;
public double batArmorToughness = 0.0D;
public double batAttackKnockback = 0.0D;
@@ -1225,7 +1225,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void batSettings() {
batRidable = getBoolean("mobs.bat.ridable", batRidable);
batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater);
-@@ -626,6 +629,7 @@ public class PurpurWorldConfig {
+@@ -622,6 +625,7 @@ public class PurpurWorldConfig {
batArmor = getDouble("mobs.bat.attributes.armor", batArmor);
batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness);
batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback);
@@ -1233,7 +1233,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean beeRidable = false;
-@@ -635,6 +639,7 @@ public class PurpurWorldConfig {
+@@ -631,6 +635,7 @@ public class PurpurWorldConfig {
public double beeMaxHealth = 10.0D;
public double beeScale = 1.0D;
public int beeBreedingTicks = 6000;
@@ -1241,7 +1241,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -648,6 +653,7 @@ public class PurpurWorldConfig {
+@@ -644,6 +649,7 @@ public class PurpurWorldConfig {
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
@@ -1249,7 +1249,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean blazeRidable = false;
-@@ -656,6 +662,7 @@ public class PurpurWorldConfig {
+@@ -652,6 +658,7 @@ public class PurpurWorldConfig {
public double blazeMaxY = 320D;
public double blazeMaxHealth = 20.0D;
public double blazeScale = 1.0D;
@@ -1257,7 +1257,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void blazeSettings() {
blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable);
blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater);
-@@ -668,6 +675,7 @@ public class PurpurWorldConfig {
+@@ -664,6 +671,7 @@ public class PurpurWorldConfig {
}
blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth);
blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D);
@@ -1265,7 +1265,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean boggedRidable = false;
-@@ -712,6 +720,7 @@ public class PurpurWorldConfig {
+@@ -708,6 +716,7 @@ public class PurpurWorldConfig {
public int catSpawnVillageScanRange = 48;
public int catBreedingTicks = 6000;
public DyeColor catDefaultCollarColor = DyeColor.RED;
@@ -1273,7 +1273,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -732,6 +741,7 @@ public class PurpurWorldConfig {
+@@ -728,6 +737,7 @@ public class PurpurWorldConfig {
} catch (IllegalArgumentException ignore) {
catDefaultCollarColor = DyeColor.RED;
}
@@ -1281,7 +1281,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean caveSpiderRidable = false;
-@@ -739,6 +749,7 @@ public class PurpurWorldConfig {
+@@ -735,6 +745,7 @@ public class PurpurWorldConfig {
public boolean caveSpiderControllable = true;
public double caveSpiderMaxHealth = 12.0D;
public double caveSpiderScale = 1.0D;
@@ -1289,7 +1289,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void caveSpiderSettings() {
caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable);
caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater);
-@@ -750,6 +761,7 @@ public class PurpurWorldConfig {
+@@ -746,6 +757,7 @@ public class PurpurWorldConfig {
}
caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth);
caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D);
@@ -1297,7 +1297,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean chickenRidable = false;
-@@ -759,6 +771,7 @@ public class PurpurWorldConfig {
+@@ -755,6 +767,7 @@ public class PurpurWorldConfig {
public double chickenScale = 1.0D;
public boolean chickenRetaliate = false;
public int chickenBreedingTicks = 6000;
@@ -1305,7 +1305,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
-@@ -772,12 +785,14 @@ public class PurpurWorldConfig {
+@@ -768,12 +781,14 @@ public class PurpurWorldConfig {
chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D);
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks);
@@ -1320,7 +1320,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void codSettings() {
codRidable = getBoolean("mobs.cod.ridable", codRidable);
codControllable = getBoolean("mobs.cod.controllable", codControllable);
-@@ -788,6 +803,7 @@ public class PurpurWorldConfig {
+@@ -784,6 +799,7 @@ public class PurpurWorldConfig {
}
codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth);
codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D);
@@ -1328,7 +1328,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean cowRidable = false;
-@@ -797,6 +813,7 @@ public class PurpurWorldConfig {
+@@ -793,6 +809,7 @@ public class PurpurWorldConfig {
public double cowScale = 1.0D;
public int cowFeedMushrooms = 0;
public int cowBreedingTicks = 6000;
@@ -1336,7 +1336,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void cowSettings() {
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
-@@ -810,6 +827,7 @@ public class PurpurWorldConfig {
+@@ -806,6 +823,7 @@ public class PurpurWorldConfig {
cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks);
@@ -1344,7 +1344,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean creeperRidable = false;
-@@ -820,6 +838,7 @@ public class PurpurWorldConfig {
+@@ -816,6 +834,7 @@ public class PurpurWorldConfig {
public double creeperChargedChance = 0.0D;
public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false;
@@ -1352,7 +1352,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -834,6 +853,7 @@ public class PurpurWorldConfig {
+@@ -830,6 +849,7 @@ public class PurpurWorldConfig {
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
@@ -1360,7 +1360,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean dolphinRidable = false;
-@@ -844,6 +864,7 @@ public class PurpurWorldConfig {
+@@ -840,6 +860,7 @@ public class PurpurWorldConfig {
public double dolphinMaxHealth = 10.0D;
public double dolphinScale = 1.0D;
public boolean dolphinDisableTreasureSearching = false;
@@ -1368,7 +1368,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -858,6 +879,7 @@ public class PurpurWorldConfig {
+@@ -854,6 +875,7 @@ public class PurpurWorldConfig {
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D);
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
@@ -1376,7 +1376,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean donkeyRidableInWater = false;
-@@ -868,6 +890,7 @@ public class PurpurWorldConfig {
+@@ -864,6 +886,7 @@ public class PurpurWorldConfig {
public double donkeyMovementSpeedMin = 0.175D;
public double donkeyMovementSpeedMax = 0.175D;
public int donkeyBreedingTicks = 6000;
@@ -1384,7 +1384,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -884,6 +907,7 @@ public class PurpurWorldConfig {
+@@ -880,6 +903,7 @@ public class PurpurWorldConfig {
donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin);
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks);
@@ -1392,7 +1392,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean drownedRidable = false;
-@@ -895,6 +919,7 @@ public class PurpurWorldConfig {
+@@ -891,6 +915,7 @@ public class PurpurWorldConfig {
public boolean drownedJockeyOnlyBaby = true;
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
@@ -1400,7 +1400,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
-@@ -910,12 +935,14 @@ public class PurpurWorldConfig {
+@@ -906,12 +931,14 @@ public class PurpurWorldConfig {
drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby);
drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance);
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
@@ -1415,7 +1415,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void elderGuardianSettings() {
elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable);
elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable);
-@@ -926,6 +953,7 @@ public class PurpurWorldConfig {
+@@ -922,6 +949,7 @@ public class PurpurWorldConfig {
}
elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth);
elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D);
@@ -1423,7 +1423,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean enderDragonRidable = false;
-@@ -935,6 +963,7 @@ public class PurpurWorldConfig {
+@@ -931,6 +959,7 @@ public class PurpurWorldConfig {
public double enderDragonMaxHealth = 200.0D;
public boolean enderDragonAlwaysDropsFullExp = false;
public boolean enderDragonBypassMobGriefing = false;
@@ -1431,7 +1431,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
-@@ -952,6 +981,7 @@ public class PurpurWorldConfig {
+@@ -948,6 +977,7 @@ public class PurpurWorldConfig {
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
@@ -1439,7 +1439,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean endermanRidable = false;
-@@ -962,6 +992,7 @@ public class PurpurWorldConfig {
+@@ -958,6 +988,7 @@ public class PurpurWorldConfig {
public boolean endermanAllowGriefing = true;
public boolean endermanDespawnEvenWithBlock = false;
public boolean endermanBypassMobGriefing = false;
@@ -1447,7 +1447,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -976,6 +1007,7 @@ public class PurpurWorldConfig {
+@@ -972,6 +1003,7 @@ public class PurpurWorldConfig {
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing);
@@ -1455,7 +1455,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean endermiteRidable = false;
-@@ -983,6 +1015,7 @@ public class PurpurWorldConfig {
+@@ -979,6 +1011,7 @@ public class PurpurWorldConfig {
public boolean endermiteControllable = true;
public double endermiteMaxHealth = 8.0D;
public double endermiteScale = 1.0D;
@@ -1463,7 +1463,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void endermiteSettings() {
endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable);
endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater);
-@@ -994,6 +1027,7 @@ public class PurpurWorldConfig {
+@@ -990,6 +1023,7 @@ public class PurpurWorldConfig {
}
endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth);
endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D);
@@ -1471,7 +1471,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean evokerRidable = false;
-@@ -1002,6 +1036,7 @@ public class PurpurWorldConfig {
+@@ -998,6 +1032,7 @@ public class PurpurWorldConfig {
public double evokerMaxHealth = 24.0D;
public double evokerScale = 1.0D;
public boolean evokerBypassMobGriefing = false;
@@ -1479,7 +1479,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
-@@ -1014,6 +1049,7 @@ public class PurpurWorldConfig {
+@@ -1010,6 +1045,7 @@ public class PurpurWorldConfig {
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D);
evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing);
@@ -1487,7 +1487,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean foxRidable = false;
-@@ -1024,6 +1060,7 @@ public class PurpurWorldConfig {
+@@ -1020,6 +1056,7 @@ public class PurpurWorldConfig {
public boolean foxTypeChangesWithTulips = false;
public int foxBreedingTicks = 6000;
public boolean foxBypassMobGriefing = false;
@@ -1495,7 +1495,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -1038,6 +1075,7 @@ public class PurpurWorldConfig {
+@@ -1034,6 +1071,7 @@ public class PurpurWorldConfig {
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing);
@@ -1503,7 +1503,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean frogRidable = false;
-@@ -1059,6 +1097,7 @@ public class PurpurWorldConfig {
+@@ -1055,6 +1093,7 @@ public class PurpurWorldConfig {
public double ghastMaxY = 320D;
public double ghastMaxHealth = 10.0D;
public double ghastScale = 1.0D;
@@ -1511,7 +1511,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void ghastSettings() {
ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable);
ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater);
-@@ -1071,6 +1110,7 @@ public class PurpurWorldConfig {
+@@ -1067,6 +1106,7 @@ public class PurpurWorldConfig {
}
ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth);
ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D);
@@ -1519,7 +1519,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean giantRidable = false;
-@@ -1084,6 +1124,7 @@ public class PurpurWorldConfig {
+@@ -1080,6 +1120,7 @@ public class PurpurWorldConfig {
public float giantJumpHeight = 1.0F;
public boolean giantHaveAI = false;
public boolean giantHaveHostileAI = false;
@@ -1527,7 +1527,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void giantSettings() {
giantRidable = getBoolean("mobs.giant.ridable", giantRidable);
giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater);
-@@ -1105,6 +1146,7 @@ public class PurpurWorldConfig {
+@@ -1101,6 +1142,7 @@ public class PurpurWorldConfig {
giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight);
giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI);
giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI);
@@ -1535,7 +1535,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean glowSquidRidable = false;
-@@ -1112,12 +1154,14 @@ public class PurpurWorldConfig {
+@@ -1108,12 +1150,14 @@ public class PurpurWorldConfig {
public double glowSquidMaxHealth = 10.0D;
public double glowSquidScale = 1.0D;
public boolean glowSquidsCanFly = false;
@@ -1550,7 +1550,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean goatRidable = false;
-@@ -1126,6 +1170,7 @@ public class PurpurWorldConfig {
+@@ -1122,6 +1166,7 @@ public class PurpurWorldConfig {
public double goatMaxHealth = 10.0D;
public double goatScale = 1.0D;
public int goatBreedingTicks = 6000;
@@ -1558,7 +1558,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void goatSettings() {
goatRidable = getBoolean("mobs.goat.ridable", goatRidable);
goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater);
-@@ -1133,12 +1178,14 @@ public class PurpurWorldConfig {
+@@ -1129,12 +1174,14 @@ public class PurpurWorldConfig {
goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth);
goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D);
goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks);
@@ -1573,7 +1573,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void guardianSettings() {
guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable);
guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable);
-@@ -1149,6 +1196,7 @@ public class PurpurWorldConfig {
+@@ -1145,6 +1192,7 @@ public class PurpurWorldConfig {
}
guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth);
guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D);
@@ -1581,7 +1581,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean hoglinRidable = false;
-@@ -1157,6 +1205,7 @@ public class PurpurWorldConfig {
+@@ -1153,6 +1201,7 @@ public class PurpurWorldConfig {
public double hoglinMaxHealth = 40.0D;
public double hoglinScale = 1.0D;
public int hoglinBreedingTicks = 6000;
@@ -1589,7 +1589,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
-@@ -1169,6 +1218,7 @@ public class PurpurWorldConfig {
+@@ -1165,6 +1214,7 @@ public class PurpurWorldConfig {
hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth);
hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D);
hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks);
@@ -1597,7 +1597,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean horseRidableInWater = false;
-@@ -1179,6 +1229,7 @@ public class PurpurWorldConfig {
+@@ -1175,6 +1225,7 @@ public class PurpurWorldConfig {
public double horseMovementSpeedMin = 0.1125D;
public double horseMovementSpeedMax = 0.3375D;
public int horseBreedingTicks = 6000;
@@ -1605,7 +1605,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1195,6 +1246,7 @@ public class PurpurWorldConfig {
+@@ -1191,6 +1242,7 @@ public class PurpurWorldConfig {
horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin);
horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax);
horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks);
@@ -1613,7 +1613,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean huskRidable = false;
-@@ -1206,6 +1258,7 @@ public class PurpurWorldConfig {
+@@ -1202,6 +1254,7 @@ public class PurpurWorldConfig {
public boolean huskJockeyOnlyBaby = true;
public double huskJockeyChance = 0.05D;
public boolean huskJockeyTryExistingChickens = true;
@@ -1621,7 +1621,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
-@@ -1221,6 +1274,7 @@ public class PurpurWorldConfig {
+@@ -1217,6 +1270,7 @@ public class PurpurWorldConfig {
huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby);
huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance);
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
@@ -1629,7 +1629,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean illusionerRidable = false;
-@@ -1230,6 +1284,7 @@ public class PurpurWorldConfig {
+@@ -1226,6 +1280,7 @@ public class PurpurWorldConfig {
public double illusionerFollowRange = 18.0D;
public double illusionerMaxHealth = 32.0D;
public double illusionerScale = 1.0D;
@@ -1637,7 +1637,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void illusionerSettings() {
illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable);
illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater);
-@@ -1247,6 +1302,7 @@ public class PurpurWorldConfig {
+@@ -1243,6 +1298,7 @@ public class PurpurWorldConfig {
}
illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth);
illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D);
@@ -1645,7 +1645,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean ironGolemRidable = false;
-@@ -1255,6 +1311,7 @@ public class PurpurWorldConfig {
+@@ -1251,6 +1307,7 @@ public class PurpurWorldConfig {
public boolean ironGolemCanSwim = false;
public double ironGolemMaxHealth = 100.0D;
public double ironGolemScale = 1.0D;
@@ -1653,7 +1653,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
-@@ -1267,6 +1324,7 @@ public class PurpurWorldConfig {
+@@ -1263,6 +1320,7 @@ public class PurpurWorldConfig {
}
ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth);
ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D);
@@ -1661,7 +1661,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean llamaRidable = false;
-@@ -1279,6 +1337,7 @@ public class PurpurWorldConfig {
+@@ -1275,6 +1333,7 @@ public class PurpurWorldConfig {
public double llamaMovementSpeedMin = 0.175D;
public double llamaMovementSpeedMax = 0.175D;
public int llamaBreedingTicks = 6000;
@@ -1669,7 +1669,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1297,6 +1356,7 @@ public class PurpurWorldConfig {
+@@ -1293,6 +1352,7 @@ public class PurpurWorldConfig {
llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin);
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
@@ -1677,7 +1677,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean magmaCubeRidable = false;
-@@ -1306,6 +1366,7 @@ public class PurpurWorldConfig {
+@@ -1302,6 +1362,7 @@ public class PurpurWorldConfig {
public String magmaCubeAttackDamage = "size";
public Map magmaCubeMaxHealthCache = new HashMap<>();
public Map magmaCubeAttackDamageCache = new HashMap<>();
@@ -1685,7 +1685,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void magmaCubeSettings() {
magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable);
magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater);
-@@ -1319,6 +1380,7 @@ public class PurpurWorldConfig {
+@@ -1315,6 +1376,7 @@ public class PurpurWorldConfig {
magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage);
magmaCubeMaxHealthCache.clear();
magmaCubeAttackDamageCache.clear();
@@ -1693,7 +1693,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean mooshroomRidable = false;
-@@ -1327,6 +1389,7 @@ public class PurpurWorldConfig {
+@@ -1323,6 +1385,7 @@ public class PurpurWorldConfig {
public double mooshroomMaxHealth = 10.0D;
public double mooshroomScale = 1.0D;
public int mooshroomBreedingTicks = 6000;
@@ -1701,7 +1701,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
-@@ -1339,6 +1402,7 @@ public class PurpurWorldConfig {
+@@ -1335,6 +1398,7 @@ public class PurpurWorldConfig {
mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth);
mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D);
mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks);
@@ -1709,7 +1709,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean muleRidableInWater = false;
-@@ -1349,6 +1413,7 @@ public class PurpurWorldConfig {
+@@ -1345,6 +1409,7 @@ public class PurpurWorldConfig {
public double muleMovementSpeedMin = 0.175D;
public double muleMovementSpeedMax = 0.175D;
public int muleBreedingTicks = 6000;
@@ -1717,7 +1717,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1365,6 +1430,7 @@ public class PurpurWorldConfig {
+@@ -1361,6 +1426,7 @@ public class PurpurWorldConfig {
muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin);
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks);
@@ -1725,7 +1725,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean ocelotRidable = false;
-@@ -1373,6 +1439,7 @@ public class PurpurWorldConfig {
+@@ -1369,6 +1435,7 @@ public class PurpurWorldConfig {
public double ocelotMaxHealth = 10.0D;
public double ocelotScale = 1.0D;
public int ocelotBreedingTicks = 6000;
@@ -1733,7 +1733,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -1385,6 +1452,7 @@ public class PurpurWorldConfig {
+@@ -1381,6 +1448,7 @@ public class PurpurWorldConfig {
ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth);
ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D);
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
@@ -1741,7 +1741,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean pandaRidable = false;
-@@ -1393,6 +1461,7 @@ public class PurpurWorldConfig {
+@@ -1389,6 +1457,7 @@ public class PurpurWorldConfig {
public double pandaMaxHealth = 20.0D;
public double pandaScale = 1.0D;
public int pandaBreedingTicks = 6000;
@@ -1749,7 +1749,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
-@@ -1405,6 +1474,7 @@ public class PurpurWorldConfig {
+@@ -1401,6 +1470,7 @@ public class PurpurWorldConfig {
pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth);
pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D);
pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks);
@@ -1757,7 +1757,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean parrotRidable = false;
-@@ -1413,6 +1483,7 @@ public class PurpurWorldConfig {
+@@ -1409,6 +1479,7 @@ public class PurpurWorldConfig {
public double parrotMaxY = 320D;
public double parrotMaxHealth = 6.0D;
public double parrotScale = 1.0D;
@@ -1765,7 +1765,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
-@@ -1425,6 +1496,7 @@ public class PurpurWorldConfig {
+@@ -1421,6 +1492,7 @@ public class PurpurWorldConfig {
}
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D);
@@ -1773,7 +1773,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean phantomRidable = false;
-@@ -1451,6 +1523,7 @@ public class PurpurWorldConfig {
+@@ -1447,6 +1519,7 @@ public class PurpurWorldConfig {
public boolean phantomIgnorePlayersWithTorch = false;
public boolean phantomBurnInDaylight = true;
public boolean phantomFlamesOnSwoop = false;
@@ -1781,7 +1781,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -1485,6 +1558,7 @@ public class PurpurWorldConfig {
+@@ -1481,6 +1554,7 @@ public class PurpurWorldConfig {
phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight);
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
@@ -1789,7 +1789,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean pigRidable = false;
-@@ -1494,6 +1568,7 @@ public class PurpurWorldConfig {
+@@ -1490,6 +1564,7 @@ public class PurpurWorldConfig {
public double pigScale = 1.0D;
public boolean pigGiveSaddleBack = false;
public int pigBreedingTicks = 6000;
@@ -1797,7 +1797,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
-@@ -1507,6 +1582,7 @@ public class PurpurWorldConfig {
+@@ -1503,6 +1578,7 @@ public class PurpurWorldConfig {
pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D);
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks);
@@ -1805,7 +1805,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean piglinRidable = false;
-@@ -1515,6 +1591,7 @@ public class PurpurWorldConfig {
+@@ -1511,6 +1587,7 @@ public class PurpurWorldConfig {
public double piglinMaxHealth = 16.0D;
public double piglinScale = 1.0D;
public boolean piglinBypassMobGriefing = false;
@@ -1813,7 +1813,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -1527,6 +1604,7 @@ public class PurpurWorldConfig {
+@@ -1523,6 +1600,7 @@ public class PurpurWorldConfig {
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D);
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
@@ -1821,7 +1821,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean piglinBruteRidable = false;
-@@ -1534,6 +1612,7 @@ public class PurpurWorldConfig {
+@@ -1530,6 +1608,7 @@ public class PurpurWorldConfig {
public boolean piglinBruteControllable = true;
public double piglinBruteMaxHealth = 50.0D;
public double piglinBruteScale = 1.0D;
@@ -1829,7 +1829,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void piglinBruteSettings() {
piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable);
piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater);
-@@ -1545,6 +1624,7 @@ public class PurpurWorldConfig {
+@@ -1541,6 +1620,7 @@ public class PurpurWorldConfig {
}
piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth);
piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D);
@@ -1837,7 +1837,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean pillagerRidable = false;
-@@ -1553,6 +1633,7 @@ public class PurpurWorldConfig {
+@@ -1549,6 +1629,7 @@ public class PurpurWorldConfig {
public double pillagerMaxHealth = 24.0D;
public double pillagerScale = 1.0D;
public boolean pillagerBypassMobGriefing = false;
@@ -1845,7 +1845,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
-@@ -1565,6 +1646,7 @@ public class PurpurWorldConfig {
+@@ -1561,6 +1642,7 @@ public class PurpurWorldConfig {
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D);
pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing);
@@ -1853,7 +1853,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean polarBearRidable = false;
-@@ -1575,6 +1657,7 @@ public class PurpurWorldConfig {
+@@ -1571,6 +1653,7 @@ public class PurpurWorldConfig {
public String polarBearBreedableItemString = "";
public Item polarBearBreedableItem = null;
public int polarBearBreedingTicks = 6000;
@@ -1861,7 +1861,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
-@@ -1590,12 +1673,14 @@ public class PurpurWorldConfig {
+@@ -1586,12 +1669,14 @@ public class PurpurWorldConfig {
Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString));
if (item != Items.AIR) polarBearBreedableItem = item;
polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks);
@@ -1876,7 +1876,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void pufferfishSettings() {
pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable);
pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable);
-@@ -1606,6 +1691,7 @@ public class PurpurWorldConfig {
+@@ -1602,6 +1687,7 @@ public class PurpurWorldConfig {
}
pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth);
pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D);
@@ -1884,7 +1884,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean rabbitRidable = false;
-@@ -1617,6 +1703,7 @@ public class PurpurWorldConfig {
+@@ -1613,6 +1699,7 @@ public class PurpurWorldConfig {
public double rabbitNaturalKiller = 0.0D;
public int rabbitBreedingTicks = 6000;
public boolean rabbitBypassMobGriefing = false;
@@ -1892,7 +1892,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -1632,6 +1719,7 @@ public class PurpurWorldConfig {
+@@ -1628,6 +1715,7 @@ public class PurpurWorldConfig {
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing);
@@ -1900,7 +1900,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean ravagerRidable = false;
-@@ -1640,6 +1728,7 @@ public class PurpurWorldConfig {
+@@ -1636,6 +1724,7 @@ public class PurpurWorldConfig {
public double ravagerMaxHealth = 100.0D;
public double ravagerScale = 1.0D;
public boolean ravagerBypassMobGriefing = false;
@@ -1908,7 +1908,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -1652,12 +1741,14 @@ public class PurpurWorldConfig {
+@@ -1648,12 +1737,14 @@ public class PurpurWorldConfig {
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D);
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
@@ -1923,7 +1923,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void salmonSettings() {
salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable);
salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable);
-@@ -1668,6 +1759,7 @@ public class PurpurWorldConfig {
+@@ -1664,6 +1755,7 @@ public class PurpurWorldConfig {
}
salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth);
salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D);
@@ -1931,7 +1931,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean sheepRidable = false;
-@@ -1677,6 +1769,7 @@ public class PurpurWorldConfig {
+@@ -1673,6 +1765,7 @@ public class PurpurWorldConfig {
public double sheepScale = 1.0D;
public int sheepBreedingTicks = 6000;
public boolean sheepBypassMobGriefing = false;
@@ -1939,7 +1939,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -1690,6 +1783,7 @@ public class PurpurWorldConfig {
+@@ -1686,6 +1779,7 @@ public class PurpurWorldConfig {
sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D);
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
@@ -1947,7 +1947,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean shulkerRidable = false;
-@@ -1697,6 +1791,7 @@ public class PurpurWorldConfig {
+@@ -1693,6 +1787,7 @@ public class PurpurWorldConfig {
public boolean shulkerControllable = true;
public double shulkerMaxHealth = 30.0D;
public double shulkerScale = 1.0D;
@@ -1955,7 +1955,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -1708,6 +1803,7 @@ public class PurpurWorldConfig {
+@@ -1704,6 +1799,7 @@ public class PurpurWorldConfig {
}
shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth);
shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE);
@@ -1963,7 +1963,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean silverfishRidable = false;
-@@ -1718,6 +1814,7 @@ public class PurpurWorldConfig {
+@@ -1714,6 +1810,7 @@ public class PurpurWorldConfig {
public double silverfishMovementSpeed = 0.25D;
public double silverfishAttackDamage = 1.0D;
public boolean silverfishBypassMobGriefing = false;
@@ -1971,7 +1971,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
-@@ -1732,6 +1829,7 @@ public class PurpurWorldConfig {
+@@ -1728,6 +1825,7 @@ public class PurpurWorldConfig {
silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed);
silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage);
silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing);
@@ -1979,7 +1979,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean skeletonRidable = false;
-@@ -1739,6 +1837,7 @@ public class PurpurWorldConfig {
+@@ -1735,6 +1833,7 @@ public class PurpurWorldConfig {
public boolean skeletonControllable = true;
public double skeletonMaxHealth = 20.0D;
public double skeletonScale = 1.0D;
@@ -1987,7 +1987,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -1750,6 +1849,7 @@ public class PurpurWorldConfig {
+@@ -1746,6 +1845,7 @@ public class PurpurWorldConfig {
}
skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth);
skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D);
@@ -1995,7 +1995,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean skeletonHorseRidable = false;
-@@ -1761,6 +1861,7 @@ public class PurpurWorldConfig {
+@@ -1757,6 +1857,7 @@ public class PurpurWorldConfig {
public double skeletonHorseJumpStrengthMax = 1.0D;
public double skeletonHorseMovementSpeedMin = 0.2D;
public double skeletonHorseMovementSpeedMax = 0.2D;
@@ -2003,7 +2003,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void skeletonHorseSettings() {
skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable);
skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater);
-@@ -1777,6 +1878,7 @@ public class PurpurWorldConfig {
+@@ -1773,6 +1874,7 @@ public class PurpurWorldConfig {
skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax);
skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin);
skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax);
@@ -2011,7 +2011,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean slimeRidable = false;
-@@ -1786,6 +1888,7 @@ public class PurpurWorldConfig {
+@@ -1782,6 +1884,7 @@ public class PurpurWorldConfig {
public String slimeAttackDamage = "size";
public Map slimeMaxHealthCache = new HashMap<>();
public Map slimeAttackDamageCache = new HashMap<>();
@@ -2019,7 +2019,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void slimeSettings() {
slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable);
slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater);
-@@ -1799,6 +1902,7 @@ public class PurpurWorldConfig {
+@@ -1795,6 +1898,7 @@ public class PurpurWorldConfig {
slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage);
slimeMaxHealthCache.clear();
slimeAttackDamageCache.clear();
@@ -2027,7 +2027,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean snowGolemRidable = false;
-@@ -1813,6 +1917,7 @@ public class PurpurWorldConfig {
+@@ -1809,6 +1913,7 @@ public class PurpurWorldConfig {
public float snowGolemSnowBallModifier = 10.0F;
public double snowGolemAttackDistance = 1.25D;
public boolean snowGolemBypassMobGriefing = false;
@@ -2035,7 +2035,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -1831,6 +1936,7 @@ public class PurpurWorldConfig {
+@@ -1827,6 +1932,7 @@ public class PurpurWorldConfig {
snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier);
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing);
@@ -2043,7 +2043,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean snifferRidable = false;
-@@ -1855,6 +1961,7 @@ public class PurpurWorldConfig {
+@@ -1851,6 +1957,7 @@ public class PurpurWorldConfig {
public boolean squidImmuneToEAR = true;
public double squidOffsetWaterCheck = 0.0D;
public boolean squidsCanFly = false;
@@ -2051,7 +2051,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -1868,6 +1975,7 @@ public class PurpurWorldConfig {
+@@ -1864,6 +1971,7 @@ public class PurpurWorldConfig {
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly);
@@ -2059,7 +2059,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean spiderRidable = false;
-@@ -1875,6 +1983,7 @@ public class PurpurWorldConfig {
+@@ -1871,6 +1979,7 @@ public class PurpurWorldConfig {
public boolean spiderControllable = true;
public double spiderMaxHealth = 16.0D;
public double spiderScale = 1.0D;
@@ -2067,7 +2067,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void spiderSettings() {
spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable);
spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater);
-@@ -1886,6 +1995,7 @@ public class PurpurWorldConfig {
+@@ -1882,6 +1991,7 @@ public class PurpurWorldConfig {
}
spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth);
spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D);
@@ -2075,7 +2075,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean strayRidable = false;
-@@ -1893,6 +2003,7 @@ public class PurpurWorldConfig {
+@@ -1889,6 +1999,7 @@ public class PurpurWorldConfig {
public boolean strayControllable = true;
public double strayMaxHealth = 20.0D;
public double strayScale = 1.0D;
@@ -2083,7 +2083,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void straySettings() {
strayRidable = getBoolean("mobs.stray.ridable", strayRidable);
strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater);
-@@ -1904,6 +2015,7 @@ public class PurpurWorldConfig {
+@@ -1900,6 +2011,7 @@ public class PurpurWorldConfig {
}
strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth);
strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D);
@@ -2091,7 +2091,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean striderRidable = false;
-@@ -1913,6 +2025,7 @@ public class PurpurWorldConfig {
+@@ -1909,6 +2021,7 @@ public class PurpurWorldConfig {
public double striderScale = 1.0D;
public int striderBreedingTicks = 6000;
public boolean striderGiveSaddleBack = false;
@@ -2099,7 +2099,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -1926,6 +2039,7 @@ public class PurpurWorldConfig {
+@@ -1922,6 +2035,7 @@ public class PurpurWorldConfig {
striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D);
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack);
@@ -2107,7 +2107,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean tadpoleRidable = false;
-@@ -1947,6 +2061,7 @@ public class PurpurWorldConfig {
+@@ -1943,6 +2057,7 @@ public class PurpurWorldConfig {
public double traderLlamaMovementSpeedMin = 0.175D;
public double traderLlamaMovementSpeedMax = 0.175D;
public int traderLlamaBreedingTicks = 6000;
@@ -2115,7 +2115,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
-@@ -1965,12 +2080,14 @@ public class PurpurWorldConfig {
+@@ -1961,12 +2076,14 @@ public class PurpurWorldConfig {
traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin);
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks);
@@ -2130,7 +2130,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void tropicalFishSettings() {
tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable);
tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable);
-@@ -1981,6 +2098,7 @@ public class PurpurWorldConfig {
+@@ -1977,6 +2094,7 @@ public class PurpurWorldConfig {
}
tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth);
tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D);
@@ -2138,7 +2138,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean turtleRidable = false;
-@@ -1989,6 +2107,7 @@ public class PurpurWorldConfig {
+@@ -1985,6 +2103,7 @@ public class PurpurWorldConfig {
public double turtleMaxHealth = 30.0D;
public double turtleScale = 1.0D;
public int turtleBreedingTicks = 6000;
@@ -2146,7 +2146,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
-@@ -2001,6 +2120,7 @@ public class PurpurWorldConfig {
+@@ -1997,6 +2116,7 @@ public class PurpurWorldConfig {
turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth);
turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D);
turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks);
@@ -2154,7 +2154,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean vexRidable = false;
-@@ -2009,6 +2129,7 @@ public class PurpurWorldConfig {
+@@ -2005,6 +2125,7 @@ public class PurpurWorldConfig {
public double vexMaxY = 320D;
public double vexMaxHealth = 14.0D;
public double vexScale = 1.0D;
@@ -2162,7 +2162,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void vexSettings() {
vexRidable = getBoolean("mobs.vex.ridable", vexRidable);
vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater);
-@@ -2021,6 +2142,7 @@ public class PurpurWorldConfig {
+@@ -2017,6 +2138,7 @@ public class PurpurWorldConfig {
}
vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth);
vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D);
@@ -2170,7 +2170,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean villagerRidable = false;
-@@ -2035,6 +2157,7 @@ public class PurpurWorldConfig {
+@@ -2031,6 +2153,7 @@ public class PurpurWorldConfig {
public boolean villagerClericsFarmWarts = false;
public boolean villagerClericFarmersThrowWarts = true;
public boolean villagerBypassMobGriefing = false;
@@ -2178,7 +2178,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2053,6 +2176,7 @@ public class PurpurWorldConfig {
+@@ -2049,6 +2172,7 @@ public class PurpurWorldConfig {
villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts);
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
@@ -2186,7 +2186,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean vindicatorRidable = false;
-@@ -2061,6 +2185,7 @@ public class PurpurWorldConfig {
+@@ -2057,6 +2181,7 @@ public class PurpurWorldConfig {
public double vindicatorMaxHealth = 24.0D;
public double vindicatorScale = 1.0D;
public double vindicatorJohnnySpawnChance = 0D;
@@ -2194,7 +2194,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
-@@ -2073,6 +2198,7 @@ public class PurpurWorldConfig {
+@@ -2069,6 +2194,7 @@ public class PurpurWorldConfig {
vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth);
vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D);
vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance);
@@ -2202,7 +2202,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean wanderingTraderRidable = false;
-@@ -2082,6 +2208,7 @@ public class PurpurWorldConfig {
+@@ -2078,6 +2204,7 @@ public class PurpurWorldConfig {
public double wanderingTraderScale = 1.0D;
public boolean wanderingTraderFollowEmeraldBlock = false;
public boolean wanderingTraderCanBeLeashed = false;
@@ -2210,7 +2210,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
-@@ -2095,6 +2222,7 @@ public class PurpurWorldConfig {
+@@ -2091,6 +2218,7 @@ public class PurpurWorldConfig {
wanderingTraderScale = Mth.clamp(getDouble("mobs.wandering_trader.attributes.scale", wanderingTraderScale), 0.0625D, 16.0D);
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
@@ -2218,7 +2218,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean wardenRidable = false;
-@@ -2111,6 +2239,7 @@ public class PurpurWorldConfig {
+@@ -2107,6 +2235,7 @@ public class PurpurWorldConfig {
public boolean witchControllable = true;
public double witchMaxHealth = 26.0D;
public double witchScale = 1.0D;
@@ -2226,7 +2226,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void witchSettings() {
witchRidable = getBoolean("mobs.witch.ridable", witchRidable);
witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater);
-@@ -2122,6 +2251,7 @@ public class PurpurWorldConfig {
+@@ -2118,6 +2247,7 @@ public class PurpurWorldConfig {
}
witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth);
witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D);
@@ -2234,7 +2234,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean witherRidable = false;
-@@ -2133,6 +2263,7 @@ public class PurpurWorldConfig {
+@@ -2129,6 +2259,7 @@ public class PurpurWorldConfig {
public float witherHealthRegenAmount = 1.0f;
public int witherHealthRegenDelay = 20;
public boolean witherBypassMobGriefing = false;
@@ -2242,7 +2242,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2152,6 +2283,7 @@ public class PurpurWorldConfig {
+@@ -2148,6 +2279,7 @@ public class PurpurWorldConfig {
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
@@ -2250,7 +2250,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean witherSkeletonRidable = false;
-@@ -2159,6 +2291,7 @@ public class PurpurWorldConfig {
+@@ -2155,6 +2287,7 @@ public class PurpurWorldConfig {
public boolean witherSkeletonControllable = true;
public double witherSkeletonMaxHealth = 20.0D;
public double witherSkeletonScale = 1.0D;
@@ -2258,7 +2258,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void witherSkeletonSettings() {
witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable);
witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater);
-@@ -2170,6 +2303,7 @@ public class PurpurWorldConfig {
+@@ -2166,6 +2299,7 @@ public class PurpurWorldConfig {
}
witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth);
witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D);
@@ -2266,7 +2266,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean wolfRidable = false;
-@@ -2181,6 +2315,7 @@ public class PurpurWorldConfig {
+@@ -2177,6 +2311,7 @@ public class PurpurWorldConfig {
public boolean wolfMilkCuresRabies = true;
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
@@ -2274,7 +2274,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
-@@ -2200,6 +2335,7 @@ public class PurpurWorldConfig {
+@@ -2196,6 +2331,7 @@ public class PurpurWorldConfig {
wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies);
wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid);
wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks);
@@ -2282,7 +2282,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean zoglinRidable = false;
-@@ -2207,6 +2343,7 @@ public class PurpurWorldConfig {
+@@ -2203,6 +2339,7 @@ public class PurpurWorldConfig {
public boolean zoglinControllable = true;
public double zoglinMaxHealth = 40.0D;
public double zoglinScale = 1.0D;
@@ -2290,7 +2290,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void zoglinSettings() {
zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable);
zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater);
-@@ -2218,6 +2355,7 @@ public class PurpurWorldConfig {
+@@ -2214,6 +2351,7 @@ public class PurpurWorldConfig {
}
zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth);
zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D);
@@ -2298,7 +2298,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean zombieRidable = false;
-@@ -2231,6 +2369,7 @@ public class PurpurWorldConfig {
+@@ -2227,6 +2365,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyTryExistingChickens = true;
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
public boolean zombieBypassMobGriefing = false;
@@ -2306,7 +2306,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -2248,6 +2387,7 @@ public class PurpurWorldConfig {
+@@ -2244,6 +2383,7 @@ public class PurpurWorldConfig {
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing);
@@ -2314,7 +2314,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean zombieHorseRidable = false;
-@@ -2260,6 +2400,7 @@ public class PurpurWorldConfig {
+@@ -2256,6 +2396,7 @@ public class PurpurWorldConfig {
public double zombieHorseMovementSpeedMin = 0.2D;
public double zombieHorseMovementSpeedMax = 0.2D;
public double zombieHorseSpawnChance = 0.0D;
@@ -2322,7 +2322,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void zombieHorseSettings() {
zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable);
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
-@@ -2277,6 +2418,7 @@ public class PurpurWorldConfig {
+@@ -2273,6 +2414,7 @@ public class PurpurWorldConfig {
zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin);
zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax);
zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
@@ -2330,7 +2330,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean zombieVillagerRidable = false;
-@@ -2288,6 +2430,7 @@ public class PurpurWorldConfig {
+@@ -2284,6 +2426,7 @@ public class PurpurWorldConfig {
public boolean zombieVillagerJockeyOnlyBaby = true;
public double zombieVillagerJockeyChance = 0.05D;
public boolean zombieVillagerJockeyTryExistingChickens = true;
@@ -2338,7 +2338,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -2303,6 +2446,7 @@ public class PurpurWorldConfig {
+@@ -2299,6 +2442,7 @@ public class PurpurWorldConfig {
zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby);
zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance);
zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens);
@@ -2346,7 +2346,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
}
public boolean zombifiedPiglinRidable = false;
-@@ -2315,6 +2459,7 @@ public class PurpurWorldConfig {
+@@ -2311,6 +2455,7 @@ public class PurpurWorldConfig {
public double zombifiedPiglinJockeyChance = 0.05D;
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
@@ -2354,7 +2354,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
-@@ -2331,5 +2476,6 @@ public class PurpurWorldConfig {
+@@ -2327,5 +2472,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/0126-Config-to-always-tame-in-Creative.patch b/patches/server/0126-Config-to-always-tame-in-Creative.patch
index 8456aa5e1..7309873b6 100644
--- a/patches/server/0126-Config-to-always-tame-in-Creative.patch
+++ b/patches/server/0126-Config-to-always-tame-in-Creative.patch
@@ -59,7 +59,7 @@ index b6602362b7b450749ae1768572658b756c4e7840..2949adfbe7c71d552a4afb6aca1c166a
this.navigation.stop();
this.setTarget((LivingEntity) null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a4402d7f5385a3f3db6b7e6d928db4a97e3d4897..8cab49bd3c087afddeec1c90e03ca8df51c7d04c 100644
+index 886203f69ec02774ef82f53d8649fa1f991a8a0f..6af8eb71bf32431ba33b206adaece0bcb4dceb80 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -118,6 +118,7 @@ public class PurpurWorldConfig {
@@ -70,7 +70,7 @@ index a4402d7f5385a3f3db6b7e6d928db4a97e3d4897..8cab49bd3c087afddeec1c90e03ca8df
public boolean boatEjectPlayersOnLand = false;
public boolean boatsDoFallDamage = false;
public boolean disableDropsOnCrammingDeath = false;
-@@ -138,6 +139,7 @@ public class PurpurWorldConfig {
+@@ -136,6 +137,7 @@ public class PurpurWorldConfig {
public int animalBreedingCooldownSeconds = 0;
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
diff --git a/patches/server/0127-End-crystal-explosion-options.patch b/patches/server/0127-End-crystal-explosion-options.patch
index 6c119fb04..9d9aa1d90 100644
--- a/patches/server/0127-End-crystal-explosion-options.patch
+++ b/patches/server/0127-End-crystal-explosion-options.patch
@@ -53,10 +53,10 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa
this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8cab49bd3c087afddeec1c90e03ca8df51c7d04c..7ffe7d46a8c7956bad8c0135c61bec3560060488 100644
+index 6af8eb71bf32431ba33b206adaece0bcb4dceb80..5690cf9b5219076c907b70b2788a7ff9cc68682b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -462,6 +462,43 @@ public class PurpurWorldConfig {
+@@ -458,6 +458,43 @@ public class PurpurWorldConfig {
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
diff --git a/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
index bd8d87582..bb22f59f3 100644
--- a/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
+++ b/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
@@ -29,10 +29,10 @@ index 6fedac6f92193d7031b6265f897d9688fd2c8780..8809b88dec7beffa569de6832f5b4581
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583949b4f69 100644
+index 5690cf9b5219076c907b70b2788a7ff9cc68682b..abd4e0b1b81c6071cba1d057732f594d53c184f3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1003,6 +1003,7 @@ public class PurpurWorldConfig {
+@@ -999,6 +999,7 @@ public class PurpurWorldConfig {
public boolean enderDragonAlwaysDropsFullExp = false;
public boolean enderDragonBypassMobGriefing = false;
public boolean enderDragonTakeDamageFromWater = false;
@@ -40,7 +40,7 @@ index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
-@@ -1021,6 +1022,7 @@ public class PurpurWorldConfig {
+@@ -1017,6 +1018,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 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583
}
public boolean endermanRidable = false;
-@@ -2303,6 +2305,7 @@ public class PurpurWorldConfig {
+@@ -2299,6 +2301,7 @@ public class PurpurWorldConfig {
public int witherHealthRegenDelay = 20;
public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false;
@@ -56,7 +56,7 @@ index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2323,6 +2326,7 @@ public class PurpurWorldConfig {
+@@ -2319,6 +2322,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/0129-Dont-run-with-scissors.patch b/patches/server/0129-Dont-run-with-scissors.patch
index 1fff19117..5331cd93b 100644
--- a/patches/server/0129-Dont-run-with-scissors.patch
+++ b/patches/server/0129-Dont-run-with-scissors.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Dont run with scissors!
inspired by https://modrinth.com/mod/dont-run-with-scissors
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 11044fe9adb311c423e570af50cb02aa43990106..747da684de2611e56c58617c2cf42547796c9660 100644
+index bbec4b963ca4b0804bce0c4cde49e1e88c0ae9f0..b7f8499cabbd28c0679d0c775b009c9cdf53b5f8 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1654,6 +1654,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -124,7 +124,7 @@ index e34584e4780f343d6c946af5377088d53818e88e..da790aac3bd8981f351b7e241015ff42
return this.inFire;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e74bd0239 100644
+index fb9f03ec90e5e5ed17886dc4e6443bd7b7d1fe32..50e8d2d54ce383f8c569ff2688c65b2a2db9f896 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -185,6 +185,7 @@ public class PurpurConfig {
@@ -149,10 +149,10 @@ index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e
public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 084298bf0c45f22e7d0ebe0ee15b8583949b4f69..018a87f5435fa47b617a1df319450e3e0802df00 100644
+index abd4e0b1b81c6071cba1d057732f594d53c184f3..8679ba225faac9f332907256c2dee8fb25b13f60 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -194,6 +194,10 @@ public class PurpurWorldConfig {
+@@ -190,6 +190,10 @@ public class PurpurWorldConfig {
public List- itemImmuneToExplosion = new ArrayList<>();
public List
- itemImmuneToFire = new ArrayList<>();
public List
- itemImmuneToLightning = new ArrayList<>();
@@ -163,7 +163,7 @@ index 084298bf0c45f22e7d0ebe0ee15b8583949b4f69..018a87f5435fa47b617a1df319450e3e
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -231,6 +235,10 @@ public class PurpurWorldConfig {
+@@ -227,6 +231,10 @@ public class PurpurWorldConfig {
Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
if (item != Items.AIR) itemImmuneToLightning.add(item);
});
diff --git a/patches/server/0130-One-Punch-Man.patch b/patches/server/0130-One-Punch-Man.patch
index 213903a50..7554f5863 100644
--- a/patches/server/0130-One-Punch-Man.patch
+++ b/patches/server/0130-One-Punch-Man.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] One Punch Man!
inspired by https://modrinth.com/mod/creative-one-punch
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6c25dabd8a70b788bc2709c272988cadc9e0b089..1cd5def5b2c976ddb63e0b323be9920232ea016f 100644
+index 4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57..7a99319d6ac85fd794fef361dd6f8092b847c744 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1441,6 +1441,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -35,10 +35,10 @@ index 6c25dabd8a70b788bc2709c272988cadc9e0b089..1cd5def5b2c976ddb63e0b323be99202
float f1 = amount; final float originalAmount = f1; // Paper - revert to vanilla #hurt - OBFHELPER
boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 018a87f5435fa47b617a1df319450e3e0802df00..bed992248d7ab9753c661ae0e0ac3041609361bd 100644
+index 8679ba225faac9f332907256c2dee8fb25b13f60..cbd0064a469c1d4add4bde06358f8e16ba33dfcf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -341,6 +341,7 @@ public class PurpurWorldConfig {
+@@ -337,6 +337,7 @@ public class PurpurWorldConfig {
public boolean teleportIfOutsideBorder = false;
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
@@ -46,7 +46,7 @@ index 018a87f5435fa47b617a1df319450e3e0802df00..bed992248d7ab9753c661ae0e0ac3041
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 {
+@@ -353,6 +354,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/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
index 9766f381b..c698afa1a 100644
--- a/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
+++ b/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
@@ -43,10 +43,10 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff
// Paper end - PlayerLaunchProjectileEvent
if (user instanceof net.minecraft.server.level.ServerPlayer) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bed992248d7ab9753c661ae0e0ac3041609361bd..7417fcbc7bf1b9da029e674564e2923a3ea3ab62 100644
+index cbd0064a469c1d4add4bde06358f8e16ba33dfcf..85c866dc2e82126c854e609e810a92e2dccbbb16 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -198,6 +198,10 @@ public class PurpurWorldConfig {
+@@ -194,6 +194,10 @@ public class PurpurWorldConfig {
public boolean ignoreScissorsInWater = false;
public boolean ignoreScissorsInLava = false;
public double scissorsRunningDamage = 1D;
@@ -57,7 +57,7 @@ index bed992248d7ab9753c661ae0e0ac3041609361bd..7417fcbc7bf1b9da029e674564e2923a
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -239,6 +243,10 @@ public class PurpurWorldConfig {
+@@ -235,6 +239,10 @@ public class PurpurWorldConfig {
ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater);
ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava);
scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
diff --git a/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch
index 42741c643..ec67c1237 100644
--- a/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch
+++ b/patches/server/0132-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 578809e48dc52dcde5866672291d70168a09811c..750f5304a9210ce56ec42a2e0d311717bd15d394 100644
+index d677c1308412e5a12046225ce2449af136b7665f..513ab3d7d3ff4fe0a5c9c609ca752357b2d8055a 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1529,7 +1529,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -18,10 +18,10 @@ index 578809e48dc52dcde5866672291d70168a09811c..750f5304a9210ce56ec42a2e0d311717
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7417fcbc7bf1b9da029e674564e2923a3ea3ab62..4eaaa65b907ac6747f5299c5e4979bae6e8b9d06 100644
+index 85c866dc2e82126c854e609e810a92e2dccbbb16..7b86ec71e8cf59561b494864b4c5eea34a1954ad 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -350,6 +350,7 @@ public class PurpurWorldConfig {
+@@ -346,6 +346,7 @@ public class PurpurWorldConfig {
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
public boolean creativeOnePunch = false;
@@ -29,7 +29,7 @@ index 7417fcbc7bf1b9da029e674564e2923a3ea3ab62..4eaaa65b907ac6747f5299c5e4979bae
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 {
+@@ -363,6 +364,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/0134-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch
index 0e66a2e51..73bc464e0 100644
--- a/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch
+++ b/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch
@@ -18,10 +18,10 @@ index d4360a62cc2514dafc02749e49674213db65cc85..22583cdb173862b021c9701d26171ca3
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 4eaaa65b907ac6747f5299c5e4979bae6e8b9d06..fadcd9822e4a19b4e0e4884805ec3ee793318e05 100644
+index 7b86ec71e8cf59561b494864b4c5eea34a1954ad..96ff0103788c002ff8a0e58cb85ca382e6c0ad57 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1054,6 +1054,8 @@ public class PurpurWorldConfig {
+@@ -1050,6 +1050,8 @@ public class PurpurWorldConfig {
public boolean endermanDespawnEvenWithBlock = false;
public boolean endermanBypassMobGriefing = false;
public boolean endermanTakeDamageFromWater = true;
@@ -30,7 +30,7 @@ index 4eaaa65b907ac6747f5299c5e4979bae6e8b9d06..fadcd9822e4a19b4e0e4884805ec3ee7
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -1063,12 +1065,18 @@ public class PurpurWorldConfig {
+@@ -1059,12 +1061,18 @@ public class PurpurWorldConfig {
set("mobs.enderman.attributes.max-health", null);
set("mobs.enderman.attributes.max_health", oldValue);
}
diff --git a/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
index 8637e6d6c..6dd8cf0e7 100644
--- a/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
+++ b/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
@@ -20,10 +20,10 @@ index 22583cdb173862b021c9701d26171ca337796557..65c7bf88071dda62034d71b6a83caedd
} 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 fadcd9822e4a19b4e0e4884805ec3ee793318e05..8eb86d2ae656f28bb0976218c53af40b14e0dbdd 100644
+index 96ff0103788c002ff8a0e58cb85ca382e6c0ad57..715ee6cfd559a0c1ce58b81cfa686b3057f05924 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1056,6 +1056,8 @@ public class PurpurWorldConfig {
+@@ -1052,6 +1052,8 @@ public class PurpurWorldConfig {
public boolean endermanTakeDamageFromWater = true;
public boolean endermanAggroEndermites = true;
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
@@ -32,7 +32,7 @@ index fadcd9822e4a19b4e0e4884805ec3ee793318e05..8eb86d2ae656f28bb0976218c53af40b
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -1077,6 +1079,8 @@ public class PurpurWorldConfig {
+@@ -1073,6 +1075,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/0136-Tick-fluids-config.patch b/patches/server/0136-Tick-fluids-config.patch
index cd2548b0a..79425181e 100644
--- a/patches/server/0136-Tick-fluids-config.patch
+++ b/patches/server/0136-Tick-fluids-config.patch
@@ -36,7 +36,7 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8eb86d2ae656f28bb0976218c53af40b14e0dbdd..167edac3a00fc097b55ac2e6b8e43b47d2593891 100644
+index 715ee6cfd559a0c1ce58b81cfa686b3057f05924..7aa0a24044e552565954dfa964686f69f924caf1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -132,6 +132,7 @@ public class PurpurWorldConfig {
@@ -45,13 +45,13 @@ index 8eb86d2ae656f28bb0976218c53af40b14e0dbdd..167edac3a00fc097b55ac2e6b8e43b47
public boolean projectilesBypassMobGriefing = false;
+ public boolean tickFluids = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
- public double voidDamageHeight = -64.0D;
- public double voidDamageDealt = 4.0D;
-@@ -153,6 +154,7 @@ public class PurpurWorldConfig {
+ public int raidCooldownSeconds = 0;
+ public int animalBreedingCooldownSeconds = 0;
+@@ -151,6 +152,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);
+ tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids);
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);
+ raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
+ animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
diff --git a/patches/server/0137-Config-to-disable-Llama-caravans.patch b/patches/server/0137-Config-to-disable-Llama-caravans.patch
index ef35019fd..a1265e399 100644
--- a/patches/server/0137-Config-to-disable-Llama-caravans.patch
+++ b/patches/server/0137-Config-to-disable-Llama-caravans.patch
@@ -32,10 +32,10 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab
this.caravanHead.caravanTail = this;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 167edac3a00fc097b55ac2e6b8e43b47d2593891..46a52af0755263bba845fee1e251423efbc7d2ae 100644
+index 7aa0a24044e552565954dfa964686f69f924caf1..98b7e8b378a4f881b0389e24ba92d72e35b273f0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig {
+@@ -1409,6 +1409,7 @@ public class PurpurWorldConfig {
public double llamaMovementSpeedMax = 0.175D;
public int llamaBreedingTicks = 6000;
public boolean llamaTakeDamageFromWater = false;
@@ -43,7 +43,7 @@ index 167edac3a00fc097b55ac2e6b8e43b47d2593891..46a52af0755263bba845fee1e251423e
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1432,6 +1433,7 @@ public class PurpurWorldConfig {
+@@ -1428,6 +1429,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/0138-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch
index e454ba052..d99468a1a 100644
--- a/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch
+++ b/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch
@@ -52,10 +52,10 @@ index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb63894
private void spawnLingeringCloud() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 46a52af0755263bba845fee1e251423efbc7d2ae..b4d5bf7483366df8515ecd7dbb27415ba8325b45 100644
+index 98b7e8b378a4f881b0389e24ba92d72e35b273f0..83d3bff6e0804f1270798227839af93696de1c55 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -900,6 +900,7 @@ public class PurpurWorldConfig {
+@@ -896,6 +896,7 @@ public class PurpurWorldConfig {
public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
@@ -63,7 +63,7 @@ index 46a52af0755263bba845fee1e251423efbc7d2ae..b4d5bf7483366df8515ecd7dbb27415b
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -915,6 +916,7 @@ public class PurpurWorldConfig {
+@@ -911,6 +912,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/0139-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch
index d34493766..c71420acf 100644
--- a/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch
+++ b/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch
@@ -31,10 +31,10 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b4d5bf7483366df8515ecd7dbb27415ba8325b45..34011e65a7bcb8e6a57cdb8776293389ea662b39 100644
+index 83d3bff6e0804f1270798227839af93696de1c55..919c30991d510f95007c18b569cb6cb2c657027b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1808,6 +1808,7 @@ public class PurpurWorldConfig {
+@@ -1804,6 +1804,7 @@ public class PurpurWorldConfig {
public double ravagerScale = 1.0D;
public boolean ravagerBypassMobGriefing = false;
public boolean ravagerTakeDamageFromWater = false;
@@ -42,7 +42,7 @@ index b4d5bf7483366df8515ecd7dbb27415ba8325b45..34011e65a7bcb8e6a57cdb8776293389
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -1821,6 +1822,23 @@ public class PurpurWorldConfig {
+@@ -1817,6 +1818,23 @@ public class PurpurWorldConfig {
ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D);
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater);
diff --git a/patches/server/0140-Sneak-to-bulk-process-composter.patch b/patches/server/0140-Sneak-to-bulk-process-composter.patch
index d0e6f587e..11f1e369c 100644
--- a/patches/server/0140-Sneak-to-bulk-process-composter.patch
+++ b/patches/server/0140-Sneak-to-bulk-process-composter.patch
@@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
int i = (Integer) state.getValue(ComposterBlock.LEVEL);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 34011e65a7bcb8e6a57cdb8776293389ea662b39..d1f5a8e74af76ee10c70598a45ff7b7aeab5139f 100644
+index 919c30991d510f95007c18b569cb6cb2c657027b..05ef6e0f31d6a37a9e8cea2f228ae101d7350bb2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -477,6 +477,11 @@ public class PurpurWorldConfig {
+@@ -473,6 +473,11 @@ public class PurpurWorldConfig {
chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop);
}
diff --git a/patches/server/0141-Config-for-skipping-night.patch b/patches/server/0141-Config-for-skipping-night.patch
index 64a06d47d..62aa8439b 100644
--- a/patches/server/0141-Config-for-skipping-night.patch
+++ b/patches/server/0141-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 a13ad5fd51e6c5643955b228c2411d60ff24d02b..9937cdc35114e5e23d57425267c956c50b843446 100644
+index e077c6cb1880ee19e696d2430b07d1101e330919..40a5107d37e908d13bd0307fc41d9a6e3faf1217 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -661,7 +661,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -18,10 +18,10 @@ index a13ad5fd51e6c5643955b228c2411d60ff24d02b..9937cdc35114e5e23d57425267c956c5
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 d1f5a8e74af76ee10c70598a45ff7b7aeab5139f..9db6f638cf9d8f41dcbe956108c02081b4380c6c 100644
+index 05ef6e0f31d6a37a9e8cea2f228ae101d7350bb2..2b316fddbed11ee439a9ca47d9915c76422426b7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -353,6 +353,7 @@ public class PurpurWorldConfig {
+@@ -349,6 +349,7 @@ public class PurpurWorldConfig {
public boolean playerFixStuckPortal = false;
public boolean creativeOnePunch = false;
public boolean playerSleepNearMonsters = false;
@@ -29,7 +29,7 @@ index d1f5a8e74af76ee10c70598a45ff7b7aeab5139f..9db6f638cf9d8f41dcbe956108c02081
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 {
+@@ -367,6 +368,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/0142-Add-config-for-villager-trading.patch b/patches/server/0142-Add-config-for-villager-trading.patch
index e37ca29c7..298ab84c1 100644
--- a/patches/server/0142-Add-config-for-villager-trading.patch
+++ b/patches/server/0142-Add-config-for-villager-trading.patch
@@ -32,10 +32,10 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247
return InteractionResult.sidedSuccess(this.level().isClientSide);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aaefcaddfd6 100644
+index 2b316fddbed11ee439a9ca47d9915c76422426b7..e321173b116c1228e56b70445402d4c87f40412c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2262,6 +2262,7 @@ public class PurpurWorldConfig {
+@@ -2258,6 +2258,7 @@ public class PurpurWorldConfig {
public boolean villagerClericFarmersThrowWarts = true;
public boolean villagerBypassMobGriefing = false;
public boolean villagerTakeDamageFromWater = false;
@@ -43,7 +43,7 @@ index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aae
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2281,6 +2282,7 @@ public class PurpurWorldConfig {
+@@ -2277,6 +2278,7 @@ public class PurpurWorldConfig {
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
@@ -51,7 +51,7 @@ index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aae
}
public boolean vindicatorRidable = false;
-@@ -2313,6 +2315,7 @@ public class PurpurWorldConfig {
+@@ -2309,6 +2311,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderFollowEmeraldBlock = false;
public boolean wanderingTraderCanBeLeashed = false;
public boolean wanderingTraderTakeDamageFromWater = false;
@@ -59,7 +59,7 @@ index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aae
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
-@@ -2327,6 +2330,7 @@ public class PurpurWorldConfig {
+@@ -2323,6 +2326,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/0143-Drowning-Settings.patch b/patches/server/0143-Drowning-Settings.patch
index 49cf59169..67fb530ee 100644
--- a/patches/server/0143-Drowning-Settings.patch
+++ b/patches/server/0143-Drowning-Settings.patch
@@ -5,10 +5,10 @@ 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 73cac6256baa32b0dbd47f06444adda2fc4e0fc1..cc4bb21903a44a7a06176274bfdaddd3626f78c7 100644
+index 901080dd8431b83b20aa5604e931519dcba82b22..657980c6c82b6a50ee9874f4aeb483b40dc24247 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3491,7 +3491,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3493,7 +3493,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public int getMaxAirSupply() {
@@ -18,7 +18,7 @@ index 73cac6256baa32b0dbd47f06444adda2fc4e0fc1..cc4bb21903a44a7a06176274bfdaddd3
public int getAirSupply() {
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 1cd5def5b2c976ddb63e0b323be9920232ea016f..0302585bd2d024aef9414b7b99c70831336194c5 100644
+index 7a99319d6ac85fd794fef361dd6f8092b847c744..d4ba4752b04ad3d1a8133c56144800af756f4aa6 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -473,7 +473,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -40,10 +40,10 @@ index 1cd5def5b2c976ddb63e0b323be9920232ea016f..0302585bd2d024aef9414b7b99c70831
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index fad95eb77677ff644a3dcf76dcf02aaefcaddfd6..d54bb97b4402cfa6fc8a1af58693dc37d73101d1 100644
+index e321173b116c1228e56b70445402d4c87f40412c..88f7a1fd41c25946110a3b4216da07ff7e81a540 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -169,6 +169,15 @@ public class PurpurWorldConfig {
+@@ -165,6 +165,15 @@ public class PurpurWorldConfig {
nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks);
}
diff --git a/patches/server/0144-Break-individual-slabs-when-sneaking.patch b/patches/server/0144-Break-individual-slabs-when-sneaking.patch
index e21e7cdeb..1fb9571b3 100644
--- a/patches/server/0144-Break-individual-slabs-when-sneaking.patch
+++ b/patches/server/0144-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 9c035bfd8c75561886d5ff63f1df4acca6f71595..fe734df8b4521101c3e55c042957a531b3bdf945 100644
+index 09ab1904ea9c587f365513150dafe434a0b56ccf..d3c49951c0bd7db4352326d3113f0ca9da393fab 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -405,6 +405,7 @@ public class ServerPlayerGameMode {
@@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d54bb97b4402cfa6fc8a1af58693dc37d73101d1..2e52cee2fb2c4e0d01e47d1cc485a72e027f0dd2 100644
+index 88f7a1fd41c25946110a3b4216da07ff7e81a540..747b53ea090bc4576e56b730716e505b584533c6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -598,6 +598,11 @@ public class PurpurWorldConfig {
+@@ -594,6 +594,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch
index cfacda790..d5e93b3c7 100644
--- a/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch
+++ b/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch
@@ -24,10 +24,10 @@ index e7bfce0534c7ef3a1480a1082ae8514caf78778b..6511b8c737a57fbc72122dd04e2b5449
return false;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 2e52cee2fb2c4e0d01e47d1cc485a72e027f0dd2..b5abcab534811be6dde85b41bbfc9a6dc09c9d3b 100644
+index 747b53ea090bc4576e56b730716e505b584533c6..f1709961989bbf75b3cca233d6304015e82e215b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -563,6 +563,13 @@ public class PurpurWorldConfig {
+@@ -559,6 +559,13 @@ public class PurpurWorldConfig {
furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath);
}
diff --git a/patches/server/0147-Option-to-make-doors-require-redstone.patch b/patches/server/0147-Option-to-make-doors-require-redstone.patch
index 227a1dcce..887f6ac43 100644
--- a/patches/server/0147-Option-to-make-doors-require-redstone.patch
+++ b/patches/server/0147-Option-to-make-doors-require-redstone.patch
@@ -82,10 +82,10 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 38fa2e38d3b83a95c0d8b9cd1cd37df9127dd1f8..7e3ba83828654d33603869ea9fce1473ab87cc4a 100644
+index 81569ed7250e2b4183727ee503f554d07eaaf4aa..c9ab556b3789866e4ec85fe785ad0d73abfb273e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -502,6 +502,16 @@ public class PurpurWorldConfig {
+@@ -498,6 +498,16 @@ public class PurpurWorldConfig {
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
diff --git a/patches/server/0149-Configurable-sponge-absorption.patch b/patches/server/0149-Configurable-sponge-absorption.patch
index 8820d6a57..7bdca04e4 100644
--- a/patches/server/0149-Configurable-sponge-absorption.patch
+++ b/patches/server/0149-Configurable-sponge-absorption.patch
@@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06
int i = aenumdirection.length;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7e3ba83828654d33603869ea9fce1473ab87cc4a..7f492cd27bd3e4031aef82bb0c20dfcc2a433dfc 100644
+index c9ab556b3789866e4ec85fe785ad0d73abfb273e..35a9b154f5e66cc6ec3298130a5e619056bae59d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -627,6 +627,13 @@ public class PurpurWorldConfig {
+@@ -623,6 +623,13 @@ public class PurpurWorldConfig {
spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
}
diff --git a/patches/server/0150-Projectile-offset-config.patch b/patches/server/0150-Projectile-offset-config.patch
index 75a6a8080..3ec43ddc4 100644
--- a/patches/server/0150-Projectile-offset-config.patch
+++ b/patches/server/0150-Projectile-offset-config.patch
@@ -18,7 +18,7 @@ index 4db2032178471860baddc6b669c9a4f8cffd084b..fc534b1f214663eb8e4fe479fed12b1d
world.playSound(
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
-index c39fa953accd6cf35672f452052cca42fe6f29d0..dbdd1cd9486d91142e1c6b8a34aafba46c3988d3 100644
+index 1467e6f2df302e0b7992dcb6c136cb626ade3d2b..4e60c2102e3e838c68e4b9db41c8bca365d22923 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
@@ -69,7 +69,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
@@ -96,10 +96,10 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580
entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7f492cd27bd3e4031aef82bb0c20dfcc2a433dfc..98847a1b630faf901eed10e5e7143d8af4f66533 100644
+index 35a9b154f5e66cc6ec3298130a5e619056bae59d..937cc90c18d42c51f709c138f0429ad4823e2141 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -452,6 +452,23 @@ public class PurpurWorldConfig {
+@@ -448,6 +448,23 @@ public class PurpurWorldConfig {
//}
}
diff --git a/patches/server/0151-Config-for-powered-rail-activation-distance.patch b/patches/server/0151-Config-for-powered-rail-activation-distance.patch
index ac67390f2..ce269a20a 100644
--- a/patches/server/0151-Config-for-powered-rail-activation-distance.patch
+++ b/patches/server/0151-Config-for-powered-rail-activation-distance.patch
@@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2
} else {
int j = pos.getX();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 98847a1b630faf901eed10e5e7143d8af4f66533..ef748ba2004601399fc47239e2fe093d89491c4f 100644
+index 937cc90c18d42c51f709c138f0429ad4823e2141..88578ee2664867594084551d6e2e937bd6dbbfcf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -613,6 +613,11 @@ public class PurpurWorldConfig {
+@@ -609,6 +609,11 @@ public class PurpurWorldConfig {
powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing);
}
diff --git a/patches/server/0152-Piglin-portal-spawn-modifier.patch b/patches/server/0152-Piglin-portal-spawn-modifier.patch
index 088d7c9c9..c53641f4a 100644
--- a/patches/server/0152-Piglin-portal-spawn-modifier.patch
+++ b/patches/server/0152-Piglin-portal-spawn-modifier.patch
@@ -18,7 +18,7 @@ Difficulties:
3 - hard
diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
-index e170176497b833e9addbdc652edcc074e598d26a..c3f37df133250e1a948f3b58d432fbee83a3c2e3 100644
+index e8cccf3d89ecef13c0523c2357ef4b07e30a25b4..971dd866fe5d6fcef573cb52582ccb7faf01b2f1 100644
--- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
@@ -77,7 +77,7 @@ public class NetherPortalBlock extends Block implements Portal {
@@ -31,10 +31,10 @@ index e170176497b833e9addbdc652edcc074e598d26a..c3f37df133250e1a948f3b58d432fbee
pos = pos.below();
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ef748ba2004601399fc47239e2fe093d89491c4f..99a0b3d9f0ca86112bdfd727a72a2facbf60b3da 100644
+index 88578ee2664867594084551d6e2e937bd6dbbfcf..b7a69af173d0dafabcde6f5267c6312fedbe0d4b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1740,6 +1740,7 @@ public class PurpurWorldConfig {
+@@ -1736,6 +1736,7 @@ public class PurpurWorldConfig {
public double piglinScale = 1.0D;
public boolean piglinBypassMobGriefing = false;
public boolean piglinTakeDamageFromWater = false;
@@ -42,7 +42,7 @@ index ef748ba2004601399fc47239e2fe093d89491c4f..99a0b3d9f0ca86112bdfd727a72a2fac
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -1753,6 +1754,7 @@ public class PurpurWorldConfig {
+@@ -1749,6 +1750,7 @@ public class PurpurWorldConfig {
piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D);
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
diff --git a/patches/server/0154-Config-for-wither-explosion-radius.patch b/patches/server/0154-Config-for-wither-explosion-radius.patch
index 72550a2b9..11bde59ac 100644
--- a/patches/server/0154-Config-for-wither-explosion-radius.patch
+++ b/patches/server/0154-Config-for-wither-explosion-radius.patch
@@ -18,10 +18,10 @@ index e472df057d087fe46bd40b798c050ed6e38a283c..999453409c19abf7f5b5c2dc39969985
if (!event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 99a0b3d9f0ca86112bdfd727a72a2facbf60b3da..a38c503ba822dee75720d021c17c4a7651bac2c7 100644
+index b7a69af173d0dafabcde6f5267c6312fedbe0d4b..9506f919b600472cef27532b2b11839abc39a14e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2437,6 +2437,7 @@ public class PurpurWorldConfig {
+@@ -2433,6 +2433,7 @@ public class PurpurWorldConfig {
public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false;
@@ -29,7 +29,7 @@ index 99a0b3d9f0ca86112bdfd727a72a2facbf60b3da..a38c503ba822dee75720d021c17c4a76
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2458,6 +2459,7 @@ public class PurpurWorldConfig {
+@@ -2454,6 +2455,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/0156-Configurable-piston-push-limit.patch b/patches/server/0156-Configurable-piston-push-limit.patch
index 8226de57c..f1a76ae8d 100644
--- a/patches/server/0156-Configurable-piston-push-limit.patch
+++ b/patches/server/0156-Configurable-piston-push-limit.patch
@@ -36,10 +36,10 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a38c503ba822dee75720d021c17c4a7651bac2c7..1ceec45b0ba2bdb20817ec4a57b58023751dc90f 100644
+index 9506f919b600472cef27532b2b11839abc39a14e..1e8212ef70684ebac8a96a48e6424ba0fe40aaf7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -608,6 +608,11 @@ public class PurpurWorldConfig {
+@@ -604,6 +604,11 @@ public class PurpurWorldConfig {
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
}
diff --git a/patches/server/0158-Configurable-mob-blindness.patch b/patches/server/0158-Configurable-mob-blindness.patch
index 9c07e0b58..a75486b02 100644
--- a/patches/server/0158-Configurable-mob-blindness.patch
+++ b/patches/server/0158-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 0302585bd2d024aef9414b7b99c70831336194c5..0b488f45c7f259ced70004909077bc5a15191580 100644
+index d4ba4752b04ad3d1a8133c56144800af756f4aa6..b0d9f432eb9ebaf88196de4f1329ef530b422ca0 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1042,6 +1042,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -28,7 +28,7 @@ index 0302585bd2d024aef9414b7b99c70831336194c5..0b488f45c7f259ced70004909077bc5a
return d0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 1ceec45b0ba2bdb20817ec4a57b58023751dc90f..126476ae43733e86b0825ea3fef2620954a10720 100644
+index 1e8212ef70684ebac8a96a48e6424ba0fe40aaf7..631829589cd84d545e911e92c5f845da3e6266e3 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 {
@@ -37,13 +37,13 @@ index 1ceec45b0ba2bdb20817ec4a57b58023751dc90f..126476ae43733e86b0825ea3fef26209
public boolean tickFluids = true;
+ public double mobsBlindnessMultiplier = 1;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
- public double voidDamageHeight = -64.0D;
- public double voidDamageDealt = 4.0D;
-@@ -157,6 +158,7 @@ public class PurpurWorldConfig {
+ public int raidCooldownSeconds = 0;
+ public int animalBreedingCooldownSeconds = 0;
+@@ -155,6 +156,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);
+ mobsBlindnessMultiplier = getDouble("gameplay-mechanics.entity-blindness-multiplier", mobsBlindnessMultiplier);
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);
+ raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
+ animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
diff --git a/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch
index 5168d551d..d8c96fe1b 100644
--- a/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch
+++ b/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch
@@ -21,10 +21,10 @@ index 902191001a7302872ff661564fb6389457abaa9c..1769c1d31bb68904be426e1069266cec
// CraftBukkit end
this.dead = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 126476ae43733e86b0825ea3fef2620954a10720..b760d2ecda916e9797422d2be96dd433d2bc711b 100644
+index 631829589cd84d545e911e92c5f845da3e6266e3..a864602ce60b06bcaa388d7d141f20290becb1ad 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -977,6 +977,7 @@ public class PurpurWorldConfig {
+@@ -973,6 +973,7 @@ public class PurpurWorldConfig {
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false;
@@ -32,7 +32,7 @@ index 126476ae43733e86b0825ea3fef2620954a10720..b760d2ecda916e9797422d2be96dd433
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -993,6 +994,7 @@ public class PurpurWorldConfig {
+@@ -989,6 +990,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/0161-Iron-golem-calm-anger-options.patch b/patches/server/0161-Iron-golem-calm-anger-options.patch
index 68bea615a..da0f0575e 100644
--- a/patches/server/0161-Iron-golem-calm-anger-options.patch
+++ b/patches/server/0161-Iron-golem-calm-anger-options.patch
@@ -25,10 +25,10 @@ index 0cf985cac3279c0cb6255f02b76a5012027cae99..446a2795aa8f2ddf472f8b379534978f
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b760d2ecda916e9797422d2be96dd433d2bc711b..8217119bee2fc38567dd583b3c2c6c15d2a67893 100644
+index a864602ce60b06bcaa388d7d141f20290becb1ad..46f84f77582a8976499444acd1b4d6e5d3ff847e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1467,6 +1467,8 @@ public class PurpurWorldConfig {
+@@ -1463,6 +1463,8 @@ public class PurpurWorldConfig {
public double ironGolemMaxHealth = 100.0D;
public double ironGolemScale = 1.0D;
public boolean ironGolemTakeDamageFromWater = false;
@@ -37,7 +37,7 @@ index b760d2ecda916e9797422d2be96dd433d2bc711b..8217119bee2fc38567dd583b3c2c6c15
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
-@@ -1480,6 +1482,8 @@ public class PurpurWorldConfig {
+@@ -1476,6 +1478,8 @@ public class PurpurWorldConfig {
ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth);
ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D);
ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater);
diff --git a/patches/server/0162-Breedable-parrots.patch b/patches/server/0162-Breedable-parrots.patch
index c02b0cc79..139feeb86 100644
--- a/patches/server/0162-Breedable-parrots.patch
+++ b/patches/server/0162-Breedable-parrots.patch
@@ -50,10 +50,10 @@ index 884fc114ef70d49fd0d64fcea46fb277950962a1..4fa32a6406e3158369064d39160e4850
@Nullable
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8217119bee2fc38567dd583b3c2c6c15d2a67893..43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5 100644
+index 46f84f77582a8976499444acd1b4d6e5d3ff847e..ba21f6e268d33c51387a47ecc6ccd59bdad1da4d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1645,6 +1645,7 @@ public class PurpurWorldConfig {
+@@ -1641,6 +1641,7 @@ public class PurpurWorldConfig {
public double parrotMaxHealth = 6.0D;
public double parrotScale = 1.0D;
public boolean parrotTakeDamageFromWater = false;
@@ -61,7 +61,7 @@ index 8217119bee2fc38567dd583b3c2c6c15d2a67893..43a7cc0a29b1dfa29b5d54a2d5e459a8
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
-@@ -1658,6 +1659,7 @@ public class PurpurWorldConfig {
+@@ -1654,6 +1655,7 @@ public class PurpurWorldConfig {
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D);
parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater);
diff --git a/patches/server/0163-Configurable-powered-rail-boost-modifier.patch b/patches/server/0163-Configurable-powered-rail-boost-modifier.patch
index 44d588654..785eaa24f 100644
--- a/patches/server/0163-Configurable-powered-rail-boost-modifier.patch
+++ b/patches/server/0163-Configurable-powered-rail-boost-modifier.patch
@@ -18,10 +18,10 @@ index d7bcfca8c79cc172bb7e4aaeee76ff393d1d2bea..8b1c00062a5272d1020bc85491d8627c
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 43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5..d275a24a3017335f147f08b4f71cdcd71435d4bd 100644
+index ba21f6e268d33c51387a47ecc6ccd59bdad1da4d..9805e85c10f6b92e3c7e109b9e7a3b0a2240b746 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -272,6 +272,7 @@ public class PurpurWorldConfig {
+@@ -268,6 +268,7 @@ public class PurpurWorldConfig {
public boolean minecartControllableFallDamage = true;
public double minecartControllableBaseSpeed = 0.1D;
public Map minecartControllableBlockSpeeds = new HashMap<>();
@@ -29,7 +29,7 @@ index 43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5..d275a24a3017335f147f08b4f71cdcd7
private void minecartSettings() {
if (PurpurConfig.version < 12) {
boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere);
-@@ -324,6 +325,7 @@ public class PurpurWorldConfig {
+@@ -320,6 +321,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/0164-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch
index b4eae6ad9..0635e1648 100644
--- a/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch
+++ b/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch
@@ -18,10 +18,10 @@ index 33c1b2b387e7412a001841d1bcbb3966c188c1a3..40cf2eb78b02adc15e44189021005f14
float f3 = f + f1;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d275a24a3017335f147f08b4f71cdcd71435d4bd..dfb38ec06614a8ef5a5a3b26f61bd68aeaec9519 100644
+index 9805e85c10f6b92e3c7e109b9e7a3b0a2240b746..5a7a7e184789ea29c56fa36735b06c41be04650e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -369,6 +369,7 @@ public class PurpurWorldConfig {
+@@ -365,6 +365,7 @@ public class PurpurWorldConfig {
public boolean creativeOnePunch = false;
public boolean playerSleepNearMonsters = false;
public boolean playersSkipNight = true;
@@ -29,7 +29,7 @@ index d275a24a3017335f147f08b4f71cdcd71435d4bd..dfb38ec06614a8ef5a5a3b26f61bd68a
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 {
+@@ -384,6 +385,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/0165-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch
index 003d4cd02..fe39aab5e 100644
--- a/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch
+++ b/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch
@@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642
BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index dfb38ec06614a8ef5a5a3b26f61bd68aeaec9519..957307bb75b7dbc3b47bb24b8f4c720ecb9f004c 100644
+index 5a7a7e184789ea29c56fa36735b06c41be04650e..f79011b7b1a6113a01ff73418c9cf1ebdb0f194e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -535,6 +535,11 @@ public class PurpurWorldConfig {
+@@ -531,6 +531,11 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch
index cb8d61ccd..99d740bab 100644
--- a/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch
+++ b/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch
@@ -31,10 +31,10 @@ index fb84af3b1709101fa572d11a1c27970a316f2eab..5e982bab268746a05b97f5b9f7142254
return false;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 957307bb75b7dbc3b47bb24b8f4c720ecb9f004c..9ab97792c94db16dfff6606ec33fd1c4db83180a 100644
+index f79011b7b1a6113a01ff73418c9cf1ebdb0f194e..514a56bdcb31c0bb0772bb003bb48a4fd8eabb50 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -786,6 +786,8 @@ public class PurpurWorldConfig {
+@@ -782,6 +782,8 @@ public class PurpurWorldConfig {
public double beeScale = 1.0D;
public int beeBreedingTicks = 6000;
public boolean beeTakeDamageFromWater = false;
@@ -43,7 +43,7 @@ index 957307bb75b7dbc3b47bb24b8f4c720ecb9f004c..9ab97792c94db16dfff6606ec33fd1c4
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -800,6 +802,8 @@ public class PurpurWorldConfig {
+@@ -796,6 +798,8 @@ public class PurpurWorldConfig {
beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater);
diff --git a/patches/server/0170-Config-MobEffect-by-world.patch b/patches/server/0170-Config-MobEffect-by-world.patch
index 99265fa2d..fb0237fbf 100644
--- a/patches/server/0170-Config-MobEffect-by-world.patch
+++ b/patches/server/0170-Config-MobEffect-by-world.patch
@@ -72,10 +72,10 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9ab97792c94db16dfff6606ec33fd1c4db83180a..370a9911b16d7b37ebd4269b114a51c65a3aaf4b 100644
+index 514a56bdcb31c0bb0772bb003bb48a4fd8eabb50..a006f0be6f04ba77322c265ca976cdad9acf4a47 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -328,6 +328,21 @@ public class PurpurWorldConfig {
+@@ -324,6 +324,21 @@ public class PurpurWorldConfig {
poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier);
}
diff --git a/patches/server/0171-Beacon-Activation-Range-Configurable.patch b/patches/server/0171-Beacon-Activation-Range-Configurable.patch
index f53021126..3f015c6f5 100644
--- a/patches/server/0171-Beacon-Activation-Range-Configurable.patch
+++ b/patches/server/0171-Beacon-Activation-Range-Configurable.patch
@@ -26,10 +26,10 @@ index 814e70f558d7a6186233da0ff86c94c95d390e09..d1fb77d83d48183a9a37dbeec7bb0fda
} else {
return effectRange;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 370a9911b16d7b37ebd4269b114a51c65a3aaf4b..acaa994f3678dde7e6febc6061a2c23974dc7f11 100644
+index a006f0be6f04ba77322c265ca976cdad9acf4a47..1d7dad18adef4aa62192730869555cd6a70d4879 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -502,6 +502,17 @@ public class PurpurWorldConfig {
+@@ -498,6 +498,17 @@ public class PurpurWorldConfig {
anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage);
}
diff --git a/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch
index dfadd0900..ddbbd0581 100644
--- a/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch
+++ b/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch
@@ -55,10 +55,10 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..b702b7270fae8fafc39588fbc39b4e00
public void eat(int food, float saturationModifier) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index acaa994f3678dde7e6febc6061a2c23974dc7f11..900d1e7f87327d869516a3feac2d47e07bf62ca7 100644
+index 1d7dad18adef4aa62192730869555cd6a70d4879..f9204b2189f4dd635e18c2620e94552f2752fd1b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -385,6 +385,8 @@ public class PurpurWorldConfig {
+@@ -381,6 +381,8 @@ public class PurpurWorldConfig {
public boolean playerSleepNearMonsters = false;
public boolean playersSkipNight = true;
public double playerCriticalDamageMultiplier = 1.5D;
@@ -67,7 +67,7 @@ index acaa994f3678dde7e6febc6061a2c23974dc7f11..900d1e7f87327d869516a3feac2d47e0
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -405,6 +407,8 @@ public class PurpurWorldConfig {
+@@ -401,6 +403,8 @@ public class PurpurWorldConfig {
playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters);
playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight);
playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier);
diff --git a/patches/server/0176-Shulker-spawn-from-bullet-options.patch b/patches/server/0176-Shulker-spawn-from-bullet-options.patch
index 39d287920..1f2baa6ab 100644
--- a/patches/server/0176-Shulker-spawn-from-bullet-options.patch
+++ b/patches/server/0176-Shulker-spawn-from-bullet-options.patch
@@ -68,10 +68,10 @@ index 0d04a0107bd1a8a2b9aeb4be55025cd554e8fb79..a050d76233e179a1456b83ccc02bb9a5
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 900d1e7f87327d869516a3feac2d47e07bf62ca7..674699477cbe2f1aa491488bbb95d819ba665707 100644
+index f9204b2189f4dd635e18c2620e94552f2752fd1b..d4c8cd37a40e90e071d1b5ebe51dab89a0c8de1e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2018,6 +2018,11 @@ public class PurpurWorldConfig {
+@@ -2014,6 +2014,11 @@ public class PurpurWorldConfig {
public double shulkerMaxHealth = 30.0D;
public double shulkerScale = 1.0D;
public boolean shulkerTakeDamageFromWater = false;
@@ -83,7 +83,7 @@ index 900d1e7f87327d869516a3feac2d47e07bf62ca7..674699477cbe2f1aa491488bbb95d819
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -2030,6 +2035,11 @@ public class PurpurWorldConfig {
+@@ -2026,6 +2031,11 @@ public class PurpurWorldConfig {
shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth);
shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE);
shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater);
diff --git a/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch
index bbaa2bf7e..4333493c1 100644
--- a/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch
+++ b/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch
@@ -18,10 +18,10 @@ index 4eef61323ba54f513e6f251ef7c804b2c91ff477..6b2235281dca67a80cb651e9f8e9bf25
public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY));
public static final Item SOUL_CAMPFIRE = registerBlock(
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 674699477cbe2f1aa491488bbb95d819ba665707..7ed6199800ae40e0f9af05e93e611ebb66c884e0 100644
+index d4c8cd37a40e90e071d1b5ebe51dab89a0c8de1e..0c44a9aeca00a4bf50f681beff60976be8ceddee 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 {
+@@ -213,6 +213,7 @@ public class PurpurWorldConfig {
public int enderPearlCooldown = 20;
public int enderPearlCooldownCreative = 20;
public float enderPearlEndermiteChance = 0.05F;
@@ -29,7 +29,7 @@ index 674699477cbe2f1aa491488bbb95d819ba665707..7ed6199800ae40e0f9af05e93e611ebb
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -262,6 +263,7 @@ public class PurpurWorldConfig {
+@@ -258,6 +259,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/0178-Option-to-make-drowned-break-doors.patch b/patches/server/0178-Option-to-make-drowned-break-doors.patch
index b1a2a802c..61cbec969 100644
--- a/patches/server/0178-Option-to-make-drowned-break-doors.patch
+++ b/patches/server/0178-Option-to-make-drowned-break-doors.patch
@@ -26,10 +26,10 @@ index 370f1b76c002f7cecf596767db717da51b2990f8..994dee36ce3aad3a0ef6a06bcaf555bd
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7ed6199800ae40e0f9af05e93e611ebb66c884e0..9c93682cf57f7c90762775c564eabb6eadd25dc8 100644
+index 0c44a9aeca00a4bf50f681beff60976be8ceddee..f3b1f853890f04ff38c300d16dc74c9b5522b1f8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1106,6 +1106,7 @@ public class PurpurWorldConfig {
+@@ -1102,6 +1102,7 @@ public class PurpurWorldConfig {
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
public boolean drownedTakeDamageFromWater = false;
@@ -37,7 +37,7 @@ index 7ed6199800ae40e0f9af05e93e611ebb66c884e0..9c93682cf57f7c90762775c564eabb6e
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
-@@ -1122,6 +1123,7 @@ public class PurpurWorldConfig {
+@@ -1118,6 +1119,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/0179-Configurable-hunger-starvation-damage.patch b/patches/server/0179-Configurable-hunger-starvation-damage.patch
index 8fbb2f869..52b90f72e 100644
--- a/patches/server/0179-Configurable-hunger-starvation-damage.patch
+++ b/patches/server/0179-Configurable-hunger-starvation-damage.patch
@@ -18,10 +18,10 @@ index b702b7270fae8fafc39588fbc39b4e0014809047..842a908051bdf6c5f0ef8ce3ac84a7ce
this.tickTimer = 0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9c93682cf57f7c90762775c564eabb6eadd25dc8..58319128d7a22bc97bdb0cfbcfb8b9c4bb23a0db 100644
+index f3b1f853890f04ff38c300d16dc74c9b5522b1f8..8640e95511f576a46c21ca140eeaf8f11a6a6e26 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2726,4 +2726,9 @@ public class PurpurWorldConfig {
+@@ -2722,4 +2722,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/0182-Tool-actionable-options.patch b/patches/server/0182-Tool-actionable-options.patch
index 701e3eccb..4217456f7 100644
--- a/patches/server/0182-Tool-actionable-options.patch
+++ b/patches/server/0182-Tool-actionable-options.patch
@@ -157,10 +157,10 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87
return InteractionResult.PASS;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 58319128d7a22bc97bdb0cfbcfb8b9c4bb23a0db..f8625595d4a4b40bdf8207fbe67da8abff61f8a1 100644
+index 8640e95511f576a46c21ca140eeaf8f11a6a6e26..e9cbac796582e1a51a19658fd8a389ad5defa747 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -501,6 +501,280 @@ public class PurpurWorldConfig {
+@@ -497,6 +497,280 @@ public class PurpurWorldConfig {
snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage);
}
diff --git a/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch
index 78d2067d3..0c726a611 100644
--- a/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch
+++ b/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch
@@ -18,10 +18,10 @@ index 3253361d91e2a2e68d354eaf3dd3e3cd486e191d..2649188930653610b8aaaeb18797c808
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f8625595d4a4b40bdf8207fbe67da8abff61f8a1..a1ae495db2a382a3e546cc7ccbe203d08562aeb5 100644
+index e9cbac796582e1a51a19658fd8a389ad5defa747..dd5d45e3b8e9acf1231df71a812a3ba2c7fe6465 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -218,6 +218,7 @@ public class PurpurWorldConfig {
+@@ -214,6 +214,7 @@ public class PurpurWorldConfig {
public int enderPearlCooldownCreative = 20;
public float enderPearlEndermiteChance = 0.05F;
public int glowBerriesEatGlowDuration = 0;
@@ -29,7 +29,7 @@ index f8625595d4a4b40bdf8207fbe67da8abff61f8a1..a1ae495db2a382a3e546cc7ccbe203d0
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -264,6 +265,7 @@ public class PurpurWorldConfig {
+@@ -260,6 +261,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/0187-Big-dripleaf-tilt-delay.patch b/patches/server/0187-Big-dripleaf-tilt-delay.patch
index dd09e49dc..80ccfd52b 100644
--- a/patches/server/0187-Big-dripleaf-tilt-delay.patch
+++ b/patches/server/0187-Big-dripleaf-tilt-delay.patch
@@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0
if (i != -1) {
world.scheduleTick(blockposition, (Block) this, i);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a1ae495db2a382a3e546cc7ccbe203d08562aeb5..5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea 100644
+index dd5d45e3b8e9acf1231df71a812a3ba2c7fe6465..85c96a67bf4c36b2e10cef1664e773ae2ea404b7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -816,6 +816,22 @@ public class PurpurWorldConfig {
+@@ -812,6 +812,22 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0188-Player-ridable-in-water-option.patch b/patches/server/0188-Player-ridable-in-water-option.patch
index c27f2bfd0..d44b0416b 100644
--- a/patches/server/0188-Player-ridable-in-water-option.patch
+++ b/patches/server/0188-Player-ridable-in-water-option.patch
@@ -23,10 +23,10 @@ index 09e1faae9c22c1062e3de5257c82b2d156e65b4f..05ed7bfd75a1e30d74b12a068303a786
if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) {
if (this.getShoulderEntityLeft().isEmpty()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea..3f94e8f226322710af2d169d5cb55afb0bc0926c 100644
+index 85c96a67bf4c36b2e10cef1664e773ae2ea404b7..9fbd76b73aa22b9bb6533ca5de5d54e9a51e70ef 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -391,6 +391,7 @@ public class PurpurWorldConfig {
+@@ -387,6 +387,7 @@ public class PurpurWorldConfig {
public double playerCriticalDamageMultiplier = 1.5D;
public int playerBurpDelay = 10;
public boolean playerBurpWhenFull = false;
@@ -34,7 +34,7 @@ index 5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea..3f94e8f226322710af2d169d5cb55afb
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -413,6 +414,7 @@ public class PurpurWorldConfig {
+@@ -409,6 +410,7 @@ public class PurpurWorldConfig {
playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier);
playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay);
playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull);
diff --git a/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch
index 69ef30ba7..acbcbb773 100644
--- a/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch
+++ b/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch
@@ -17,10 +17,10 @@ index 65c7bf88071dda62034d71b6a83caedd49d0902a..ecd117f7e3b2136fcf49384819626fe7
for (int i = 0; i < 64; ++i) {
if (this.teleport()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 3f94e8f226322710af2d169d5cb55afb0bc0926c..52771830dfc03dd48467d57bcdb07ee3b85ca9be 100644
+index 9fbd76b73aa22b9bb6533ca5de5d54e9a51e70ef..e92056e046ef3b428d933bcba39be37019c338a1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1481,6 +1481,7 @@ public class PurpurWorldConfig {
+@@ -1477,6 +1477,7 @@ public class PurpurWorldConfig {
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
public boolean endermanIgnorePlayerDragonHead = false;
public boolean endermanDisableStareAggro = false;
@@ -28,7 +28,7 @@ index 3f94e8f226322710af2d169d5cb55afb0bc0926c..52771830dfc03dd48467d57bcdb07ee3
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -1504,6 +1505,7 @@ public class PurpurWorldConfig {
+@@ -1500,6 +1501,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/0190-Add-compass-command.patch b/patches/server/0190-Add-compass-command.patch
index 8b3d8ba30..2b32a43b1 100644
--- a/patches/server/0190-Add-compass-command.patch
+++ b/patches/server/0190-Add-compass-command.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add compass command
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
-index 9f86a0397c0b64cb31dad245e2dc84d0fadd42d7..a66e2d78722847dec4e9d4aba8e6968ef009fcf4 100644
+index af5246b966f2322febb804a85e167ff580d2ab25..929835b74d539bb0af1bb99f23b50b79f457594e 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -255,6 +255,7 @@ public class Commands {
@@ -59,7 +59,7 @@ index d1d1ceabdf6b0bd254fefd64e2504f0865e0c9b2..996bfac666762096fe322e54c2134bab
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7a6c920f2 100644
+index 76f1a2b5311f46cee6ce14cdf21eb98bc5d23e7b..b8683407a2c55eefb0d20bb71401e262885e7b9d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -257,6 +257,11 @@ public class PurpurConfig {
@@ -89,10 +89,10 @@ index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7
hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector);
uptimeFormat = getString("settings.command.uptime.format", uptimeFormat);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 52771830dfc03dd48467d57bcdb07ee3b85ca9be..577aa009781c05e836feb7dbecb7b7aac44168e3 100644
+index e92056e046ef3b428d933bcba39be37019c338a1..67e8bd4ea24490fc5bf7c5b1a90baa44288a0095 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -219,6 +219,7 @@ public class PurpurWorldConfig {
+@@ -215,6 +215,7 @@ public class PurpurWorldConfig {
public float enderPearlEndermiteChance = 0.05F;
public int glowBerriesEatGlowDuration = 0;
public boolean shulkerBoxItemDropContentsWhenDestroyed = true;
@@ -100,7 +100,7 @@ index 52771830dfc03dd48467d57bcdb07ee3b85ca9be..577aa009781c05e836feb7dbecb7b7aa
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -266,6 +267,7 @@ public class PurpurWorldConfig {
+@@ -262,6 +263,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/0191-Toggle-for-kinetic-damage.patch b/patches/server/0191-Toggle-for-kinetic-damage.patch
index 9bc80fe42..12bfc88df 100644
--- a/patches/server/0191-Toggle-for-kinetic-damage.patch
+++ b/patches/server/0191-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 19dc529bef0cf9a9accb8a8615f5eeb22663d605..ad8b1ff4ea483b18cfb2f79cfe094655dec4d032 100644
+index c8e5162e3494f221ebbf538d7416c8508358546d..863bfe33d980f1988111669c6a6ae53bee9c4887 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3064,6 +3064,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -17,10 +17,10 @@ index 19dc529bef0cf9a9accb8a8615f5eeb22663d605..ad8b1ff4ea483b18cfb2f79cfe094655
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 577aa009781c05e836feb7dbecb7b7aac44168e3..aef08a0513932723edd38a029a4aef81b1f8dd5b 100644
+index 67e8bd4ea24490fc5bf7c5b1a90baa44288a0095..fcf8c6737247cfa7a207e7cfd893c4107d6c7ee8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -186,11 +186,13 @@ public class PurpurWorldConfig {
+@@ -182,11 +182,13 @@ public class PurpurWorldConfig {
public double elytraDamageMultiplyBySpeed = 0;
public int elytraDamagePerFireworkBoost = 0;
public int elytraDamagePerTridentBoost = 0;
diff --git a/patches/server/0192-Add-Option-for-disable-observer-clocks.patch b/patches/server/0192-Add-Option-for-disable-observer-clocks.patch
index 6f35811d4..e227bb83e 100644
--- a/patches/server/0192-Add-Option-for-disable-observer-clocks.patch
+++ b/patches/server/0192-Add-Option-for-disable-observer-clocks.patch
@@ -18,10 +18,10 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index aef08a0513932723edd38a029a4aef81b1f8dd5b..54de76044ba0b9fad821382165af89453ea28019 100644
+index fcf8c6737247cfa7a207e7cfd893c4107d6c7ee8..f498dbe3ff66723bc68ff3b8b2003ff062d96e05 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -366,6 +366,11 @@ public class PurpurWorldConfig {
+@@ -362,6 +362,11 @@ public class PurpurWorldConfig {
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);
}
diff --git a/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch
index 68ea97023..d59278eef 100644
--- a/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch
+++ b/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch
@@ -18,10 +18,10 @@ index 3c4cff3f095cdf2dd74df7bf4bb8f3d5600b342d..9bb75b49ea2d0bd8aafbe537b65f86eb
return InteractionResult.SUCCESS;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 54de76044ba0b9fad821382165af89453ea28019..425f9ae808fa5abbce51fe39c026b5108765ed34 100644
+index f498dbe3ff66723bc68ff3b8b2003ff062d96e05..91d40596ad0d52066a2ec81392443a3e0d661fe7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2984,6 +2984,8 @@ public class PurpurWorldConfig {
+@@ -2980,6 +2980,8 @@ public class PurpurWorldConfig {
public double zombieVillagerJockeyChance = 0.05D;
public boolean zombieVillagerJockeyTryExistingChickens = true;
public boolean zombieVillagerTakeDamageFromWater = false;
@@ -30,7 +30,7 @@ index 54de76044ba0b9fad821382165af89453ea28019..425f9ae808fa5abbce51fe39c026b510
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -3000,6 +3002,8 @@ public class PurpurWorldConfig {
+@@ -2996,6 +2998,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/0194-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch
index 518ce25ed..3b2de1e47 100644
--- a/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch
+++ b/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch
@@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7
if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) {
return false;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 425f9ae808fa5abbce51fe39c026b5108765ed34..5223da9ee6ec5f80246e2e1aa0319ab793fd1da6 100644
+index 91d40596ad0d52066a2ec81392443a3e0d661fe7..69f412e1dfaa1f44a02073f98fb7543d77b90d74 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1002,9 +1002,13 @@ public class PurpurWorldConfig {
+@@ -998,9 +998,13 @@ public class PurpurWorldConfig {
public int spongeAbsorptionArea = 65;
public int spongeAbsorptionRadius = 6;
diff --git a/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch
index 5d5126b71..a13e984ce 100644
--- a/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch
+++ b/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch
@@ -18,10 +18,10 @@ index c0d5fc670ff428a4293e8965068f52449a5c8b47..8d9154fc197e8604a5b07efe6b2aa76d
// this.level().globalLevelEvent(1023, new BlockPosition(this), 0);
int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5223da9ee6ec5f80246e2e1aa0319ab793fd1da6..36ebc5ea1c84d470372e9a8596084c0b9960efb7 100644
+index 69f412e1dfaa1f44a02073f98fb7543d77b90d74..bceb28015c843555fe5a63ecff34078d81f9df47 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2819,6 +2819,7 @@ public class PurpurWorldConfig {
+@@ -2815,6 +2815,7 @@ public class PurpurWorldConfig {
public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false;
public float witherExplosionRadius = 1.0F;
@@ -29,7 +29,7 @@ index 5223da9ee6ec5f80246e2e1aa0319ab793fd1da6..36ebc5ea1c84d470372e9a8596084c0b
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2841,6 +2842,7 @@ public class PurpurWorldConfig {
+@@ -2837,6 +2838,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/0196-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch
index 253c2e8d1..6d2529bab 100644
--- a/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch
+++ b/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch
@@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62
return false;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 36ebc5ea1c84d470372e9a8596084c0b9960efb7..d54414dcb95fe37f76c5abb8ee992e06d81c451b 100644
+index bceb28015c843555fe5a63ecff34078d81f9df47..be92f65edf53b8862a196b1b97ed7720f4bb8c34 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -843,6 +843,11 @@ public class PurpurWorldConfig {
+@@ -839,6 +839,11 @@ public class PurpurWorldConfig {
});
}
diff --git a/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch
index 92b48a568..baebfabee 100644
--- a/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch
+++ b/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch
@@ -18,10 +18,10 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d54414dcb95fe37f76c5abb8ee992e06d81c451b..027ae0f906363eaa86102c2f23eb03f2c6bcd3aa 100644
+index be92f65edf53b8862a196b1b97ed7720f4bb8c34..4188889a54c2a18b10c6cc27cf32e0bb81c05c12 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -401,6 +401,7 @@ public class PurpurWorldConfig {
+@@ -397,6 +397,7 @@ public class PurpurWorldConfig {
public int playerBurpDelay = 10;
public boolean playerBurpWhenFull = false;
public boolean playerRidableInWater = false;
@@ -29,7 +29,7 @@ index d54414dcb95fe37f76c5abb8ee992e06d81c451b..027ae0f906363eaa86102c2f23eb03f2
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -424,6 +425,7 @@ public class PurpurWorldConfig {
+@@ -420,6 +421,7 @@ public class PurpurWorldConfig {
playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay);
playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull);
playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater);
diff --git a/patches/server/0198-Conduit-behavior-configuration.patch b/patches/server/0198-Conduit-behavior-configuration.patch
index 338b4eb0d..8c0d17f3a 100644
--- a/patches/server/0198-Conduit-behavior-configuration.patch
+++ b/patches/server/0198-Conduit-behavior-configuration.patch
@@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 027ae0f906363eaa86102c2f23eb03f2c6bcd3aa..106b6563e6ab69d729b8cd20ae1122cc86137afb 100644
+index 4188889a54c2a18b10c6cc27cf32e0bb81c05c12..32aacbcc5398d6d22471e7c61b617daa61995f28 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -3053,4 +3053,27 @@ public class PurpurWorldConfig {
+@@ -3049,4 +3049,27 @@ public class PurpurWorldConfig {
private void hungerSettings() {
hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage);
}
diff --git a/patches/server/0199-Cauldron-fill-chances.patch b/patches/server/0199-Cauldron-fill-chances.patch
index fe21e0825..51d33b20c 100644
--- a/patches/server/0199-Cauldron-fill-chances.patch
+++ b/patches/server/0199-Cauldron-fill-chances.patch
@@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3
if (dripChance < f1) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 106b6563e6ab69d729b8cd20ae1122cc86137afb..791a2a91be714844d699e0c6cd15f71c31201c59 100644
+index 32aacbcc5398d6d22471e7c61b617daa61995f28..2d4bc3018d5f892276327d8f923e58dfb1d1fd6c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -3076,4 +3076,15 @@ public class PurpurWorldConfig {
+@@ -3072,4 +3072,15 @@ public class PurpurWorldConfig {
});
conduitBlocks = conduitBlockList.toArray(Block[]::new);
}
diff --git a/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch
index c026d6ead..06c6c3e6c 100644
--- a/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch
+++ b/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch
@@ -18,19 +18,19 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669
&& pathType != PathType.POWDER_SNOW) {
node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 791a2a91be714844d699e0c6cd15f71c31201c59..a8fa9bd998f24bdb420225b426addce5b005f8ad 100644
+index 2d4bc3018d5f892276327d8f923e58dfb1d1fd6c..b7dcce01b812f1b67656ca1fb3d5b7b087d50c86 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -141,6 +141,7 @@ public class PurpurWorldConfig {
- public double voidDamageDealt = 4.0D;
+@@ -139,6 +139,7 @@ public class PurpurWorldConfig {
+ public double tridentLoyaltyVoidReturnHeight = 0.0D;
public int raidCooldownSeconds = 0;
public int animalBreedingCooldownSeconds = 0;
+ public boolean mobsIgnoreRails = false;
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 {
- voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt);
+@@ -160,6 +161,7 @@ public class PurpurWorldConfig {
+ tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
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/0201-Shulker-change-color-with-dye.patch b/patches/server/0201-Shulker-change-color-with-dye.patch
index 3262819aa..ef44d020f 100644
--- a/patches/server/0201-Shulker-change-color-with-dye.patch
+++ b/patches/server/0201-Shulker-change-color-with-dye.patch
@@ -29,10 +29,10 @@ index 6f1deb4d26c851ca99fbadf1eb5b7847eadbf25b..099d6ce14d9c2fa0af1e9bf96c09cd3d
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a8fa9bd998f24bdb420225b426addce5b005f8ad..82f64caa2a68db0229fa5489c1bfdbda932ef0f8 100644
+index b7dcce01b812f1b67656ca1fb3d5b7b087d50c86..1fe3e9ca519d339a2a8258e69e6bf18aa75e8b1b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2345,6 +2345,7 @@ public class PurpurWorldConfig {
+@@ -2341,6 +2341,7 @@ public class PurpurWorldConfig {
public double shulkerSpawnFromBulletNearbyRange = 8.0D;
public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0";
public boolean shulkerSpawnFromBulletRandomColor = false;
@@ -40,7 +40,7 @@ index a8fa9bd998f24bdb420225b426addce5b005f8ad..82f64caa2a68db0229fa5489c1bfdbda
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -2362,6 +2363,7 @@ public class PurpurWorldConfig {
+@@ -2358,6 +2359,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/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
index 91cfa38bb..17c765ef0 100644
--- a/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
+++ b/patches/server/0204-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 76a1875253af0e3c343b471f886946fa61e880de..7ee54bc8b1ce7524c4c61c8e3261380205f2c268 100644
+index c31fd59a311e3e131c8a5fee9f66619f1761ab06..4cae0fbd061b76b7bf9e42fa8c6560721fd4b19c 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1230,6 +1230,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -25,10 +25,10 @@ index 76a1875253af0e3c343b471f886946fa61e880de..7ee54bc8b1ce7524c4c61c8e32613802
// 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 82f64caa2a68db0229fa5489c1bfdbda932ef0f8..5e7ae30b6238b744e31719ddf0d7c2df3785b901 100644
+index 1fe3e9ca519d339a2a8258e69e6bf18aa75e8b1b..d6e4b8272636388a68f747ace52233cc12e8b5af 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -142,6 +142,8 @@ public class PurpurWorldConfig {
+@@ -140,6 +140,8 @@ public class PurpurWorldConfig {
public int raidCooldownSeconds = 0;
public int animalBreedingCooldownSeconds = 0;
public boolean mobsIgnoreRails = false;
@@ -37,7 +37,7 @@ index 82f64caa2a68db0229fa5489c1bfdbda932ef0f8..5e7ae30b6238b744e31719ddf0d7c2df
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
-@@ -166,6 +168,8 @@ public class PurpurWorldConfig {
+@@ -162,6 +164,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/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
index bd068566f..c93d7474a 100644
--- a/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
+++ b/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
@@ -50,10 +50,10 @@ index 223259e7a09ada681b6181c898f6857888594f85..7d58a95f7ae8983b466b275f4f82597d
.sound(SoundType.FLOWERING_AZALEA)
.noOcclusion()
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5e7ae30b6238b744e31719ddf0d7c2df3785b901..42961c10933dc7f1f56aa33a865ff260addb79d7 100644
+index d6e4b8272636388a68f747ace52233cc12e8b5af..bb904fb021864b9544bf89907879b4af81638d96 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -803,6 +803,11 @@ public class PurpurWorldConfig {
+@@ -799,6 +799,11 @@ public class PurpurWorldConfig {
anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage);
}
@@ -65,7 +65,7 @@ index 5e7ae30b6238b744e31719ddf0d7c2df3785b901..42961c10933dc7f1f56aa33a865ff260
public int beaconLevelOne = 20;
public int beaconLevelTwo = 30;
public int beaconLevelThree = 40;
-@@ -940,6 +945,11 @@ public class PurpurWorldConfig {
+@@ -936,6 +941,11 @@ public class PurpurWorldConfig {
farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling);
}
diff --git a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch
index d9bfbd8bb..3b62f4c92 100644
--- a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch
+++ b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch
@@ -36,7 +36,7 @@ index d3c49951c0bd7db4352326d3113f0ca9da393fab..28731f0c5b0ba63fa8d5ce3ee580bf31
+ // 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 d806f43e76d15da500c1c04392aad483ddcd8a9a..636c9a47585890d6c6c609e491f0d17be4bf52c7 100644
+index b7f8499cabbd28c0679d0c775b009c9cdf53b5f8..cdb5062d4d6325ada90dec3d4de6c0fd7546e8ab 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2075,6 +2075,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -48,10 +48,10 @@ index d806f43e76d15da500c1c04392aad483ddcd8a9a..636c9a47585890d6c6c609e491f0d17b
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 42961c10933dc7f1f56aa33a865ff260addb79d7..31b014854c6e6bf64e8ccfc0dab5677850ad746e 100644
+index bb904fb021864b9544bf89907879b4af81638d96..7919535ad59a5acaaf6a3c63f9c44b4351364b1b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -408,6 +408,7 @@ public class PurpurWorldConfig {
+@@ -404,6 +404,7 @@ public class PurpurWorldConfig {
public boolean playerBurpWhenFull = false;
public boolean playerRidableInWater = false;
public boolean playerRemoveBindingWithWeakness = false;
@@ -59,7 +59,7 @@ index 42961c10933dc7f1f56aa33a865ff260addb79d7..31b014854c6e6bf64e8ccfc0dab56778
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -432,6 +433,7 @@ public class PurpurWorldConfig {
+@@ -428,6 +429,7 @@ public class PurpurWorldConfig {
playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull);
playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater);
playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness);
diff --git a/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch
index 4c33069cc..38bc28cc0 100644
--- a/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch
+++ b/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch
@@ -48,10 +48,10 @@ index c7bc9e0152419aa44fd2a4dcf2ce1f0b972e432e..ffc29ab9105b20aba15a0ce12d5ec7fa
public static AttributeSupplier.Builder createAttributes() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 31b014854c6e6bf64e8ccfc0dab5677850ad746e..291e9bf78caf6b19ff800b520ccdd25bf86c0ba0 100644
+index 7919535ad59a5acaaf6a3c63f9c44b4351364b1b..6bfd6d4046170025670c13acea0661614cbf85c0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1383,6 +1383,7 @@ public class PurpurWorldConfig {
+@@ -1379,6 +1379,7 @@ public class PurpurWorldConfig {
public double dolphinScale = 1.0D;
public boolean dolphinDisableTreasureSearching = false;
public boolean dolphinTakeDamageFromWater = false;
@@ -59,7 +59,7 @@ index 31b014854c6e6bf64e8ccfc0dab5677850ad746e..291e9bf78caf6b19ff800b520ccdd25b
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -1398,6 +1399,7 @@ public class PurpurWorldConfig {
+@@ -1394,6 +1395,7 @@ public class PurpurWorldConfig {
dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D);
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater);
diff --git a/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch
index 95cbd4e1f..b0df3561e 100644
--- a/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch
+++ b/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch
@@ -61,10 +61,10 @@ index 2b1b1243fa1e60985ab6fcd0dda9f71db7e3352c..a9820dda0ddf1863080f4169d70eff9c
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 291e9bf78caf6b19ff800b520ccdd25bf86c0ba0..15f6ec51cbfe4aae5523749f71d10361fdf0744d 100644
+index 6bfd6d4046170025670c13acea0661614cbf85c0..df8cdde975785ef6578964b53f26125aff2b897e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1328,7 +1328,14 @@ public class PurpurWorldConfig {
+@@ -1324,7 +1324,14 @@ public class PurpurWorldConfig {
public int cowFeedMushrooms = 0;
public int cowBreedingTicks = 6000;
public boolean cowTakeDamageFromWater = false;
@@ -79,7 +79,7 @@ index 291e9bf78caf6b19ff800b520ccdd25bf86c0ba0..15f6ec51cbfe4aae5523749f71d10361
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
cowControllable = getBoolean("mobs.cow.controllable", cowControllable);
-@@ -1342,6 +1349,8 @@ public class PurpurWorldConfig {
+@@ -1338,6 +1345,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/0209-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch
index 3f20e2b78..0b91bb1f8 100644
--- a/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch
+++ b/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch
@@ -22,10 +22,10 @@ index 671d1dafbfe2f8ba24096f78e2661014d00a5e09..cef163bc12629d538582d7735ed47bd3
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 15f6ec51cbfe4aae5523749f71d10361fdf0744d..218fd4a054f70f33f4e3f6d65f43815edfe8c7ae 100644
+index df8cdde975785ef6578964b53f26125aff2b897e..15dfbe7cf0647c2e9b9b8991076de418276fe209 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -822,6 +822,7 @@ public class PurpurWorldConfig {
+@@ -818,6 +818,7 @@ public class PurpurWorldConfig {
}
public boolean bedExplode = true;
@@ -33,7 +33,7 @@ index 15f6ec51cbfe4aae5523749f71d10361fdf0744d..218fd4a054f70f33f4e3f6d65f43815e
public double bedExplosionPower = 5.0D;
public boolean bedExplosionFire = true;
public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
-@@ -832,6 +833,7 @@ public class PurpurWorldConfig {
+@@ -828,6 +829,7 @@ public class PurpurWorldConfig {
}
}
bedExplode = getBoolean("blocks.bed.explode", bedExplode);
diff --git a/patches/server/0210-Halloween-options-and-optimizations.patch b/patches/server/0210-Halloween-options-and-optimizations.patch
index 56b2e27c8..d046c5ab9 100644
--- a/patches/server/0210-Halloween-options-and-optimizations.patch
+++ b/patches/server/0210-Halloween-options-and-optimizations.patch
@@ -60,10 +60,10 @@ index 4e7b67e5d6b26d1d0523dfed7f0d029b363fb0ef..b9439e7f261cd130648d6397a57156e9
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 218fd4a054f70f33f4e3f6d65f43815edfe8c7ae..e506e6f2a09b2c2f5d9bdbdbd7634e0fdc399d64 100644
+index 15dfbe7cf0647c2e9b9b8991076de418276fe209..5eb00f9c8e37d84f9ff4825a6fa60f8f1fe7d4b4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1748,6 +1748,13 @@ public class PurpurWorldConfig {
+@@ -1744,6 +1744,13 @@ public class PurpurWorldConfig {
guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater);
}
diff --git a/patches/server/0213-Campfire-option-for-lit-when-placed.patch b/patches/server/0213-Campfire-option-for-lit-when-placed.patch
index ad34eb450..c5242e724 100644
--- a/patches/server/0213-Campfire-option-for-lit-when-placed.patch
+++ b/patches/server/0213-Campfire-option-for-lit-when-placed.patch
@@ -18,10 +18,10 @@ index 7f6058f4def83867971121751acd51c398583651..5a49daf7b6bf9e0ec3d50494287a620d
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e506e6f2a09b2c2f5d9bdbdbd7634e0fdc399d64..34ac5e517a50e166df1da796f2a2dcc7326f5d79 100644
+index 5eb00f9c8e37d84f9ff4825a6fa60f8f1fe7d4b4..03c968aae2d8f3867e8be002bbfafd3b592b8ceb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -865,6 +865,11 @@ public class PurpurWorldConfig {
+@@ -861,6 +861,11 @@ public class PurpurWorldConfig {
cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors);
}
diff --git a/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch
index fff27b685..0278f2790 100644
--- a/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch
+++ b/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch
@@ -46,10 +46,10 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a
protected void onHit(HitResult hitResult) {
super.onHit(hitResult);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 34ac5e517a50e166df1da796f2a2dcc7326f5d79..d595c6eb65ef7da06c015684ea54525f128ae5c6 100644
+index 03c968aae2d8f3867e8be002bbfafd3b592b8ceb..5e5dc620e231858b20f308a2e3f15ca01b87fb48 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -228,6 +228,9 @@ public class PurpurWorldConfig {
+@@ -224,6 +224,9 @@ public class PurpurWorldConfig {
public int glowBerriesEatGlowDuration = 0;
public boolean shulkerBoxItemDropContentsWhenDestroyed = true;
public boolean compassItemShowsBossBar = false;
@@ -59,7 +59,7 @@ index 34ac5e517a50e166df1da796f2a2dcc7326f5d79..d595c6eb65ef7da06c015684ea54525f
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
-@@ -276,6 +279,9 @@ public class PurpurWorldConfig {
+@@ -272,6 +275,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/0215-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch
index 380342ee3..494d5b499 100644
--- a/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch
+++ b/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch
@@ -18,10 +18,10 @@ index 9bb75b49ea2d0bd8aafbe537b65f86eb04f6cfe2..612907fe87e46b5b13ed80635f203fa9
if (!this.level().isClientSide) {
this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d595c6eb65ef7da06c015684ea54525f128ae5c6..9eb7872725366fc759fc59509ebae65e7dfb303f 100644
+index 5e5dc620e231858b20f308a2e3f15ca01b87fb48..154a75f2418abdab1da4dd752594296589d90534 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -3050,6 +3050,7 @@ public class PurpurWorldConfig {
+@@ -3046,6 +3046,7 @@ public class PurpurWorldConfig {
public boolean zombieVillagerTakeDamageFromWater = false;
public int zombieVillagerCuringTimeMin = 3600;
public int zombieVillagerCuringTimeMax = 6000;
@@ -29,7 +29,7 @@ index d595c6eb65ef7da06c015684ea54525f128ae5c6..9eb7872725366fc759fc59509ebae65e
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -3068,6 +3069,7 @@ public class PurpurWorldConfig {
+@@ -3064,6 +3065,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/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch
index 536928504..5d94239ea 100644
--- a/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch
+++ b/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch
@@ -135,7 +135,7 @@ index 7dfabb11d3c8112f6daef35d204a2e324f4ddb5e..a7b6c20afd9ec3fe61d2bdf42f96398c
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9eb7872725366fc759fc59509ebae65e7dfb303f..5cb9f035f2de41d486f456bf3003019eb64725c7 100644
+index 154a75f2418abdab1da4dd752594296589d90534..3ad8b463f21b196a9c23bc91dfc4384a31f8fb21 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -133,6 +133,8 @@ public class PurpurWorldConfig {
@@ -147,7 +147,7 @@ index 9eb7872725366fc759fc59509ebae65e7dfb303f..5cb9f035f2de41d486f456bf3003019e
public boolean projectilesBypassMobGriefing = false;
public boolean tickFluids = true;
public double mobsBlindnessMultiplier = 1;
-@@ -158,6 +160,14 @@ public class PurpurWorldConfig {
+@@ -156,6 +158,14 @@ public class PurpurWorldConfig {
imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
diff --git a/patches/server/0217-Signs-allow-color-codes.patch b/patches/server/0217-Signs-allow-color-codes.patch
index 7a1fde82a..9b8f53bf6 100644
--- a/patches/server/0217-Signs-allow-color-codes.patch
+++ b/patches/server/0217-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 552c4baba3d4562afdc1b253f6949371b654edac..6482e1985654afea2e6d89fe0a9c2b6b7b3407fa 100644
+index 996bfac666762096fe322e54c2134bab0c08c950..6f6b9dbfa8bf4d67a9157ec870a4f14a8002ac01 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1707,6 +1707,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -17,7 +17,7 @@ index 552c4baba3d4562afdc1b253f6949371b654edac..6482e1985654afea2e6d89fe0a9c2b6b
this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front));
}
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
-index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c1503ebebd51 100644
+index 3070cd2b588f5a69fd8c0d3551e16251680d8c27..c9a1c071780351b584ad8e071ddc26f9a27e5964 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
@@ -201,16 +201,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
@@ -84,10 +84,10 @@ index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c150
public ClientboundBlockEntityDataPacket getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5cb9f035f2de41d486f456bf3003019eb64725c7..e83dd08d7a74773c4069e076416cbbdc1135e9fa 100644
+index 3ad8b463f21b196a9c23bc91dfc4384a31f8fb21..facbd1fe9ef8bc0320f84035effe130d9b222d49 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1038,6 +1038,11 @@ public class PurpurWorldConfig {
+@@ -1034,6 +1034,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0219-Mobs-always-drop-experience.patch b/patches/server/0219-Mobs-always-drop-experience.patch
index 030a3ccd7..daae02575 100644
--- a/patches/server/0219-Mobs-always-drop-experience.patch
+++ b/patches/server/0219-Mobs-always-drop-experience.patch
@@ -901,7 +901,7 @@ index 69d7594a7495cfefdd32a409b2bc71c0958556d0..40c00f73502be66f2a0f3cdb36b963fb
public boolean dismountsUnderwater() {
return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java
-index dc832c9d3ef797580785b2b61abbb93b629cb80e..44fc01ef40ae4cf7a5c884a9e8c6d6431247a496 100644
+index 9dcc0ecf276bfbe4b6eeecc783c52779d2b93b78..5f1e8817f959cc39f7df75df2b5bae7014dc35d1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java
@@ -79,6 +79,11 @@ public class Spider extends Monster {
@@ -1029,7 +1029,7 @@ index 3c9c32f09b3c60b52cd2e678e3c9e328156d44d0..6817f88c422480f201552300ae780533
protected Brain.Provider brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index 29cbb9ae004f657ff3aa6db379716472dc0bbf2f..30964cba8c9c071554c2b5e7a7d9ad20324f92ec 100644
+index b9439e7f261cd130648d6397a57156e9ed7677d3..479232d8dfaabdb3da5b825969d377aa437ea7d3 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -149,6 +149,11 @@ public class Zombie extends Monster {
@@ -1157,10 +1157,10 @@ index 6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba..d342752271c76b447bb8cde50d574072
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99827a9a2d 100644
+index facbd1fe9ef8bc0320f84035effe130d9b222d49..1e34756123f18b27b3328c409b22c11737dad035 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1125,6 +1125,7 @@ public class PurpurWorldConfig {
+@@ -1121,6 +1121,7 @@ public class PurpurWorldConfig {
public double axolotlScale = 1.0D;
public int axolotlBreedingTicks = 6000;
public boolean axolotlTakeDamageFromWater = false;
@@ -1168,7 +1168,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void axolotlSettings() {
axolotlRidable = getBoolean("mobs.axolotl.ridable", axolotlRidable);
axolotlControllable = getBoolean("mobs.axolotl.controllable", axolotlControllable);
-@@ -1132,6 +1133,7 @@ public class PurpurWorldConfig {
+@@ -1128,6 +1129,7 @@ public class PurpurWorldConfig {
axolotlScale = Mth.clamp(getDouble("mobs.axolotl.attributes.scale", axolotlScale), 0.0625D, 16.0D);
axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks);
axolotlTakeDamageFromWater = getBoolean("mobs.axolotl.takes-damage-from-water", axolotlTakeDamageFromWater);
@@ -1176,7 +1176,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean batRidable = false;
-@@ -1148,6 +1150,7 @@ public class PurpurWorldConfig {
+@@ -1144,6 +1146,7 @@ public class PurpurWorldConfig {
public double batArmorToughness = 0.0D;
public double batAttackKnockback = 0.0D;
public boolean batTakeDamageFromWater = false;
@@ -1184,7 +1184,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void batSettings() {
batRidable = getBoolean("mobs.bat.ridable", batRidable);
batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater);
-@@ -1168,6 +1171,7 @@ public class PurpurWorldConfig {
+@@ -1164,6 +1167,7 @@ public class PurpurWorldConfig {
batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness);
batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback);
batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater);
@@ -1192,7 +1192,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean beeRidable = false;
-@@ -1180,6 +1184,7 @@ public class PurpurWorldConfig {
+@@ -1176,6 +1180,7 @@ public class PurpurWorldConfig {
public boolean beeTakeDamageFromWater = false;
public boolean beeCanWorkAtNight = false;
public boolean beeCanWorkInRain = false;
@@ -1200,7 +1200,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -1196,6 +1201,7 @@ public class PurpurWorldConfig {
+@@ -1192,6 +1197,7 @@ public class PurpurWorldConfig {
beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater);
beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight);
beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain);
@@ -1208,7 +1208,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean blazeRidable = false;
-@@ -1205,6 +1211,7 @@ public class PurpurWorldConfig {
+@@ -1201,6 +1207,7 @@ public class PurpurWorldConfig {
public double blazeMaxHealth = 20.0D;
public double blazeScale = 1.0D;
public boolean blazeTakeDamageFromWater = true;
@@ -1216,7 +1216,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void blazeSettings() {
blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable);
blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater);
-@@ -1218,6 +1225,7 @@ public class PurpurWorldConfig {
+@@ -1214,6 +1221,7 @@ public class PurpurWorldConfig {
blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth);
blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D);
blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater);
@@ -1224,7 +1224,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean boggedRidable = false;
-@@ -1263,6 +1271,7 @@ public class PurpurWorldConfig {
+@@ -1259,6 +1267,7 @@ public class PurpurWorldConfig {
public int catBreedingTicks = 6000;
public DyeColor catDefaultCollarColor = DyeColor.RED;
public boolean catTakeDamageFromWater = false;
@@ -1232,7 +1232,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
-@@ -1284,6 +1293,7 @@ public class PurpurWorldConfig {
+@@ -1280,6 +1289,7 @@ public class PurpurWorldConfig {
catDefaultCollarColor = DyeColor.RED;
}
catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater);
@@ -1240,7 +1240,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean caveSpiderRidable = false;
-@@ -1292,6 +1302,7 @@ public class PurpurWorldConfig {
+@@ -1288,6 +1298,7 @@ public class PurpurWorldConfig {
public double caveSpiderMaxHealth = 12.0D;
public double caveSpiderScale = 1.0D;
public boolean caveSpiderTakeDamageFromWater = false;
@@ -1248,7 +1248,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void caveSpiderSettings() {
caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable);
caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater);
-@@ -1304,6 +1315,7 @@ public class PurpurWorldConfig {
+@@ -1300,6 +1311,7 @@ public class PurpurWorldConfig {
caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth);
caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D);
caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater);
@@ -1256,7 +1256,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean chickenRidable = false;
-@@ -1314,6 +1326,7 @@ public class PurpurWorldConfig {
+@@ -1310,6 +1322,7 @@ public class PurpurWorldConfig {
public boolean chickenRetaliate = false;
public int chickenBreedingTicks = 6000;
public boolean chickenTakeDamageFromWater = false;
@@ -1264,7 +1264,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
-@@ -1328,6 +1341,7 @@ public class PurpurWorldConfig {
+@@ -1324,6 +1337,7 @@ public class PurpurWorldConfig {
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks);
chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater);
@@ -1272,7 +1272,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean codRidable = false;
-@@ -1335,6 +1349,7 @@ public class PurpurWorldConfig {
+@@ -1331,6 +1345,7 @@ public class PurpurWorldConfig {
public double codMaxHealth = 3.0D;
public double codScale = 1.0D;
public boolean codTakeDamageFromWater = false;
@@ -1280,7 +1280,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void codSettings() {
codRidable = getBoolean("mobs.cod.ridable", codRidable);
codControllable = getBoolean("mobs.cod.controllable", codControllable);
-@@ -1346,6 +1361,7 @@ public class PurpurWorldConfig {
+@@ -1342,6 +1357,7 @@ public class PurpurWorldConfig {
codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth);
codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D);
codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater);
@@ -1288,7 +1288,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean cowRidable = false;
-@@ -1358,6 +1374,7 @@ public class PurpurWorldConfig {
+@@ -1354,6 +1370,7 @@ public class PurpurWorldConfig {
public boolean cowTakeDamageFromWater = false;
public double cowNaturallyAggressiveToPlayersChance = 0.0D;
public double cowNaturallyAggressiveToPlayersDamage = 2.0D;
@@ -1296,7 +1296,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void cowSettings() {
if (PurpurConfig.version < 22) {
double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance);
-@@ -1379,6 +1396,7 @@ public class PurpurWorldConfig {
+@@ -1375,6 +1392,7 @@ public class PurpurWorldConfig {
cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater);
cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance);
cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage);
@@ -1304,7 +1304,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean creeperRidable = false;
-@@ -1392,6 +1410,7 @@ public class PurpurWorldConfig {
+@@ -1388,6 +1406,7 @@ public class PurpurWorldConfig {
public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false;
public boolean creeperHealthRadius = false;
@@ -1312,7 +1312,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -1409,6 +1428,7 @@ public class PurpurWorldConfig {
+@@ -1405,6 +1424,7 @@ public class PurpurWorldConfig {
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
@@ -1320,7 +1320,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean dolphinRidable = false;
-@@ -1421,6 +1441,7 @@ public class PurpurWorldConfig {
+@@ -1417,6 +1437,7 @@ public class PurpurWorldConfig {
public boolean dolphinDisableTreasureSearching = false;
public boolean dolphinTakeDamageFromWater = false;
public double dolphinNaturallyAggressiveToPlayersChance = 0.0D;
@@ -1328,7 +1328,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
-@@ -1437,6 +1458,7 @@ public class PurpurWorldConfig {
+@@ -1433,6 +1454,7 @@ public class PurpurWorldConfig {
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater);
dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance);
@@ -1336,7 +1336,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean donkeyRidableInWater = false;
-@@ -1448,6 +1470,7 @@ public class PurpurWorldConfig {
+@@ -1444,6 +1466,7 @@ public class PurpurWorldConfig {
public double donkeyMovementSpeedMax = 0.175D;
public int donkeyBreedingTicks = 6000;
public boolean donkeyTakeDamageFromWater = false;
@@ -1344,7 +1344,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1465,6 +1488,7 @@ public class PurpurWorldConfig {
+@@ -1461,6 +1484,7 @@ public class PurpurWorldConfig {
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks);
donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater);
@@ -1352,7 +1352,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean drownedRidable = false;
-@@ -1478,6 +1502,7 @@ public class PurpurWorldConfig {
+@@ -1474,6 +1498,7 @@ public class PurpurWorldConfig {
public boolean drownedJockeyTryExistingChickens = true;
public boolean drownedTakeDamageFromWater = false;
public boolean drownedBreakDoors = false;
@@ -1360,7 +1360,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
-@@ -1495,6 +1520,7 @@ public class PurpurWorldConfig {
+@@ -1491,6 +1516,7 @@ public class PurpurWorldConfig {
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
@@ -1368,7 +1368,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean elderGuardianRidable = false;
-@@ -1502,6 +1528,7 @@ public class PurpurWorldConfig {
+@@ -1498,6 +1524,7 @@ public class PurpurWorldConfig {
public double elderGuardianMaxHealth = 80.0D;
public double elderGuardianScale = 1.0D;
public boolean elderGuardianTakeDamageFromWater = false;
@@ -1376,7 +1376,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void elderGuardianSettings() {
elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable);
elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable);
-@@ -1513,6 +1540,7 @@ public class PurpurWorldConfig {
+@@ -1509,6 +1536,7 @@ public class PurpurWorldConfig {
elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth);
elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D);
elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater);
@@ -1384,7 +1384,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean enderDragonRidable = false;
-@@ -1559,6 +1587,7 @@ public class PurpurWorldConfig {
+@@ -1555,6 +1583,7 @@ public class PurpurWorldConfig {
public boolean endermanIgnorePlayerDragonHead = false;
public boolean endermanDisableStareAggro = false;
public boolean endermanIgnoreProjectiles = false;
@@ -1392,7 +1392,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
-@@ -1583,6 +1612,7 @@ public class PurpurWorldConfig {
+@@ -1579,6 +1608,7 @@ public class PurpurWorldConfig {
endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead);
endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles);
@@ -1400,7 +1400,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean endermiteRidable = false;
-@@ -1591,6 +1621,7 @@ public class PurpurWorldConfig {
+@@ -1587,6 +1617,7 @@ public class PurpurWorldConfig {
public double endermiteMaxHealth = 8.0D;
public double endermiteScale = 1.0D;
public boolean endermiteTakeDamageFromWater = false;
@@ -1408,7 +1408,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void endermiteSettings() {
endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable);
endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater);
-@@ -1603,6 +1634,7 @@ public class PurpurWorldConfig {
+@@ -1599,6 +1630,7 @@ public class PurpurWorldConfig {
endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth);
endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D);
endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater);
@@ -1416,7 +1416,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean evokerRidable = false;
-@@ -1612,6 +1644,7 @@ public class PurpurWorldConfig {
+@@ -1608,6 +1640,7 @@ public class PurpurWorldConfig {
public double evokerScale = 1.0D;
public boolean evokerBypassMobGriefing = false;
public boolean evokerTakeDamageFromWater = false;
@@ -1424,7 +1424,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void evokerSettings() {
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
-@@ -1625,6 +1658,7 @@ public class PurpurWorldConfig {
+@@ -1621,6 +1654,7 @@ public class PurpurWorldConfig {
evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D);
evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing);
evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater);
@@ -1432,7 +1432,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean foxRidable = false;
-@@ -1636,6 +1670,7 @@ public class PurpurWorldConfig {
+@@ -1632,6 +1666,7 @@ public class PurpurWorldConfig {
public int foxBreedingTicks = 6000;
public boolean foxBypassMobGriefing = false;
public boolean foxTakeDamageFromWater = false;
@@ -1440,7 +1440,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
-@@ -1651,6 +1686,7 @@ public class PurpurWorldConfig {
+@@ -1647,6 +1682,7 @@ public class PurpurWorldConfig {
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing);
foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater);
@@ -1448,7 +1448,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean frogRidable = false;
-@@ -1673,6 +1709,7 @@ public class PurpurWorldConfig {
+@@ -1669,6 +1705,7 @@ public class PurpurWorldConfig {
public double ghastMaxHealth = 10.0D;
public double ghastScale = 1.0D;
public boolean ghastTakeDamageFromWater = false;
@@ -1456,7 +1456,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void ghastSettings() {
ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable);
ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater);
-@@ -1686,6 +1723,7 @@ public class PurpurWorldConfig {
+@@ -1682,6 +1719,7 @@ public class PurpurWorldConfig {
ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth);
ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D);
ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater);
@@ -1464,7 +1464,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean giantRidable = false;
-@@ -1700,6 +1738,7 @@ public class PurpurWorldConfig {
+@@ -1696,6 +1734,7 @@ public class PurpurWorldConfig {
public boolean giantHaveAI = false;
public boolean giantHaveHostileAI = false;
public boolean giantTakeDamageFromWater = false;
@@ -1472,7 +1472,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void giantSettings() {
giantRidable = getBoolean("mobs.giant.ridable", giantRidable);
giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater);
-@@ -1722,6 +1761,7 @@ public class PurpurWorldConfig {
+@@ -1718,6 +1757,7 @@ public class PurpurWorldConfig {
giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI);
giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI);
giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater);
@@ -1480,7 +1480,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean glowSquidRidable = false;
-@@ -1730,6 +1770,7 @@ public class PurpurWorldConfig {
+@@ -1726,6 +1766,7 @@ public class PurpurWorldConfig {
public double glowSquidScale = 1.0D;
public boolean glowSquidsCanFly = false;
public boolean glowSquidTakeDamageFromWater = false;
@@ -1488,7 +1488,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void glowSquidSettings() {
glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable);
glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable);
-@@ -1737,6 +1778,7 @@ public class PurpurWorldConfig {
+@@ -1733,6 +1774,7 @@ public class PurpurWorldConfig {
glowSquidScale = Mth.clamp(getDouble("mobs.glow_squid.attributes.scale", glowSquidScale), 0.0625D, 16.0D);
glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly);
glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater);
@@ -1496,7 +1496,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean goatRidable = false;
-@@ -1746,6 +1788,7 @@ public class PurpurWorldConfig {
+@@ -1742,6 +1784,7 @@ public class PurpurWorldConfig {
public double goatScale = 1.0D;
public int goatBreedingTicks = 6000;
public boolean goatTakeDamageFromWater = false;
@@ -1504,7 +1504,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void goatSettings() {
goatRidable = getBoolean("mobs.goat.ridable", goatRidable);
goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater);
-@@ -1754,6 +1797,7 @@ public class PurpurWorldConfig {
+@@ -1750,6 +1793,7 @@ public class PurpurWorldConfig {
goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D);
goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks);
goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater);
@@ -1512,7 +1512,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean guardianRidable = false;
-@@ -1761,6 +1805,7 @@ public class PurpurWorldConfig {
+@@ -1757,6 +1801,7 @@ public class PurpurWorldConfig {
public double guardianMaxHealth = 30.0D;
public double guardianScale = 1.0D;
public boolean guardianTakeDamageFromWater = false;
@@ -1520,7 +1520,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void guardianSettings() {
guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable);
guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable);
-@@ -1772,6 +1817,7 @@ public class PurpurWorldConfig {
+@@ -1768,6 +1813,7 @@ public class PurpurWorldConfig {
guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth);
guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D);
guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater);
@@ -1528,7 +1528,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean forceHalloweenSeason = false;
-@@ -1788,6 +1834,7 @@ public class PurpurWorldConfig {
+@@ -1784,6 +1830,7 @@ public class PurpurWorldConfig {
public double hoglinScale = 1.0D;
public int hoglinBreedingTicks = 6000;
public boolean hoglinTakeDamageFromWater = false;
@@ -1536,7 +1536,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
-@@ -1801,6 +1848,7 @@ public class PurpurWorldConfig {
+@@ -1797,6 +1844,7 @@ public class PurpurWorldConfig {
hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D);
hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks);
hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater);
@@ -1544,7 +1544,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean horseRidableInWater = false;
-@@ -1812,6 +1860,7 @@ public class PurpurWorldConfig {
+@@ -1808,6 +1856,7 @@ public class PurpurWorldConfig {
public double horseMovementSpeedMax = 0.3375D;
public int horseBreedingTicks = 6000;
public boolean horseTakeDamageFromWater = false;
@@ -1552,7 +1552,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -1829,6 +1878,7 @@ public class PurpurWorldConfig {
+@@ -1825,6 +1874,7 @@ public class PurpurWorldConfig {
horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax);
horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks);
horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater);
@@ -1560,7 +1560,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean huskRidable = false;
-@@ -1841,6 +1891,7 @@ public class PurpurWorldConfig {
+@@ -1837,6 +1887,7 @@ public class PurpurWorldConfig {
public double huskJockeyChance = 0.05D;
public boolean huskJockeyTryExistingChickens = true;
public boolean huskTakeDamageFromWater = false;
@@ -1568,7 +1568,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
-@@ -1857,6 +1908,7 @@ public class PurpurWorldConfig {
+@@ -1853,6 +1904,7 @@ public class PurpurWorldConfig {
huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance);
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
@@ -1576,7 +1576,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean illusionerRidable = false;
-@@ -1867,6 +1919,7 @@ public class PurpurWorldConfig {
+@@ -1863,6 +1915,7 @@ public class PurpurWorldConfig {
public double illusionerMaxHealth = 32.0D;
public double illusionerScale = 1.0D;
public boolean illusionerTakeDamageFromWater = false;
@@ -1584,7 +1584,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void illusionerSettings() {
illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable);
illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater);
-@@ -1885,6 +1938,7 @@ public class PurpurWorldConfig {
+@@ -1881,6 +1934,7 @@ public class PurpurWorldConfig {
illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth);
illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D);
illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater);
@@ -1592,7 +1592,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean ironGolemRidable = false;
-@@ -1896,6 +1950,7 @@ public class PurpurWorldConfig {
+@@ -1892,6 +1946,7 @@ public class PurpurWorldConfig {
public boolean ironGolemTakeDamageFromWater = false;
public boolean ironGolemPoppyCalm = false;
public boolean ironGolemHealCalm = false;
@@ -1600,7 +1600,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
-@@ -1911,6 +1966,7 @@ public class PurpurWorldConfig {
+@@ -1907,6 +1962,7 @@ public class PurpurWorldConfig {
ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater);
ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm);
ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm);
@@ -1608,7 +1608,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean llamaRidable = false;
-@@ -1925,6 +1981,7 @@ public class PurpurWorldConfig {
+@@ -1921,6 +1977,7 @@ public class PurpurWorldConfig {
public int llamaBreedingTicks = 6000;
public boolean llamaTakeDamageFromWater = false;
public boolean llamaJoinCaravans = true;
@@ -1616,7 +1616,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
-@@ -1945,6 +2002,7 @@ public class PurpurWorldConfig {
+@@ -1941,6 +1998,7 @@ public class PurpurWorldConfig {
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater);
llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans);
@@ -1624,7 +1624,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean magmaCubeRidable = false;
-@@ -1955,6 +2013,7 @@ public class PurpurWorldConfig {
+@@ -1951,6 +2009,7 @@ public class PurpurWorldConfig {
public Map magmaCubeMaxHealthCache = new HashMap<>();
public Map magmaCubeAttackDamageCache = new HashMap<>();
public boolean magmaCubeTakeDamageFromWater = false;
@@ -1632,7 +1632,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void magmaCubeSettings() {
magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable);
magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater);
-@@ -1969,6 +2028,7 @@ public class PurpurWorldConfig {
+@@ -1965,6 +2024,7 @@ public class PurpurWorldConfig {
magmaCubeMaxHealthCache.clear();
magmaCubeAttackDamageCache.clear();
magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater);
@@ -1640,7 +1640,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean mooshroomRidable = false;
-@@ -1978,6 +2038,7 @@ public class PurpurWorldConfig {
+@@ -1974,6 +2034,7 @@ public class PurpurWorldConfig {
public double mooshroomScale = 1.0D;
public int mooshroomBreedingTicks = 6000;
public boolean mooshroomTakeDamageFromWater = false;
@@ -1648,7 +1648,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
-@@ -1991,6 +2052,7 @@ public class PurpurWorldConfig {
+@@ -1987,6 +2048,7 @@ public class PurpurWorldConfig {
mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D);
mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks);
mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater);
@@ -1656,7 +1656,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean muleRidableInWater = false;
-@@ -2002,6 +2064,7 @@ public class PurpurWorldConfig {
+@@ -1998,6 +2060,7 @@ public class PurpurWorldConfig {
public double muleMovementSpeedMax = 0.175D;
public int muleBreedingTicks = 6000;
public boolean muleTakeDamageFromWater = false;
@@ -1664,7 +1664,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) {
-@@ -2019,6 +2082,7 @@ public class PurpurWorldConfig {
+@@ -2015,6 +2078,7 @@ public class PurpurWorldConfig {
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks);
muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater);
@@ -1672,7 +1672,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean ocelotRidable = false;
-@@ -2028,6 +2092,7 @@ public class PurpurWorldConfig {
+@@ -2024,6 +2088,7 @@ public class PurpurWorldConfig {
public double ocelotScale = 1.0D;
public int ocelotBreedingTicks = 6000;
public boolean ocelotTakeDamageFromWater = false;
@@ -1680,7 +1680,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -2041,6 +2106,7 @@ public class PurpurWorldConfig {
+@@ -2037,6 +2102,7 @@ public class PurpurWorldConfig {
ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D);
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater);
@@ -1688,7 +1688,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean pandaRidable = false;
-@@ -2050,6 +2116,7 @@ public class PurpurWorldConfig {
+@@ -2046,6 +2112,7 @@ public class PurpurWorldConfig {
public double pandaScale = 1.0D;
public int pandaBreedingTicks = 6000;
public boolean pandaTakeDamageFromWater = false;
@@ -1696,7 +1696,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
-@@ -2063,6 +2130,7 @@ public class PurpurWorldConfig {
+@@ -2059,6 +2126,7 @@ public class PurpurWorldConfig {
pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D);
pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks);
pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater);
@@ -1704,7 +1704,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean parrotRidable = false;
-@@ -2073,6 +2141,7 @@ public class PurpurWorldConfig {
+@@ -2069,6 +2137,7 @@ public class PurpurWorldConfig {
public double parrotScale = 1.0D;
public boolean parrotTakeDamageFromWater = false;
public boolean parrotBreedable = false;
@@ -1712,7 +1712,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
-@@ -2087,6 +2156,7 @@ public class PurpurWorldConfig {
+@@ -2083,6 +2152,7 @@ public class PurpurWorldConfig {
parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D);
parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater);
parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable);
@@ -1720,7 +1720,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean phantomRidable = false;
-@@ -2114,6 +2184,7 @@ public class PurpurWorldConfig {
+@@ -2110,6 +2180,7 @@ public class PurpurWorldConfig {
public boolean phantomBurnInDaylight = true;
public boolean phantomFlamesOnSwoop = false;
public boolean phantomTakeDamageFromWater = false;
@@ -1728,7 +1728,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -2149,6 +2220,7 @@ public class PurpurWorldConfig {
+@@ -2145,6 +2216,7 @@ public class PurpurWorldConfig {
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater);
@@ -1736,7 +1736,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean pigRidable = false;
-@@ -2159,6 +2231,7 @@ public class PurpurWorldConfig {
+@@ -2155,6 +2227,7 @@ public class PurpurWorldConfig {
public boolean pigGiveSaddleBack = false;
public int pigBreedingTicks = 6000;
public boolean pigTakeDamageFromWater = false;
@@ -1744,7 +1744,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
-@@ -2173,6 +2246,7 @@ public class PurpurWorldConfig {
+@@ -2169,6 +2242,7 @@ public class PurpurWorldConfig {
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks);
pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater);
@@ -1752,7 +1752,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean piglinRidable = false;
-@@ -2183,6 +2257,7 @@ public class PurpurWorldConfig {
+@@ -2179,6 +2253,7 @@ public class PurpurWorldConfig {
public boolean piglinBypassMobGriefing = false;
public boolean piglinTakeDamageFromWater = false;
public int piglinPortalSpawnModifier = 2000;
@@ -1760,7 +1760,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -2197,6 +2272,7 @@ public class PurpurWorldConfig {
+@@ -2193,6 +2268,7 @@ public class PurpurWorldConfig {
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
@@ -1768,7 +1768,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean piglinBruteRidable = false;
-@@ -2205,6 +2281,7 @@ public class PurpurWorldConfig {
+@@ -2201,6 +2277,7 @@ public class PurpurWorldConfig {
public double piglinBruteMaxHealth = 50.0D;
public double piglinBruteScale = 1.0D;
public boolean piglinBruteTakeDamageFromWater = false;
@@ -1776,7 +1776,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void piglinBruteSettings() {
piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable);
piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater);
-@@ -2217,6 +2294,7 @@ public class PurpurWorldConfig {
+@@ -2213,6 +2290,7 @@ public class PurpurWorldConfig {
piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth);
piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D);
piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater);
@@ -1784,7 +1784,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean pillagerRidable = false;
-@@ -2226,6 +2304,7 @@ public class PurpurWorldConfig {
+@@ -2222,6 +2300,7 @@ public class PurpurWorldConfig {
public double pillagerScale = 1.0D;
public boolean pillagerBypassMobGriefing = false;
public boolean pillagerTakeDamageFromWater = false;
@@ -1792,7 +1792,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void pillagerSettings() {
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
-@@ -2239,6 +2318,7 @@ public class PurpurWorldConfig {
+@@ -2235,6 +2314,7 @@ public class PurpurWorldConfig {
pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D);
pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing);
pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater);
@@ -1800,7 +1800,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean polarBearRidable = false;
-@@ -2250,6 +2330,7 @@ public class PurpurWorldConfig {
+@@ -2246,6 +2326,7 @@ public class PurpurWorldConfig {
public Item polarBearBreedableItem = null;
public int polarBearBreedingTicks = 6000;
public boolean polarBearTakeDamageFromWater = false;
@@ -1808,7 +1808,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
-@@ -2266,6 +2347,7 @@ public class PurpurWorldConfig {
+@@ -2262,6 +2343,7 @@ public class PurpurWorldConfig {
if (item != Items.AIR) polarBearBreedableItem = item;
polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks);
polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater);
@@ -1816,7 +1816,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean pufferfishRidable = false;
-@@ -2273,6 +2355,7 @@ public class PurpurWorldConfig {
+@@ -2269,6 +2351,7 @@ public class PurpurWorldConfig {
public double pufferfishMaxHealth = 3.0D;
public double pufferfishScale = 1.0D;
public boolean pufferfishTakeDamageFromWater = false;
@@ -1824,7 +1824,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void pufferfishSettings() {
pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable);
pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable);
-@@ -2284,6 +2367,7 @@ public class PurpurWorldConfig {
+@@ -2280,6 +2363,7 @@ public class PurpurWorldConfig {
pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth);
pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D);
pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater);
@@ -1832,7 +1832,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean rabbitRidable = false;
-@@ -2296,6 +2380,7 @@ public class PurpurWorldConfig {
+@@ -2292,6 +2376,7 @@ public class PurpurWorldConfig {
public int rabbitBreedingTicks = 6000;
public boolean rabbitBypassMobGriefing = false;
public boolean rabbitTakeDamageFromWater = false;
@@ -1840,7 +1840,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
-@@ -2312,6 +2397,7 @@ public class PurpurWorldConfig {
+@@ -2308,6 +2393,7 @@ public class PurpurWorldConfig {
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing);
rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater);
@@ -1848,7 +1848,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean ravagerRidable = false;
-@@ -2322,6 +2408,7 @@ public class PurpurWorldConfig {
+@@ -2318,6 +2404,7 @@ public class PurpurWorldConfig {
public boolean ravagerBypassMobGriefing = false;
public boolean ravagerTakeDamageFromWater = false;
public List ravagerGriefableBlocks = new ArrayList<>();
@@ -1856,7 +1856,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -2352,6 +2439,7 @@ public class PurpurWorldConfig {
+@@ -2348,6 +2435,7 @@ public class PurpurWorldConfig {
ravagerGriefableBlocks.add(block);
}
});
@@ -1864,7 +1864,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean salmonRidable = false;
-@@ -2359,6 +2447,7 @@ public class PurpurWorldConfig {
+@@ -2355,6 +2443,7 @@ public class PurpurWorldConfig {
public double salmonMaxHealth = 3.0D;
public double salmonScale = 1.0D;
public boolean salmonTakeDamageFromWater = false;
@@ -1872,7 +1872,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void salmonSettings() {
salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable);
salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable);
-@@ -2370,6 +2459,7 @@ public class PurpurWorldConfig {
+@@ -2366,6 +2455,7 @@ public class PurpurWorldConfig {
salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth);
salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D);
salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater);
@@ -1880,7 +1880,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean sheepRidable = false;
-@@ -2380,6 +2470,7 @@ public class PurpurWorldConfig {
+@@ -2376,6 +2466,7 @@ public class PurpurWorldConfig {
public int sheepBreedingTicks = 6000;
public boolean sheepBypassMobGriefing = false;
public boolean sheepTakeDamageFromWater = false;
@@ -1888,7 +1888,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
-@@ -2394,6 +2485,7 @@ public class PurpurWorldConfig {
+@@ -2390,6 +2481,7 @@ public class PurpurWorldConfig {
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater);
@@ -1896,7 +1896,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean shulkerRidable = false;
-@@ -2408,6 +2500,7 @@ public class PurpurWorldConfig {
+@@ -2404,6 +2496,7 @@ public class PurpurWorldConfig {
public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0";
public boolean shulkerSpawnFromBulletRandomColor = false;
public boolean shulkerChangeColorWithDye = false;
@@ -1904,7 +1904,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
-@@ -2426,6 +2519,7 @@ public class PurpurWorldConfig {
+@@ -2422,6 +2515,7 @@ public class PurpurWorldConfig {
shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation);
shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor);
shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye);
@@ -1912,7 +1912,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean silverfishRidable = false;
-@@ -2437,6 +2531,7 @@ public class PurpurWorldConfig {
+@@ -2433,6 +2527,7 @@ public class PurpurWorldConfig {
public double silverfishAttackDamage = 1.0D;
public boolean silverfishBypassMobGriefing = false;
public boolean silverfishTakeDamageFromWater = false;
@@ -1920,7 +1920,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void silverfishSettings() {
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
-@@ -2452,6 +2547,7 @@ public class PurpurWorldConfig {
+@@ -2448,6 +2543,7 @@ public class PurpurWorldConfig {
silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage);
silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing);
silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater);
@@ -1928,7 +1928,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean skeletonRidable = false;
-@@ -2460,6 +2556,7 @@ public class PurpurWorldConfig {
+@@ -2456,6 +2552,7 @@ public class PurpurWorldConfig {
public double skeletonMaxHealth = 20.0D;
public double skeletonScale = 1.0D;
public boolean skeletonTakeDamageFromWater = false;
@@ -1936,7 +1936,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2472,6 +2569,7 @@ public class PurpurWorldConfig {
+@@ -2468,6 +2565,7 @@ public class PurpurWorldConfig {
skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth);
skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D);
skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater);
@@ -1944,7 +1944,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean skeletonHorseRidable = false;
-@@ -2484,6 +2582,7 @@ public class PurpurWorldConfig {
+@@ -2480,6 +2578,7 @@ public class PurpurWorldConfig {
public double skeletonHorseMovementSpeedMin = 0.2D;
public double skeletonHorseMovementSpeedMax = 0.2D;
public boolean skeletonHorseTakeDamageFromWater = false;
@@ -1952,7 +1952,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void skeletonHorseSettings() {
skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable);
skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater);
-@@ -2501,6 +2600,7 @@ public class PurpurWorldConfig {
+@@ -2497,6 +2596,7 @@ public class PurpurWorldConfig {
skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin);
skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax);
skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater);
@@ -1960,7 +1960,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean slimeRidable = false;
-@@ -2511,6 +2611,7 @@ public class PurpurWorldConfig {
+@@ -2507,6 +2607,7 @@ public class PurpurWorldConfig {
public Map slimeMaxHealthCache = new HashMap<>();
public Map slimeAttackDamageCache = new HashMap<>();
public boolean slimeTakeDamageFromWater = false;
@@ -1968,7 +1968,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void slimeSettings() {
slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable);
slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater);
-@@ -2525,6 +2626,7 @@ public class PurpurWorldConfig {
+@@ -2521,6 +2622,7 @@ public class PurpurWorldConfig {
slimeMaxHealthCache.clear();
slimeAttackDamageCache.clear();
slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater);
@@ -1976,7 +1976,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean snowGolemRidable = false;
-@@ -2540,6 +2642,7 @@ public class PurpurWorldConfig {
+@@ -2536,6 +2638,7 @@ public class PurpurWorldConfig {
public double snowGolemAttackDistance = 1.25D;
public boolean snowGolemBypassMobGriefing = false;
public boolean snowGolemTakeDamageFromWater = true;
@@ -1984,7 +1984,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void snowGolemSettings() {
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
-@@ -2559,6 +2662,7 @@ public class PurpurWorldConfig {
+@@ -2555,6 +2658,7 @@ public class PurpurWorldConfig {
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing);
snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater);
@@ -1992,7 +1992,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean snifferRidable = false;
-@@ -2584,6 +2688,7 @@ public class PurpurWorldConfig {
+@@ -2580,6 +2684,7 @@ public class PurpurWorldConfig {
public double squidOffsetWaterCheck = 0.0D;
public boolean squidsCanFly = false;
public boolean squidTakeDamageFromWater = false;
@@ -2000,7 +2000,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
-@@ -2598,6 +2703,7 @@ public class PurpurWorldConfig {
+@@ -2594,6 +2699,7 @@ public class PurpurWorldConfig {
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly);
squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater);
@@ -2008,7 +2008,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean spiderRidable = false;
-@@ -2606,6 +2712,7 @@ public class PurpurWorldConfig {
+@@ -2602,6 +2708,7 @@ public class PurpurWorldConfig {
public double spiderMaxHealth = 16.0D;
public double spiderScale = 1.0D;
public boolean spiderTakeDamageFromWater = false;
@@ -2016,7 +2016,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void spiderSettings() {
spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable);
spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater);
-@@ -2618,6 +2725,7 @@ public class PurpurWorldConfig {
+@@ -2614,6 +2721,7 @@ public class PurpurWorldConfig {
spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth);
spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D);
spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater);
@@ -2024,7 +2024,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean strayRidable = false;
-@@ -2626,6 +2734,7 @@ public class PurpurWorldConfig {
+@@ -2622,6 +2730,7 @@ public class PurpurWorldConfig {
public double strayMaxHealth = 20.0D;
public double strayScale = 1.0D;
public boolean strayTakeDamageFromWater = false;
@@ -2032,7 +2032,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void straySettings() {
strayRidable = getBoolean("mobs.stray.ridable", strayRidable);
strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater);
-@@ -2638,6 +2747,7 @@ public class PurpurWorldConfig {
+@@ -2634,6 +2743,7 @@ public class PurpurWorldConfig {
strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth);
strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D);
strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater);
@@ -2040,7 +2040,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean striderRidable = false;
-@@ -2648,6 +2758,7 @@ public class PurpurWorldConfig {
+@@ -2644,6 +2754,7 @@ public class PurpurWorldConfig {
public int striderBreedingTicks = 6000;
public boolean striderGiveSaddleBack = false;
public boolean striderTakeDamageFromWater = true;
@@ -2048,7 +2048,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
-@@ -2662,6 +2773,7 @@ public class PurpurWorldConfig {
+@@ -2658,6 +2769,7 @@ public class PurpurWorldConfig {
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack);
striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater);
@@ -2056,7 +2056,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean tadpoleRidable = false;
-@@ -2684,6 +2796,7 @@ public class PurpurWorldConfig {
+@@ -2680,6 +2792,7 @@ public class PurpurWorldConfig {
public double traderLlamaMovementSpeedMax = 0.175D;
public int traderLlamaBreedingTicks = 6000;
public boolean traderLlamaTakeDamageFromWater = false;
@@ -2064,7 +2064,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
-@@ -2703,6 +2816,7 @@ public class PurpurWorldConfig {
+@@ -2699,6 +2812,7 @@ public class PurpurWorldConfig {
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks);
traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater);
@@ -2072,7 +2072,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean tropicalFishRidable = false;
-@@ -2710,6 +2824,7 @@ public class PurpurWorldConfig {
+@@ -2706,6 +2820,7 @@ public class PurpurWorldConfig {
public double tropicalFishMaxHealth = 3.0D;
public double tropicalFishScale = 1.0D;
public boolean tropicalFishTakeDamageFromWater = false;
@@ -2080,7 +2080,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void tropicalFishSettings() {
tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable);
tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable);
-@@ -2721,6 +2836,7 @@ public class PurpurWorldConfig {
+@@ -2717,6 +2832,7 @@ public class PurpurWorldConfig {
tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth);
tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D);
tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater);
@@ -2088,7 +2088,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean turtleRidable = false;
-@@ -2730,6 +2846,7 @@ public class PurpurWorldConfig {
+@@ -2726,6 +2842,7 @@ public class PurpurWorldConfig {
public double turtleScale = 1.0D;
public int turtleBreedingTicks = 6000;
public boolean turtleTakeDamageFromWater = false;
@@ -2096,7 +2096,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
-@@ -2743,6 +2860,7 @@ public class PurpurWorldConfig {
+@@ -2739,6 +2856,7 @@ public class PurpurWorldConfig {
turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D);
turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks);
turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater);
@@ -2104,7 +2104,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean vexRidable = false;
-@@ -2752,6 +2870,7 @@ public class PurpurWorldConfig {
+@@ -2748,6 +2866,7 @@ public class PurpurWorldConfig {
public double vexMaxHealth = 14.0D;
public double vexScale = 1.0D;
public boolean vexTakeDamageFromWater = false;
@@ -2112,7 +2112,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void vexSettings() {
vexRidable = getBoolean("mobs.vex.ridable", vexRidable);
vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater);
-@@ -2765,6 +2884,7 @@ public class PurpurWorldConfig {
+@@ -2761,6 +2880,7 @@ public class PurpurWorldConfig {
vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth);
vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D);
vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater);
@@ -2120,7 +2120,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean villagerRidable = false;
-@@ -2781,6 +2901,7 @@ public class PurpurWorldConfig {
+@@ -2777,6 +2897,7 @@ public class PurpurWorldConfig {
public boolean villagerBypassMobGriefing = false;
public boolean villagerTakeDamageFromWater = false;
public boolean villagerAllowTrading = true;
@@ -2128,7 +2128,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2801,6 +2922,7 @@ public class PurpurWorldConfig {
+@@ -2797,6 +2918,7 @@ public class PurpurWorldConfig {
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
@@ -2136,7 +2136,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean vindicatorRidable = false;
-@@ -2810,6 +2932,7 @@ public class PurpurWorldConfig {
+@@ -2806,6 +2928,7 @@ public class PurpurWorldConfig {
public double vindicatorScale = 1.0D;
public double vindicatorJohnnySpawnChance = 0D;
public boolean vindicatorTakeDamageFromWater = false;
@@ -2144,7 +2144,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
-@@ -2823,6 +2946,7 @@ public class PurpurWorldConfig {
+@@ -2819,6 +2942,7 @@ public class PurpurWorldConfig {
vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D);
vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance);
vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater);
@@ -2152,7 +2152,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean wanderingTraderRidable = false;
-@@ -2834,6 +2958,7 @@ public class PurpurWorldConfig {
+@@ -2830,6 +2954,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderCanBeLeashed = false;
public boolean wanderingTraderTakeDamageFromWater = false;
public boolean wanderingTraderAllowTrading = true;
@@ -2160,7 +2160,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
-@@ -2849,6 +2974,7 @@ public class PurpurWorldConfig {
+@@ -2845,6 +2970,7 @@ public class PurpurWorldConfig {
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater);
wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading);
@@ -2168,7 +2168,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean wardenRidable = false;
-@@ -2866,6 +2992,7 @@ public class PurpurWorldConfig {
+@@ -2862,6 +2988,7 @@ public class PurpurWorldConfig {
public double witchMaxHealth = 26.0D;
public double witchScale = 1.0D;
public boolean witchTakeDamageFromWater = false;
@@ -2176,7 +2176,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void witchSettings() {
witchRidable = getBoolean("mobs.witch.ridable", witchRidable);
witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater);
-@@ -2878,6 +3005,7 @@ public class PurpurWorldConfig {
+@@ -2874,6 +3001,7 @@ public class PurpurWorldConfig {
witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth);
witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D);
witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater);
@@ -2184,7 +2184,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean witherRidable = false;
-@@ -2893,6 +3021,7 @@ public class PurpurWorldConfig {
+@@ -2889,6 +3017,7 @@ public class PurpurWorldConfig {
public boolean witherCanRideVehicles = false;
public float witherExplosionRadius = 1.0F;
public boolean witherPlaySpawnSound = true;
@@ -2192,7 +2192,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
-@@ -2916,6 +3045,7 @@ public class PurpurWorldConfig {
+@@ -2912,6 +3041,7 @@ public class PurpurWorldConfig {
witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius);
witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound);
@@ -2200,7 +2200,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean witherSkeletonRidable = false;
-@@ -2924,6 +3054,7 @@ public class PurpurWorldConfig {
+@@ -2920,6 +3050,7 @@ public class PurpurWorldConfig {
public double witherSkeletonMaxHealth = 20.0D;
public double witherSkeletonScale = 1.0D;
public boolean witherSkeletonTakeDamageFromWater = false;
@@ -2208,7 +2208,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void witherSkeletonSettings() {
witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable);
witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater);
-@@ -2936,6 +3067,7 @@ public class PurpurWorldConfig {
+@@ -2932,6 +3063,7 @@ public class PurpurWorldConfig {
witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth);
witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D);
witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater);
@@ -2216,7 +2216,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean wolfRidable = false;
-@@ -2948,6 +3080,7 @@ public class PurpurWorldConfig {
+@@ -2944,6 +3076,7 @@ public class PurpurWorldConfig {
public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000;
public boolean wolfTakeDamageFromWater = false;
@@ -2224,7 +2224,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
-@@ -2968,6 +3101,7 @@ public class PurpurWorldConfig {
+@@ -2964,6 +3097,7 @@ public class PurpurWorldConfig {
wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid);
wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks);
wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater);
@@ -2232,7 +2232,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean zoglinRidable = false;
-@@ -2976,6 +3110,7 @@ public class PurpurWorldConfig {
+@@ -2972,6 +3106,7 @@ public class PurpurWorldConfig {
public double zoglinMaxHealth = 40.0D;
public double zoglinScale = 1.0D;
public boolean zoglinTakeDamageFromWater = false;
@@ -2240,7 +2240,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void zoglinSettings() {
zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable);
zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater);
-@@ -2988,6 +3123,7 @@ public class PurpurWorldConfig {
+@@ -2984,6 +3119,7 @@ public class PurpurWorldConfig {
zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth);
zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D);
zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater);
@@ -2248,7 +2248,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean zombieRidable = false;
-@@ -3002,6 +3138,7 @@ public class PurpurWorldConfig {
+@@ -2998,6 +3134,7 @@ public class PurpurWorldConfig {
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
public boolean zombieBypassMobGriefing = false;
public boolean zombieTakeDamageFromWater = false;
@@ -2256,7 +2256,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -3020,6 +3157,7 @@ public class PurpurWorldConfig {
+@@ -3016,6 +3153,7 @@ public class PurpurWorldConfig {
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing);
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
@@ -2264,7 +2264,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean zombieHorseRidable = false;
-@@ -3033,6 +3171,7 @@ public class PurpurWorldConfig {
+@@ -3029,6 +3167,7 @@ public class PurpurWorldConfig {
public double zombieHorseMovementSpeedMax = 0.2D;
public double zombieHorseSpawnChance = 0.0D;
public boolean zombieHorseTakeDamageFromWater = false;
@@ -2272,7 +2272,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void zombieHorseSettings() {
zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable);
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
-@@ -3051,6 +3190,7 @@ public class PurpurWorldConfig {
+@@ -3047,6 +3186,7 @@ public class PurpurWorldConfig {
zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax);
zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater);
@@ -2280,7 +2280,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean zombieVillagerRidable = false;
-@@ -3066,6 +3206,7 @@ public class PurpurWorldConfig {
+@@ -3062,6 +3202,7 @@ public class PurpurWorldConfig {
public int zombieVillagerCuringTimeMin = 3600;
public int zombieVillagerCuringTimeMax = 6000;
public boolean zombieVillagerCureEnabled = true;
@@ -2288,7 +2288,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
-@@ -3085,6 +3226,7 @@ public class PurpurWorldConfig {
+@@ -3081,6 +3222,7 @@ public class PurpurWorldConfig {
zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin);
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
@@ -2296,7 +2296,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
}
public boolean zombifiedPiglinRidable = false;
-@@ -3098,6 +3240,7 @@ public class PurpurWorldConfig {
+@@ -3094,6 +3236,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
public boolean zombifiedPiglinTakeDamageFromWater = false;
@@ -2304,7 +2304,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
-@@ -3115,6 +3258,7 @@ public class PurpurWorldConfig {
+@@ -3111,6 +3254,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/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
index 1c9637b4c..7d41d5e69 100644
--- a/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
+++ b/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
@@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 76c94c6332a447a95e91cd04f321af99827a9a2d..61121ec15d2ecb6cc46d4bcd07e35905dc67d827 100644
+index 1e34756123f18b27b3328c409b22c11737dad035..6a562966878f9305e44fe966621fe591e4f1f0e7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -545,6 +545,8 @@ public class PurpurWorldConfig {
+@@ -541,6 +541,8 @@ public class PurpurWorldConfig {
public Map axeWeatherables = new HashMap<>();
public Map hoeTillables = new HashMap<>();
public Map shovelFlattenables = new HashMap<>();
@@ -86,7 +86,7 @@ index 76c94c6332a447a95e91cd04f321af99827a9a2d..61121ec15d2ecb6cc46d4bcd07e35905
private void toolSettings() {
axeStrippables.clear();
axeWaxables.clear();
-@@ -812,6 +814,8 @@ public class PurpurWorldConfig {
+@@ -808,6 +810,8 @@ public class PurpurWorldConfig {
});
shovelFlattenables.put(block, new Flattenable(into, drops));
});
diff --git a/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch
index c127f7730..e3bcd2b17 100644
--- a/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch
+++ b/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch
@@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 61121ec15d2ecb6cc46d4bcd07e35905dc67d827..f1d37e0fee049b8c91c09309b4df4d1f072c0ad5 100644
+index 6a562966878f9305e44fe966621fe591e4f1f0e7..2436fb55fca809f1c709a1539762e3e11b76637f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1072,11 +1072,13 @@ public class PurpurWorldConfig {
+@@ -1068,11 +1068,13 @@ public class PurpurWorldConfig {
public boolean turtleEggsBreakFromItems = false;
public boolean turtleEggsBreakFromMinecarts = false;
public boolean turtleEggsBypassMobGriefing = false;
diff --git a/patches/server/0223-Mob-head-visibility-percent.patch b/patches/server/0223-Mob-head-visibility-percent.patch
index 1fa1a9c15..c98069bc2 100644
--- a/patches/server/0223-Mob-head-visibility-percent.patch
+++ b/patches/server/0223-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 ad8b1ff4ea483b18cfb2f79cfe094655dec4d032..391625ad3fd69f7ab4052afe2ea4d566dd1ac5a5 100644
+index 863bfe33d980f1988111669c6a6ae53bee9c4887..cb9ae94b4fff8406cdbc40a1d5d38f0272a4a212 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1046,9 +1046,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -32,10 +32,10 @@ index ad8b1ff4ea483b18cfb2f79cfe094655dec4d032..391625ad3fd69f7ab4052afe2ea4d566
// 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 f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974471fa772 100644
+index 2436fb55fca809f1c709a1539762e3e11b76637f..19fa5f9e986f5acff4b4893ec33f7c29d5a59b09 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1417,6 +1417,7 @@ public class PurpurWorldConfig {
+@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig {
public boolean creeperExplodeWhenKilled = false;
public boolean creeperHealthRadius = false;
public boolean creeperAlwaysDropExp = false;
@@ -43,7 +43,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -1435,6 +1436,7 @@ public class PurpurWorldConfig {
+@@ -1431,6 +1432,7 @@ public class PurpurWorldConfig {
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp);
@@ -51,7 +51,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
}
public boolean dolphinRidable = false;
-@@ -2264,6 +2266,7 @@ public class PurpurWorldConfig {
+@@ -2260,6 +2262,7 @@ public class PurpurWorldConfig {
public boolean piglinTakeDamageFromWater = false;
public int piglinPortalSpawnModifier = 2000;
public boolean piglinAlwaysDropExp = false;
@@ -59,7 +59,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -2279,6 +2282,7 @@ public class PurpurWorldConfig {
+@@ -2275,6 +2278,7 @@ public class PurpurWorldConfig {
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp);
@@ -67,7 +67,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
}
public boolean piglinBruteRidable = false;
-@@ -2563,6 +2567,7 @@ public class PurpurWorldConfig {
+@@ -2559,6 +2563,7 @@ public class PurpurWorldConfig {
public double skeletonScale = 1.0D;
public boolean skeletonTakeDamageFromWater = false;
public boolean skeletonAlwaysDropExp = false;
@@ -75,7 +75,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2576,6 +2581,7 @@ public class PurpurWorldConfig {
+@@ -2572,6 +2577,7 @@ public class PurpurWorldConfig {
skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D);
skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater);
skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp);
@@ -83,7 +83,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
}
public boolean skeletonHorseRidable = false;
-@@ -3145,6 +3151,7 @@ public class PurpurWorldConfig {
+@@ -3141,6 +3147,7 @@ public class PurpurWorldConfig {
public boolean zombieBypassMobGriefing = false;
public boolean zombieTakeDamageFromWater = false;
public boolean zombieAlwaysDropExp = false;
@@ -91,7 +91,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
-@@ -3164,6 +3171,7 @@ public class PurpurWorldConfig {
+@@ -3160,6 +3167,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/0226-Stop-bees-from-dying-after-stinging.patch b/patches/server/0226-Stop-bees-from-dying-after-stinging.patch
index 6b488eded..f0b6b8df1 100644
--- a/patches/server/0226-Stop-bees-from-dying-after-stinging.patch
+++ b/patches/server/0226-Stop-bees-from-dying-after-stinging.patch
@@ -17,10 +17,10 @@ index 0a0f3d21234dbf567ce7439833c84293fac2dc0f..46d55f60cb91fc32b505582c8eecb393
++this.timeSinceSting;
if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 2d7f4b05e2720bb64f429ec9d0c06974471fa772..e9e50100613b7e0814ba6687ea092a3545836a4d 100644
+index 19fa5f9e986f5acff4b4893ec33f7c29d5a59b09..df3d06fc19b9696fbce4bedc221fc327ec533515 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1191,6 +1191,7 @@ public class PurpurWorldConfig {
+@@ -1187,6 +1187,7 @@ public class PurpurWorldConfig {
public boolean beeCanWorkAtNight = false;
public boolean beeCanWorkInRain = false;
public boolean beeAlwaysDropExp = false;
@@ -28,7 +28,7 @@ index 2d7f4b05e2720bb64f429ec9d0c06974471fa772..e9e50100613b7e0814ba6687ea092a35
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
-@@ -1208,6 +1209,7 @@ public class PurpurWorldConfig {
+@@ -1204,6 +1205,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/0228-Configurable-farmland-trample-height.patch b/patches/server/0228-Configurable-farmland-trample-height.patch
index df882c464..d9c19d6e9 100644
--- a/patches/server/0228-Configurable-farmland-trample-height.patch
+++ b/patches/server/0228-Configurable-farmland-trample-height.patch
@@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1
org.bukkit.event.Cancellable cancellable;
if (entity instanceof Player) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index e9e50100613b7e0814ba6687ea092a3545836a4d..df517e667e64e34582a02b3f12bee5ae1c5b5886 100644
+index df3d06fc19b9696fbce4bedc221fc327ec533515..9e42e6fd795ff8e83cd5d3a163b46ea803571b00 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -965,6 +965,7 @@ public class PurpurWorldConfig {
+@@ -961,6 +961,7 @@ public class PurpurWorldConfig {
public boolean farmlandTramplingDisabled = false;
public boolean farmlandTramplingOnlyPlayers = false;
public boolean farmlandTramplingFeatherFalling = false;
@@ -46,7 +46,7 @@ index e9e50100613b7e0814ba6687ea092a3545836a4d..df517e667e64e34582a02b3f12bee5ae
private void farmlandSettings() {
farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing);
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
-@@ -972,6 +973,7 @@ public class PurpurWorldConfig {
+@@ -968,6 +969,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/0229-Configurable-player-pickup-exp-delay.patch b/patches/server/0229-Configurable-player-pickup-exp-delay.patch
index 9706cf3a5..74634d1fe 100644
--- a/patches/server/0229-Configurable-player-pickup-exp-delay.patch
+++ b/patches/server/0229-Configurable-player-pickup-exp-delay.patch
@@ -35,10 +35,10 @@ index 05ed7bfd75a1e30d74b12a068303a786222a2649..330b21946564e6a7b463a258c02fee3f
} else if (!entity.isRemoved()) {
this.touch(entity);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index df517e667e64e34582a02b3f12bee5ae1c5b5886..f47984ce8f1405bd8cb82636ffa6b3f3978368ee 100644
+index 9e42e6fd795ff8e83cd5d3a163b46ea803571b00..f8210f996ee4e6a7cbe0200d956d11afd99da160 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -425,6 +425,7 @@ public class PurpurWorldConfig {
+@@ -421,6 +421,7 @@ public class PurpurWorldConfig {
public boolean playerRidableInWater = false;
public boolean playerRemoveBindingWithWeakness = false;
public int shiftRightClickRepairsMendingPoints = 0;
@@ -46,7 +46,7 @@ index df517e667e64e34582a02b3f12bee5ae1c5b5886..f47984ce8f1405bd8cb82636ffa6b3f3
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -450,6 +451,7 @@ public class PurpurWorldConfig {
+@@ -446,6 +447,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/0230-Allow-void-trading.patch b/patches/server/0230-Allow-void-trading.patch
index 456bf8453..2bcf48f21 100644
--- a/patches/server/0230-Allow-void-trading.patch
+++ b/patches/server/0230-Allow-void-trading.patch
@@ -18,10 +18,10 @@ index 4cae0fbd061b76b7bf9e42fa8c6560721fd4b19c..bfc36c239dab4df5130cbde190d51365
}
// Paper end - Fix merchant inventory not closing on entity removal
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f47984ce8f1405bd8cb82636ffa6b3f3978368ee..a9e9316bfbde71d82d46258346c259052f2c7e2c 100644
+index f8210f996ee4e6a7cbe0200d956d11afd99da160..bfccba06e4ac08d9620ff003672e808c84eb2125 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -426,6 +426,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 f47984ce8f1405bd8cb82636ffa6b3f3978368ee..a9e9316bfbde71d82d46258346c25905
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
-@@ -452,6 +453,7 @@ public class PurpurWorldConfig {
+@@ -448,6 +449,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/0231-Configurable-phantom-size.patch b/patches/server/0231-Configurable-phantom-size.patch
index d21a39cea..50281d477 100644
--- a/patches/server/0231-Configurable-phantom-size.patch
+++ b/patches/server/0231-Configurable-phantom-size.patch
@@ -22,10 +22,10 @@ index 718311ba402fbc5b05fd480395d29578d1f3fd71..493e9ee0585ae419caffaa163f4975ab
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a9e9316bfbde71d82d46258346c259052f2c7e2c..cd159fcbf82baff184fceca54bc8bcaf60fd470e 100644
+index bfccba06e4ac08d9620ff003672e808c84eb2125..5f61191fe61a0dae7a991e5df98ed4c1217dcbd4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2201,6 +2201,8 @@ public class PurpurWorldConfig {
+@@ -2197,6 +2197,8 @@ public class PurpurWorldConfig {
public boolean phantomFlamesOnSwoop = false;
public boolean phantomTakeDamageFromWater = false;
public boolean phantomAlwaysDropExp = false;
@@ -34,7 +34,7 @@ index a9e9316bfbde71d82d46258346c259052f2c7e2c..cd159fcbf82baff184fceca54bc8bcaf
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
-@@ -2237,6 +2239,13 @@ public class PurpurWorldConfig {
+@@ -2233,6 +2235,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/0233-Configurable-minimum-demand-for-trades.patch b/patches/server/0233-Configurable-minimum-demand-for-trades.patch
index 70d17d8f0..64dc7a66b 100644
--- a/patches/server/0233-Configurable-minimum-demand-for-trades.patch
+++ b/patches/server/0233-Configurable-minimum-demand-for-trades.patch
@@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef
public ItemStack assemble() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index cd159fcbf82baff184fceca54bc8bcaf60fd470e..67ada375ab78d5dafa7a10b1cd30986031b3ac1f 100644
+index 5f61191fe61a0dae7a991e5df98ed4c1217dcbd4..70faadcef5ea8b93d7c69ef1c8db30f7695057f3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2931,6 +2931,7 @@ public class PurpurWorldConfig {
+@@ -2927,6 +2927,7 @@ public class PurpurWorldConfig {
public boolean villagerTakeDamageFromWater = false;
public boolean villagerAllowTrading = true;
public boolean villagerAlwaysDropExp = false;
@@ -51,7 +51,7 @@ index cd159fcbf82baff184fceca54bc8bcaf60fd470e..67ada375ab78d5dafa7a10b1cd309860
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2952,6 +2953,7 @@ public class PurpurWorldConfig {
+@@ -2948,6 +2949,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/0234-Lobotomize-stuck-villagers.patch b/patches/server/0234-Lobotomize-stuck-villagers.patch
index 1c71127e9..870e9f12b 100644
--- a/patches/server/0234-Lobotomize-stuck-villagers.patch
+++ b/patches/server/0234-Lobotomize-stuck-villagers.patch
@@ -107,10 +107,10 @@ index bd2987fa1fb194a581567134ed980e8fc043f435..bdd345595ed71a8018349e184afe8582
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 67ada375ab78d5dafa7a10b1cd30986031b3ac1f..f3c7fa2896f440be4da45ba23830f3271043a927 100644
+index 70faadcef5ea8b93d7c69ef1c8db30f7695057f3..0d8a5e8c06f9c64b6f1eff0c0660c66692b59b29 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2932,6 +2932,9 @@ public class PurpurWorldConfig {
+@@ -2928,6 +2928,9 @@ public class PurpurWorldConfig {
public boolean villagerAllowTrading = true;
public boolean villagerAlwaysDropExp = false;
public int villagerMinimumDemand = 0;
@@ -120,7 +120,7 @@ index 67ada375ab78d5dafa7a10b1cd30986031b3ac1f..f3c7fa2896f440be4da45ba23830f327
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2954,6 +2957,18 @@ public class PurpurWorldConfig {
+@@ -2950,6 +2953,18 @@ public class PurpurWorldConfig {
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp);
villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand);
diff --git a/patches/server/0235-Option-for-villager-display-trade-item.patch b/patches/server/0235-Option-for-villager-display-trade-item.patch
index 823ae3457..03e7b0a42 100644
--- a/patches/server/0235-Option-for-villager-display-trade-item.patch
+++ b/patches/server/0235-Option-for-villager-display-trade-item.patch
@@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c
&& this.lookTime > 0
&& entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f3c7fa2896f440be4da45ba23830f3271043a927..132cef6e9191acdac437d3a3d85d96006aab9669 100644
+index 0d8a5e8c06f9c64b6f1eff0c0660c66692b59b29..343050a9abf451dfcd4092d6764e0a6f5f808c0a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2935,6 +2935,7 @@ public class PurpurWorldConfig {
+@@ -2931,6 +2931,7 @@ public class PurpurWorldConfig {
public boolean villagerLobotomizeEnabled = false;
public int villagerLobotomizeCheckInterval = 100;
public boolean villagerLobotomizeWaitUntilTradeLocked = false;
@@ -28,7 +28,7 @@ index f3c7fa2896f440be4da45ba23830f3271043a927..132cef6e9191acdac437d3a3d85d9600
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2969,6 +2970,7 @@ public class PurpurWorldConfig {
+@@ -2965,6 +2966,7 @@ public class PurpurWorldConfig {
villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled);
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked);
diff --git a/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
index 7bc046299..7ce0a9f6a 100644
--- a/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
+++ b/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
@@ -17,10 +17,10 @@ index c9cabb061ebc9172647304431cc3fb2593dd47ba..565408c03849fb3011fb708478a99ec6
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 132cef6e9191acdac437d3a3d85d96006aab9669..8ed558043704a51ef5e932696aba1fb9ffb4da46 100644
+index 343050a9abf451dfcd4092d6764e0a6f5f808c0a..7bde682844a6789154d8b08f81fbcf8ae6eb9316 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1059,8 +1059,10 @@ public class PurpurWorldConfig {
+@@ -1055,8 +1055,10 @@ public class PurpurWorldConfig {
}
public boolean spawnerDeactivateByRedstone = false;
diff --git a/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch
index 2a9be54c9..9281fe42c 100644
--- a/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch
+++ b/patches/server/0237-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 391625ad3fd69f7ab4052afe2ea4d566dd1ac5a5..2ff8d9a0d4095aebeec7dff76fd0280b29762c3d 100644
+index cb9ae94b4fff8406cdbc40a1d5d38f0272a4a212..409d5c775b3187f2d3b58879e3c945d16a690299 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1579,13 +1579,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -25,7 +25,7 @@ index 391625ad3fd69f7ab4052afe2ea4d566dd1ac5a5..2ff8d9a0d4095aebeec7dff76fd0280b
if (entityliving2 instanceof net.minecraft.world.entity.player.Player) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 572587db064c87ac86add6d9eece5ac94374c7b9..9add2ba364e80815ec9c530b984e1619b6607bb8 100644
+index 0a3da3d35cd6b41003692d968b77384e7460ca97..b21cd824587f7bed53255f7d0fc7bedefd45f9a4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -513,7 +513,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
@@ -38,10 +38,10 @@ index 572587db064c87ac86add6d9eece5ac94374c7b9..9add2ba364e80815ec9c530b984e1619
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 8ed558043704a51ef5e932696aba1fb9ffb4da46..09c681d1be0ac834df3e5f1af95d1e16c080f60a 100644
+index 7bde682844a6789154d8b08f81fbcf8ae6eb9316..951883a41b2aa2ad37eb32c2c843f5d8d313dd7a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -146,6 +146,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 8ed558043704a51ef5e932696aba1fb9ffb4da46..09c681d1be0ac834df3e5f1af95d1e16
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
-@@ -180,6 +181,7 @@ public class PurpurWorldConfig {
+@@ -176,6 +177,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/0238-Anvil-repair-damage-options.patch b/patches/server/0238-Anvil-repair-damage-options.patch
index fd6bb4603..ac1e89b9d 100644
--- a/patches/server/0238-Anvil-repair-damage-options.patch
+++ b/patches/server/0238-Anvil-repair-damage-options.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Anvil repair/damage options
diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java
-index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a9257519e 100644
+index c77d4adbba79ec39ab78c2a6bac1e8f94ba7fd68..97f75aa767c90a244a094367b408e6899224c7b9 100644
--- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java
@@ -59,6 +59,53 @@ public class AnvilBlock extends FallingBlock {
@@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
if (world.isClientSide) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 09c681d1be0ac834df3e5f1af95d1e16c080f60a..d67353c9c3a35f8b8961a8bd840374511b64e2f5 100644
+index 951883a41b2aa2ad37eb32c2c843f5d8d313dd7a..50e310a86c367340ce4d73e31b2648e315c43113 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -826,9 +826,13 @@ public class PurpurWorldConfig {
+@@ -822,9 +822,13 @@ public class PurpurWorldConfig {
public boolean anvilAllowColors = false;
public boolean anvilColorsUseMiniMessage;
diff --git a/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch
index 6fb4385b2..2dcc49e14 100644
--- a/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch
+++ b/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch
@@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd
return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
// Purpur end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d67353c9c3a35f8b8961a8bd840374511b64e2f5..7d00d2204fbba657d16693b89de5645bf0b64b04 100644
+index 50e310a86c367340ce4d73e31b2648e315c43113..f9d927dccb7ba682c38adc734bc4999277a5c915 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1087,12 +1087,14 @@ public class PurpurWorldConfig {
+@@ -1083,12 +1083,14 @@ public class PurpurWorldConfig {
public boolean turtleEggsBreakFromMinecarts = false;
public boolean turtleEggsBypassMobGriefing = false;
public int turtleEggsRandomTickCrackChance = 500;
diff --git a/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch
index 79a9c1423..28c031d1a 100644
--- a/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch
+++ b/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch
@@ -18,10 +18,10 @@ index 3d93d548b8c68cc0ee7c52dd0f92664c47077b6d..4af1857c4fbc18067b2fa0ae43501ce5
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 7d00d2204fbba657d16693b89de5645bf0b64b04..00d2295aed2ef04f5dab922012710d9ade7c0afa 100644
+index f9d927dccb7ba682c38adc734bc4999277a5c915..b6b2dde78249f6fd922bfbcdcbee2ee4e734f6e7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2946,6 +2946,8 @@ public class PurpurWorldConfig {
+@@ -2942,6 +2942,8 @@ public class PurpurWorldConfig {
public int villagerLobotomizeCheckInterval = 100;
public boolean villagerLobotomizeWaitUntilTradeLocked = false;
public boolean villagerDisplayTradeItem = true;
@@ -30,7 +30,7 @@ index 7d00d2204fbba657d16693b89de5645bf0b64b04..00d2295aed2ef04f5dab922012710d9a
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -2981,6 +2983,8 @@ public class PurpurWorldConfig {
+@@ -2977,6 +2979,8 @@ public class PurpurWorldConfig {
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked);
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
diff --git a/patches/server/0243-Stonecutter-damage.patch b/patches/server/0243-Stonecutter-damage.patch
index a78b08cc5..d155f94aa 100644
--- a/patches/server/0243-Stonecutter-damage.patch
+++ b/patches/server/0243-Stonecutter-damage.patch
@@ -115,7 +115,7 @@ index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f
} else if (blockState.is(Blocks.HONEY_BLOCK)) {
return PathType.STICKY_HONEY;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 220e663d7b1e134845e8d9b52ae104b77fb29c46..3c533df90cf8b1a69b190ffee06c9254e4e4d764 100644
+index df37da354b5ffffc484a8660949c8969a5b3acc1..858c6c860d9b8aaa1d3f9f77a9e410726239d7cc 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1142,7 +1142,7 @@ public class CraftEventFactory {
@@ -128,7 +128,7 @@ index 220e663d7b1e134845e8d9b52ae104b77fb29c46..3c533df90cf8b1a69b190ffee06c9254
} else if (source.is(DamageTypes.HOT_FLOOR)) {
cause = DamageCause.HOT_FLOOR;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
-index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c880563d9 100644
+index 11dc88158bb78db1c27cbdfc02d95807b919f723..73ddd6210778e323786900813fc70d1f3a2cf5f2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -211,8 +211,10 @@ public class PurpurConfig {
@@ -143,10 +143,10 @@ index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c
public static boolean advancementOnlyBroadcastToAffectedPlayer = false;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 00d2295aed2ef04f5dab922012710d9ade7c0afa..bfe8e51c895030637d2ca1744c9797f099b0cb7a 100644
+index b6b2dde78249f6fd922bfbcdcbee2ee4e734f6e7..4517c7a6f0bce6e6c4a4ce9a935e0deeb47d9c50 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1082,6 +1082,11 @@ public class PurpurWorldConfig {
+@@ -1078,6 +1078,11 @@ public class PurpurWorldConfig {
spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud);
}
diff --git a/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch
index 37b0ac2f4..6f32a6c53 100644
--- a/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch
+++ b/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch
@@ -18,10 +18,10 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bfe8e51c895030637d2ca1744c9797f099b0cb7a..f6b57116973fbe100df5c07b887787d23e13e2af 100644
+index 4517c7a6f0bce6e6c4a4ce9a935e0deeb47d9c50..c8899c4823fbce311df88f047ddfcc7a2b91ffc2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig {
+@@ -1019,6 +1019,11 @@ public class PurpurWorldConfig {
pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit);
}
diff --git a/patches/server/0245-Add-config-for-snow-on-blue-ice.patch b/patches/server/0245-Add-config-for-snow-on-blue-ice.patch
index 3b7c2cf94..d24f9ed29 100644
--- a/patches/server/0245-Add-config-for-snow-on-blue-ice.patch
+++ b/patches/server/0245-Add-config-for-snow-on-blue-ice.patch
@@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index f6b57116973fbe100df5c07b887787d23e13e2af..0ce69521310715fc7cb1e5492c3767522d272170 100644
+index c8899c4823fbce311df88f047ddfcc7a2b91ffc2..5293d9f43025b282e7c7c5fd908ca1ddeb3fa840 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1004,9 +1004,11 @@ public class PurpurWorldConfig {
+@@ -1000,9 +1000,11 @@ public class PurpurWorldConfig {
public boolean mobsSpawnOnPackedIce = true;
public boolean mobsSpawnOnBlueIce = true;
diff --git a/patches/server/0246-Skeletons-eat-wither-roses.patch b/patches/server/0246-Skeletons-eat-wither-roses.patch
index 0a7662fef..bf46269a9 100644
--- a/patches/server/0246-Skeletons-eat-wither-roses.patch
+++ b/patches/server/0246-Skeletons-eat-wither-roses.patch
@@ -90,10 +90,10 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..cb714f78ad73f709967d7449c411c5b1
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0ce69521310715fc7cb1e5492c3767522d272170..5d63c4d4e79513ceba95910abc99144547cc39b6 100644
+index 5293d9f43025b282e7c7c5fd908ca1ddeb3fa840..1aa38cbc1d35424d9d4f37fc37dbb99545986891 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2607,6 +2607,7 @@ public class PurpurWorldConfig {
+@@ -2603,6 +2603,7 @@ public class PurpurWorldConfig {
public boolean skeletonTakeDamageFromWater = false;
public boolean skeletonAlwaysDropExp = false;
public double skeletonHeadVisibilityPercent = 0.5D;
@@ -101,7 +101,7 @@ index 0ce69521310715fc7cb1e5492c3767522d272170..5d63c4d4e79513ceba95910abc991445
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2621,6 +2622,7 @@ public class PurpurWorldConfig {
+@@ -2617,6 +2618,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/0247-Enchantment-Table-Persists-Lapis.patch b/patches/server/0247-Enchantment-Table-Persists-Lapis.patch
index 2dff1c2ad..bb74044bc 100644
--- a/patches/server/0247-Enchantment-Table-Persists-Lapis.patch
+++ b/patches/server/0247-Enchantment-Table-Persists-Lapis.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
-index 1ef014b29645ed09ccffb898f1819428c3dc6259..859deb56915dba0e9189103708060cafd196c58e 100644
+index 9bc9b4218ffd966f43097c9e009b2926af58c810..e59a38d051179753fa9b29e8d746e25e162cac3e 100644
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
@@ -42,6 +42,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
@@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f
+ // Purpur
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 5d63c4d4e79513ceba95910abc99144547cc39b6..79ab738db9ab21efc10342350c30be976059af57 100644
+index 1aa38cbc1d35424d9d4f37fc37dbb99545986891..9e3e3780e463275403276dc01a547a867456fe55 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1581,6 +1581,11 @@ public class PurpurWorldConfig {
+@@ -1577,6 +1577,11 @@ public class PurpurWorldConfig {
elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp);
}
diff --git a/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch
index 094842eaf..c39f47a6b 100644
--- a/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch
+++ b/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch
@@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 79ab738db9ab21efc10342350c30be976059af57..cf1c3da820858af68f26258802c596134d609012 100644
+index 9e3e3780e463275403276dc01a547a867456fe55..2754857fd911e7516c0aba65c14ce3e88a94828d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1061,6 +1061,11 @@ public class PurpurWorldConfig {
+@@ -1057,6 +1057,11 @@ public class PurpurWorldConfig {
}
}
diff --git a/patches/server/0250-Config-to-not-let-coral-die.patch b/patches/server/0250-Config-to-not-let-coral-die.patch
index ef63c5caa..87b50e1fc 100644
--- a/patches/server/0250-Config-to-not-let-coral-die.patch
+++ b/patches/server/0250-Config-to-not-let-coral-die.patch
@@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374
int i = aenumdirection.length;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index cf1c3da820858af68f26258802c596134d609012..d0bfa10a1ae1bb6b75b832e2e984a7c7d807e797 100644
+index 2754857fd911e7516c0aba65c14ce3e88a94828d..1165b39c25291b096a8735086e4b43b7065910bb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -910,6 +910,11 @@ public class PurpurWorldConfig {
+@@ -906,6 +906,11 @@ public class PurpurWorldConfig {
composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess);
}
diff --git a/patches/server/0251-Add-local-difficulty-api.patch b/patches/server/0251-Add-local-difficulty-api.patch
index c4d44eb6d..20eae83c7 100644
--- a/patches/server/0251-Add-local-difficulty-api.patch
+++ b/patches/server/0251-Add-local-difficulty-api.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 38b046da5acac8633db8618a2957187d291f5e73..f48232e3309cb07ce7b11676b24c62982e3c65a3 100644
+index 33e4818ba5a90d78d69baad9f6b1be1b1382e9f3..02dca1188af7b235610d4f432cae47bcd624d5b8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -2345,6 +2345,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2386,6 +2386,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight());
}
diff --git a/patches/server/0252-Add-toggle-for-RNG-manipulation.patch b/patches/server/0252-Add-toggle-for-RNG-manipulation.patch
index 1d9d0f30a..72a1f871f 100644
--- a/patches/server/0252-Add-toggle-for-RNG-manipulation.patch
+++ b/patches/server/0252-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 543fc2aeee9fa16a5493b947e49d37ff678935df..74c5b87a2a382e37db7e4c12470badcf9e07cf54 100644
+index 338c2afa277178b3d4d667142799f015c7b97cd0..7e7d13424ea1328ca37b1201a74ac0d4f933a8c3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -582,7 +582,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -33,10 +33,10 @@ index ea474ba1d37a594177ada2fd93302f874ed5dc73..3ca9a7f289d8c3f0b0df8f1cd4a5ca12
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d0bfa10a1ae1bb6b75b832e2e984a7c7d807e797..2c4f8c06d85d456ccc6ad069b9bccbc44146b983 100644
+index 1165b39c25291b096a8735086e4b43b7065910bb..076988e405137c52baa84408bcec9fa9c80f76a0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -215,9 +215,11 @@ public class PurpurWorldConfig {
+@@ -211,9 +211,11 @@ public class PurpurWorldConfig {
public int entityLifeSpan = 0;
public float entityLeftHandedChance = 0.05f;
diff --git a/patches/server/0253-Remove-Timings.patch b/patches/server/0253-Remove-Timings.patch
index aabd87193..2df116d04 100644
--- a/patches/server/0253-Remove-Timings.patch
+++ b/patches/server/0253-Remove-Timings.patch
@@ -42,10 +42,10 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..01efbc507b3d58f13f78ee286f93df40
} catch (Exception exception) {
if (exception instanceof ReportedException) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index bf6620d9041ea63bc09d361e205c685de0542437..43b2902bb015001de5939da801979194af7bf501 100644
+index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949edba80c373 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1605,15 +1605,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
entityplayer.connection.suspendFlushing();
});
@@ -97,7 +97,7 @@ index bf6620d9041ea63bc09d361e205c685de0542437..43b2902bb015001de5939da801979194
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
-@@ -1766,21 +1766,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { // Paper - Ensure main
@@ -522,7 +522,7 @@ index f0198fbdc39732075b647e6ca99a6ded99d37efc..6f4e471c45195996a1cdd93c7dfb64e6
int numSaved = 0;
long now = MinecraftServer.currentTick;
for (int i = 0; i < this.players.size(); ++i) {
-@@ -1248,7 +1248,7 @@ public abstract class PlayerList {
+@@ -1249,7 +1249,7 @@ public abstract class PlayerList {
}
// Paper end - Incremental chunk and player saving
}
@@ -581,7 +581,7 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 442c77fb3ac421ae6a90b5b96e1d00d4d65eeade..e7642c30833d1efd159cd15429e1247022cfd511 100644
+index 7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac..ccc6204141298deea56d996fab24254d25857da5 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1415,15 +1415,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
diff --git a/patches/server/0254-Remove-Mojang-Profiler.patch b/patches/server/0254-Remove-Mojang-Profiler.patch
index 40611b8c8..7672e7097 100644
--- a/patches/server/0254-Remove-Mojang-Profiler.patch
+++ b/patches/server/0254-Remove-Mojang-Profiler.patch
@@ -83,7 +83,7 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 43b2902bb015001de5939da801979194af7bf501..cef8a7eae708a47dc50c8392ab0e1a35882bfcfa 100644
+index 73d6c71c6e38dcfff9f09fd2f54949edba80c373..96902343e202617413672ddb609e4b91713e5b94 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -422,13 +422,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
return false;
} : this::haveTime);
-@@ -1330,7 +1330,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
-@@ -1647,7 +1647,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur
@@ -246,7 +246,7 @@ index 43b2902bb015001de5939da801979194af7bf501..cef8a7eae708a47dc50c8392ab0e1a35
try {
//worldserver.timings.doTick.startTiming(); // Spigot // Purpur
-@@ -1838,17 +1838,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
this.executeBlocking(() -> {
this.saveDebugReport(path.resolve("server"));
-@@ -2860,40 +2860,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 1.0E-7D) {
movement = movement.multiply(this.stuckSpeedMultiplier);
this.stuckSpeedMultiplier = Vec3.ZERO;
-@@ -1176,7 +1176,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1178,7 +1178,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Paper start - ignore movement changes while inactive.
if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) {
setDeltaMovement(Vec3.ZERO);
@@ -1112,7 +1112,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
return;
}
// Paper end
-@@ -1197,8 +1197,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1199,8 +1199,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z);
}
@@ -1123,7 +1123,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
boolean flag = !Mth.equal(movement.x, vec3d1.x);
boolean flag1 = !Mth.equal(movement.z, vec3d1.z);
-@@ -1217,7 +1217,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1219,7 +1219,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition);
if (this.isRemoved()) {
@@ -1132,7 +1132,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
} else {
if (this.horizontalCollision) {
Vec3 vec3d2 = this.getDeltaMovement();
-@@ -1320,7 +1320,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1322,7 +1322,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.setRemainingFireTicks(-this.getFireImmuneTicks());
}
@@ -1141,7 +1141,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
}
}
// Paper start - detailed watchdog information
-@@ -3312,7 +3312,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3314,7 +3314,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.processPortalCooldown();
if (this.portalProcess != null) {
if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) {
@@ -1150,7 +1150,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
this.setPortalCooldown();
DimensionTransition dimensiontransition = this.portalProcess.getPortalDestination(worldserver, this);
-@@ -3324,7 +3324,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3326,7 +3326,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
}
@@ -1159,7 +1159,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
} else if (this.portalProcess.hasExpired()) {
this.portalProcess = null;
}
-@@ -3827,7 +3827,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3829,7 +3829,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
}
@@ -1168,7 +1168,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
Entity entity2 = worldserver1.dimension() == worldserver.dimension() ? this : this.getType().create(worldserver1);
if (entity2 != null) {
-@@ -3863,7 +3863,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3865,7 +3865,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
teleportTarget.postDimensionTransition().onTransition(entity2);
}
@@ -1178,7 +1178,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8
}
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index b6b23819deeb8a439de37c291f82a4aa8c30ffc5..8f06ae8d6657665a76d7b4fff5b517b9a25a3085 100644
+index 409d5c775b3187f2d3b58879e3c945d16a690299..7e00f1f875c7761cfbc1964a3d76da08c36c60f1 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -444,7 +444,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
diff --git a/patches/server/0257-Debug-Marker-API.patch b/patches/server/0257-Debug-Marker-API.patch
index 2d8a1d5c2..a25fcc86c 100644
--- a/patches/server/0257-Debug-Marker-API.patch
+++ b/patches/server/0257-Debug-Marker-API.patch
@@ -52,10 +52,10 @@ index ad71ba70b24481120e303e174ab07c7a31a068c6..300c8a94771d56e6bb6da692092882c3
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index f48232e3309cb07ce7b11676b24c62982e3c65a3..ab16b5a8381fcd5f0890e0fc0801a6e88ce8a740 100644
+index 02dca1188af7b235610d4f432cae47bcd624d5b8..ad74d80f620d0e481a9613fcb29d3ab114154a4e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -2349,6 +2349,42 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2390,6 +2390,42 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public float getLocalDifficultyAt(Location location) {
return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty();
}
diff --git a/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch
index 46c64a1e2..758c970ec 100644
--- a/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch
+++ b/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch
@@ -18,10 +18,10 @@ index 4dc060bc677984d91a30a88155c576d5e187aa1b..061706ee732f9809d6b73305c1487125
if (entityhuman != null) {
double d2 = entityhuman.distanceToSqr(d0, (double) i, d1);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 2c4f8c06d85d456ccc6ad069b9bccbc44146b983..a849b947f1f2c06571687d35bebf73e0f7635b10 100644
+index 076988e405137c52baa84408bcec9fa9c80f76a0..c5b3ab8b87cae756149b98580a24766e67dc5bc6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -382,6 +382,7 @@ public class PurpurWorldConfig {
+@@ -378,6 +378,7 @@ public class PurpurWorldConfig {
public boolean phantomSpawning;
public boolean villagerTraderSpawning;
public boolean villageSiegeSpawning;
@@ -29,7 +29,7 @@ index 2c4f8c06d85d456ccc6ad069b9bccbc44146b983..a849b947f1f2c06571687d35bebf73e0
private void mobSpawnerSettings() {
// values of "default" or null will default to true only if the world environment is normal (aka overworld)
Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL);
-@@ -390,6 +391,7 @@ public class PurpurWorldConfig {
+@@ -386,6 +387,7 @@ public class PurpurWorldConfig {
phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate);
villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate);
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);
diff --git a/patches/server/0259-Add-skeleton-bow-accuracy-option.patch b/patches/server/0259-Add-skeleton-bow-accuracy-option.patch
index 6ab7078ac..1b58fdef8 100644
--- a/patches/server/0259-Add-skeleton-bow-accuracy-option.patch
+++ b/patches/server/0259-Add-skeleton-bow-accuracy-option.patch
@@ -18,10 +18,10 @@ index 4aeb23de31e826d5cf27f8c91bd60c911f769a17..f9532a45419699585d1f20d27d5857a3
org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper
if (event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a849b947f1f2c06571687d35bebf73e0f7635b10..605f08428ef8e9f784313a9f50b7483ff1ebb347 100644
+index c5b3ab8b87cae756149b98580a24766e67dc5bc6..b507f67106e5096ebb75fd50b470916feeec6504 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2627,6 +2627,8 @@ public class PurpurWorldConfig {
+@@ -2623,6 +2623,8 @@ public class PurpurWorldConfig {
public boolean skeletonAlwaysDropExp = false;
public double skeletonHeadVisibilityPercent = 0.5D;
public int skeletonFeedWitherRoses = 0;
@@ -30,7 +30,7 @@ index a849b947f1f2c06571687d35bebf73e0f7635b10..605f08428ef8e9f784313a9f50b7483f
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
-@@ -2642,6 +2644,18 @@ public class PurpurWorldConfig {
+@@ -2638,6 +2640,18 @@ public class PurpurWorldConfig {
skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp);
skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent);
skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses);
diff --git a/patches/server/0261-Make-pufferfish-config-relocatable.patch b/patches/server/0261-Make-pufferfish-config-relocatable.patch
index aa6c6c0f7..6df9e6105 100644
--- a/patches/server/0261-Make-pufferfish-config-relocatable.patch
+++ b/patches/server/0261-Make-pufferfish-config-relocatable.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
-index 92685ae1288fa509301c696bd7e49fcdab8062af..2acb11790036827fb6335b5a5337d367a0ba0854 100644
+index bcaf4932c82b0e6702450e2feb09828edf58cbf0..8f1645573780d12bf29d441d31eab1b76cd9e70f 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -28,6 +28,7 @@ public class PufferfishConfig {
@@ -26,19 +26,19 @@ index 92685ae1288fa509301c696bd7e49fcdab8062af..2acb11790036827fb6335b5a5337d367
if (configFile.exists()) {
try {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index a3433ed1e8a15ec6336f99842bc80c62e81be792..dbfdb4bb7dd7ba139550e1ec4889d452507be511 100644
+index 430418990e218bca55fd7c817086bf7a6866fa1a..4bd75f2a4f932fc63efd4e4d884aa834184250fa 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -248,6 +248,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
- org.purpurmc.purpur.PurpurConfig.registerCommands();
- // Purpur end
+ this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
+ com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
+ gg.pufferfish.pufferfish.PufferfishConfig.pufferfishFile = (java.io.File) options.valueOf("pufferfish-settings"); // Purpur
gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish
gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 260f79affee997adbe8d08f2a2cb3aa68083f497..4e58fd710ff9edfb4c1981c3e6e5417619e1e9c0 100644
+index 316c5e1460ccf3386c4c8623eabb7f087df8c4b9..e35a562eec4b65335723c50180fe1471f858ae60 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -182,6 +182,12 @@ public class Main {
diff --git a/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch
index 8ee836d70..df690be07 100644
--- a/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch
+++ b/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 7e3ed2cdd5898ebc33e392a3b4324021e6eba13d..3c8c5ef45306c80a59501adf5fd8bb36191ccc89 100644
+index 7e00f1f875c7761cfbc1964a3d76da08c36c60f1..f714e2dc212a3b70977e93c55e94f8b272c5b02d 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1129,6 +1129,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -30,7 +30,7 @@ index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09b
this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this));
this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 605f08428ef8e9f784313a9f50b7483ff1ebb347..d24f489d4a55fba13cb2a95a6111c3d5654747c1 100644
+index b507f67106e5096ebb75fd50b470916feeec6504..a4df0673c452cb4762db4a32d51492c04a849add 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -131,6 +131,7 @@ public class PurpurWorldConfig {
@@ -41,7 +41,7 @@ index 605f08428ef8e9f784313a9f50b7483ff1ebb347..d24f489d4a55fba13cb2a95a6111c3d5
public boolean noteBlockIgnoreAbove = false;
public boolean persistentDroppableEntityDisplayNames = true;
public boolean persistentTileEntityLore = false;
-@@ -160,6 +161,7 @@ public class PurpurWorldConfig {
+@@ -158,6 +159,7 @@ public class PurpurWorldConfig {
imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals);
imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
diff --git a/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch
index af38920ac..c2a9c770a 100644
--- a/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch
+++ b/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch
@@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d24f489d4a55fba13cb2a95a6111c3d5654747c1..3ac6dff639e56cfd0f2411f02f34991f18f9b8d6 100644
+index a4df0673c452cb4762db4a32d51492c04a849add..805cc5383c31784ea05ed2916215d91eb2f18f50 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -1464,6 +1464,7 @@ public class PurpurWorldConfig {
+@@ -1460,6 +1460,7 @@ public class PurpurWorldConfig {
public boolean creeperHealthRadius = false;
public boolean creeperAlwaysDropExp = false;
public double creeperHeadVisibilityPercent = 0.5D;
@@ -35,7 +35,7 @@ index d24f489d4a55fba13cb2a95a6111c3d5654747c1..3ac6dff639e56cfd0f2411f02f34991f
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
-@@ -1483,6 +1484,7 @@ public class PurpurWorldConfig {
+@@ -1479,6 +1480,7 @@ public class PurpurWorldConfig {
creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp);
creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent);
diff --git a/patches/server/0271-Fire-Immunity-API.patch b/patches/server/0271-Fire-Immunity-API.patch
index bde452c20..e45ebe28d 100644
--- a/patches/server/0271-Fire-Immunity-API.patch
+++ b/patches/server/0271-Fire-Immunity-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b869227612f04b461 100644
+index 95885f71825cbf1e46001d60f81dc88049ec6e22..0e3494fc7a073eb6cde1a2e62303b1238d59b156 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -433,6 +433,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -16,7 +16,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761
public void setOrigin(@javax.annotation.Nonnull Location location) {
this.origin = location.toVector();
-@@ -1878,7 +1879,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1880,7 +1881,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean fireImmune() {
@@ -25,7 +25,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761
}
public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) {
-@@ -2587,6 +2588,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2589,6 +2590,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
nbttagcompound.putBoolean("Paper.FreezeLock", true);
}
// Paper end
@@ -37,7 +37,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761
return nbttagcompound;
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
-@@ -2734,6 +2740,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2736,6 +2742,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
freezeLocked = nbt.getBoolean("Paper.FreezeLock");
}
// Paper end
@@ -50,7 +50,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT");
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-index 33469665998543f45e68eb50e7dc3f3c6af7b0c4..bec40e26e17ba6fdefb68c79e2fa7a9593b0f4fe 100644
+index 7b7a58039eb1a288262228444712c84d6e2aef24..770606c4462d85d116f6d0bf91192dc49f438d0f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -87,6 +87,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
diff --git a/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
index b4a12e3f2..c8dcda443 100644
--- a/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
+++ b/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index d383a8c3c9d3ba5fc191826b869227612f04b461..e3e71558d9d99fa878511f051d1d8592f8684ac0 100644
+index 0e3494fc7a073eb6cde1a2e62303b1238d59b156..7aadcaa1785c6560eb1ce2f1179225facca47d84 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -968,6 +968,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -970,6 +970,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
&& this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v)
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
// Paper end - Configurable nether ceiling damage
@@ -17,10 +17,10 @@ index d383a8c3c9d3ba5fc191826b869227612f04b461..e3e71558d9d99fa878511f051d1d8592
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 3ac6dff639e56cfd0f2411f02f34991f18f9b8d6..664929350ede4ab649ea3e5fbc188bd985043945 100644
+index 805cc5383c31784ea05ed2916215d91eb2f18f50..85bf63343593424977ea4f79e4d16002f60cdd89 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -422,6 +422,7 @@ public class PurpurWorldConfig {
+@@ -418,6 +418,7 @@ public class PurpurWorldConfig {
public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false;
@@ -28,7 +28,7 @@ index 3ac6dff639e56cfd0f2411f02f34991f18f9b8d6..664929350ede4ab649ea3e5fbc188bd9
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
public boolean creativeOnePunch = false;
-@@ -449,6 +450,7 @@ public class PurpurWorldConfig {
+@@ -445,6 +446,7 @@ public class PurpurWorldConfig {
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
diff --git a/patches/server/0275-End-Crystal-Cramming.patch b/patches/server/0275-End-Crystal-Cramming.patch
index 9c5e57486..5262d6725 100644
--- a/patches/server/0275-End-Crystal-Cramming.patch
+++ b/patches/server/0275-End-Crystal-Cramming.patch
@@ -17,10 +17,10 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f
// Purpur start
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 664929350ede4ab649ea3e5fbc188bd985043945..bb4ba53f6cb9de9356f918881cbdad5a23dbcdc9 100644
+index 85bf63343593424977ea4f79e4d16002f60cdd89..af8a2ac0e0e089362f0b1be6e48cf57e49a67ad7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -953,6 +953,7 @@ public class PurpurWorldConfig {
+@@ -949,6 +949,7 @@ public class PurpurWorldConfig {
public double basedEndCrystalExplosionPower = 6.0D;
public boolean basedEndCrystalExplosionFire = false;
public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
@@ -28,7 +28,7 @@ index 664929350ede4ab649ea3e5fbc188bd985043945..bb4ba53f6cb9de9356f918881cbdad5a
private void endCrystalSettings() {
if (PurpurConfig.version < 31) {
if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) {
-@@ -980,6 +981,7 @@ public class PurpurWorldConfig {
+@@ -976,6 +977,7 @@ public class PurpurWorldConfig {
log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`");
basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
}
diff --git a/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
index 121b93b5f..6c4491172 100644
--- a/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
+++ b/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
@@ -36,10 +36,10 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9
BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index bb4ba53f6cb9de9356f918881cbdad5a23dbcdc9..a27129bdc292623a8ecf0d98c265f91df9d694c9 100644
+index af8a2ac0e0e089362f0b1be6e48cf57e49a67ad7..3a004e2cf42c90f453f768b245e10c59fceeb3db 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -852,11 +852,13 @@ public class PurpurWorldConfig {
+@@ -848,11 +848,13 @@ public class PurpurWorldConfig {
public int beaconLevelTwo = 30;
public int beaconLevelThree = 40;
public int beaconLevelFour = 50;
diff --git a/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch
index 1b4fe3eec..110605051 100644
--- a/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch
+++ b/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch
@@ -27,10 +27,10 @@ index 6395bd2ffd734ca73af17b003d1505971ea31a48..261613d254edef33431794d5e1f7802c
}
// CraftBukkit end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a27129bdc292623a8ecf0d98c265f91df9d694c9..c2a62fdd982121cd2b8d57992730d82d913d9cae 100644
+index 3a004e2cf42c90f453f768b245e10c59fceeb3db..51bc35683234e0dab67aa079b323671755e9c3c2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -229,6 +229,11 @@ public class PurpurWorldConfig {
+@@ -225,6 +225,11 @@ public class PurpurWorldConfig {
infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows);
}
diff --git a/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch
index 4f919f620..2f0667919 100644
--- a/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch
+++ b/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch
@@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c2a62fdd982121cd2b8d57992730d82d913d9cae..993784f096ed3bc0a878e9f5b0c9a5e3f9a7f7a7 100644
+index 51bc35683234e0dab67aa079b323671755e9c3c2..f2e930f43ca30dde37ea8bb8bd5012cac9e61fac 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -906,8 +906,20 @@ public class PurpurWorldConfig {
+@@ -902,8 +902,20 @@ public class PurpurWorldConfig {
}
public boolean cactusBreaksFromSolidNeighbors = true;
diff --git a/patches/server/0284-Shears-can-defuse-TNT.patch b/patches/server/0284-Shears-can-defuse-TNT.patch
index db465f837..d1a15e82f 100644
--- a/patches/server/0284-Shears-can-defuse-TNT.patch
+++ b/patches/server/0284-Shears-can-defuse-TNT.patch
@@ -42,10 +42,10 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba
+ // Purpur end - Shears can defuse TNT
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 993784f096ed3bc0a878e9f5b0c9a5e3f9a7f7a7..602dc0e0dd27580fe30aac979998edbca64842f4 100644
+index f2e930f43ca30dde37ea8bb8bd5012cac9e61fac..bf8570b28103b0d7448acef4d0cab96855d8ef23 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -3437,4 +3437,11 @@ public class PurpurWorldConfig {
+@@ -3433,4 +3433,11 @@ public class PurpurWorldConfig {
cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance);
cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance);
}
diff --git a/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch
index ab4a63c0f..5b3e48822 100644
--- a/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch
+++ b/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch
@@ -18,10 +18,10 @@ index 92b71f76c7518068b4b5d19b5f41f2d1c796ac47..82ba970f265142e2fe7c8c5152f5004a
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 602dc0e0dd27580fe30aac979998edbca64842f4..c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2 100644
+index bf8570b28103b0d7448acef4d0cab96855d8ef23..c5a99b5e996b68e9026fb828587544a1fbccac9a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2177,6 +2177,7 @@ public class PurpurWorldConfig {
+@@ -2173,6 +2173,7 @@ public class PurpurWorldConfig {
public int ocelotBreedingTicks = 6000;
public boolean ocelotTakeDamageFromWater = false;
public boolean ocelotAlwaysDropExp = false;
@@ -29,7 +29,7 @@ index 602dc0e0dd27580fe30aac979998edbca64842f4..c0e2bfe21e601996d6f2f8677e6eefc2
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
-@@ -2191,6 +2192,7 @@ public class PurpurWorldConfig {
+@@ -2187,6 +2188,7 @@ public class PurpurWorldConfig {
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater);
ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp);
diff --git a/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch
index 6b5af40ef..d8d237ce3 100644
--- a/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch
+++ b/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
-index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6896fc2fe 100644
+index b9810a1f6ac91ae9631dd1ebc225f009d91b7845..d6cac5ed7916040104f2a79ed38eb8b453ea3db6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
@@ -606,11 +606,18 @@ public class PiglinAi {
@@ -29,10 +29,10 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6
piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET);
piglin.getNavigation().stop();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2..d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8 100644
+index c5a99b5e996b68e9026fb828587544a1fbccac9a..68ecd4d262a156d8916e1450673e4c30a70ae458 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2354,6 +2354,7 @@ public class PurpurWorldConfig {
+@@ -2350,6 +2350,7 @@ public class PurpurWorldConfig {
public int piglinPortalSpawnModifier = 2000;
public boolean piglinAlwaysDropExp = false;
public double piglinHeadVisibilityPercent = 0.5D;
@@ -40,7 +40,7 @@ index c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2..d85f95b6ee7c44b3c25dea57d15c7dbb
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
-@@ -2370,6 +2371,7 @@ public class PurpurWorldConfig {
+@@ -2366,6 +2367,7 @@ public class PurpurWorldConfig {
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp);
piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent);
diff --git a/patches/server/0289-place-end-crystal-on-any-block.patch b/patches/server/0289-place-end-crystal-on-any-block.patch
index 14bdd4bb7..64377cb88 100644
--- a/patches/server/0289-place-end-crystal-on-any-block.patch
+++ b/patches/server/0289-place-end-crystal-on-any-block.patch
@@ -18,10 +18,10 @@ index cc1e5882bee94864ad189d7f01ce78223411e51d..4c827c26656ac487cc8c66eeb67e4f38
} else {
BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8..26e1b0c813885634b4bd3b9913e8fe0b4e3187e0 100644
+index 68ecd4d262a156d8916e1450673e4c30a70ae458..38d95e773a23eedc4815e9e1d2eb7590af9e0512 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -973,6 +973,7 @@ public class PurpurWorldConfig {
+@@ -969,6 +969,7 @@ public class PurpurWorldConfig {
public boolean basedEndCrystalExplosionFire = false;
public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
public int endCrystalCramming = 0;
@@ -29,7 +29,7 @@ index d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8..26e1b0c813885634b4bd3b9913e8fe0b
private void endCrystalSettings() {
if (PurpurConfig.version < 31) {
if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) {
-@@ -1001,6 +1002,7 @@ public class PurpurWorldConfig {
+@@ -997,6 +998,7 @@ public class PurpurWorldConfig {
basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
}
endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming);
diff --git a/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch
index e3a69ddc9..01b315cbc 100644
--- a/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch
+++ b/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch
@@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2
return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty();
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 26e1b0c813885634b4bd3b9913e8fe0b4e3187e0..7513b625274fe0a50ea4ac7b91cdca9121d68a3c 100644
+index 38d95e773a23eedc4815e9e1d2eb7590af9e0512..6a732c191416d23988fb9a85f1bcd3929d41cb4e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -148,6 +148,7 @@ public class PurpurWorldConfig {
+@@ -146,6 +146,7 @@ public class PurpurWorldConfig {
public boolean rainStopsAfterSleep = true;
public boolean thunderStopsAfterSleep = true;
public int mobLastHurtByPlayerTime = 100;
@@ -29,7 +29,7 @@ index 26e1b0c813885634b4bd3b9913e8fe0b4e3187e0..7513b625274fe0a50ea4ac7b91cdca91
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
-@@ -184,6 +185,7 @@ public class PurpurWorldConfig {
+@@ -180,6 +181,7 @@ public class PurpurWorldConfig {
rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep);
thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep);
mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime);
diff --git a/patches/server/0292-Configurable-villager-search-radius.patch b/patches/server/0292-Configurable-villager-search-radius.patch
index c89adcef4..bf84c3f1a 100644
--- a/patches/server/0292-Configurable-villager-search-radius.patch
+++ b/patches/server/0292-Configurable-villager-search-radius.patch
@@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c
// Paper end - optimise POI access
if (path != null && path.canReach()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7513b625274fe0a50ea4ac7b91cdca9121d68a3c..9d0fd2a3dc305441e43e556d4d593758dcd92ac0 100644
+index 6a732c191416d23988fb9a85f1bcd3929d41cb4e..644715e93c568067c20d5eb3ab464ef3706174a5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -3030,6 +3030,8 @@ public class PurpurWorldConfig {
+@@ -3026,6 +3026,8 @@ public class PurpurWorldConfig {
public boolean villagerDisplayTradeItem = true;
public int villagerSpawnIronGolemRadius = 0;
public int villagerSpawnIronGolemLimit = 0;
@@ -43,7 +43,7 @@ index 7513b625274fe0a50ea4ac7b91cdca9121d68a3c..9d0fd2a3dc305441e43e556d4d593758
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
-@@ -3067,6 +3069,8 @@ public class PurpurWorldConfig {
+@@ -3063,6 +3065,8 @@ public class PurpurWorldConfig {
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);
diff --git a/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch
index c84b7766f..9a27a8205 100644
--- a/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch
+++ b/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch
@@ -18,10 +18,10 @@ index 963df673d7f63e2aea25d4dce28edef06899eabe..4f10d4686f12a81a77f5fc103139aa03
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 9d0fd2a3dc305441e43e556d4d593758dcd92ac0..b291c770e1a5a7b56e592c62a2ac17dbad3268e9 100644
+index 644715e93c568067c20d5eb3ab464ef3706174a5..2215add76c72e0d5d15b78849634542873765235 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-@@ -2512,6 +2512,7 @@ public class PurpurWorldConfig {
+@@ -2508,6 +2508,7 @@ public class PurpurWorldConfig {
public boolean ravagerTakeDamageFromWater = false;
public List ravagerGriefableBlocks = new ArrayList<>();
public boolean ravagerAlwaysDropExp = false;
@@ -29,7 +29,7 @@ index 9d0fd2a3dc305441e43e556d4d593758dcd92ac0..b291c770e1a5a7b56e592c62a2ac17db
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
-@@ -2543,6 +2544,7 @@ public class PurpurWorldConfig {
+@@ -2539,6 +2540,7 @@ public class PurpurWorldConfig {
}
});
ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);
diff --git a/patches/server/0294-config-for-startup-commands.patch b/patches/server/0294-config-for-startup-commands.patch
index f81f10e89..a3e7921e1 100644
--- a/patches/server/0294-config-for-startup-commands.patch
+++ b/patches/server/0294-config-for-startup-commands.patch
@@ -5,13 +5,14 @@ Subject: [PATCH] config for startup commands
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index cef8a7eae708a47dc50c8392ab0e1a35882bfcfa..4bcb20cd6cd971f25327ec1322bb172f036a54a4 100644
+index 96902343e202617413672ddb609e4b91713e5b94..d78cb68c3a53b277aa26186062efc716c8f80f36 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1264,6 +1264,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop