From 39617d5c9df0ed67f4b9c7cbcbc4f23a0dbae37e Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 25 Jun 2024 01:21:03 -0700 Subject: [PATCH] entities with passengers can go through portals now, closes #1540 --- ...0117-Add-EntityTeleportHinderedEvent.patch | 18 +- .../0118-Farmland-trampling-changes.patch | 4 +- .../server/0120-Fix-stuck-in-portals.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 278 ++++++++--------- ...22-Config-to-always-tame-in-Creative.patch | 4 +- .../0123-End-crystal-explosion-options.patch | 4 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 10 +- .../server/0125-Dont-run-with-scissors.patch | 6 +- patches/server/0126-One-Punch-Man.patch | 6 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 6 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 6 +- patches/server/0132-Tick-fluids-config.patch | 6 +- ...133-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0136-Sneak-to-bulk-process-composter.patch | 4 +- .../0137-Config-for-skipping-night.patch | 6 +- ...0138-Add-config-for-villager-trading.patch | 10 +- patches/server/0139-Drowning-Settings.patch | 6 +- ...Break-individual-slabs-when-sneaking.patch | 4 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 4 +- ...ption-to-make-doors-require-redstone.patch | 4 +- .../0145-Configurable-sponge-absorption.patch | 4 +- .../0146-Projectile-offset-config.patch | 4 +- ...for-powered-rail-activation-distance.patch | 4 +- .../0148-Piglin-portal-spawn-modifier.patch | 8 +- ...0-Config-for-wither-explosion-radius.patch | 6 +- .../0152-Configurable-piston-push-limit.patch | 4 +- .../0154-Configurable-mob-blindness.patch | 6 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0157-Iron-golem-calm-anger-options.patch | 6 +- patches/server/0158-Breedable-parrots.patch | 6 +- ...igurable-powered-rail-boost-modifier.patch | 6 +- ...nge-multiplier-critical-damage-value.patch | 8 +- ...on-to-disable-dragon-egg-teleporting.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 6 +- .../0166-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 4 +- ...after-eating-food-fills-hunger-bar-c.patch | 6 +- ...72-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...4-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../server/0178-Tool-actionable-options.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- .../server/0183-Big-dripleaf-tilt-delay.patch | 4 +- .../0184-Player-ridable-in-water-option.patch | 6 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0186-Add-compass-command.patch | 6 +- .../0187-Toggle-for-kinetic-damage.patch | 4 +- ...d-Option-for-disable-observer-clocks.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...-for-sponges-to-work-on-lava-and-mud.patch | 4 +- ...0191-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 6 +- .../0194-Conduit-behavior-configuration.patch | 4 +- .../server/0195-Cauldron-fill-chances.patch | 4 +- ...to-allow-mobs-to-pathfind-over-rails.patch | 6 +- .../0197-Shulker-change-color-with-dye.patch | 6 +- ...ain-and-thunder-should-stop-on-sleep.patch | 6 +- ...a-blocks-to-grow-into-trees-naturall.patch | 6 +- ...t-right-click-to-use-exp-for-mending.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...-Halloween-options-and-optimizations.patch | 4 +- ...-Campfire-option-for-lit-when-placed.patch | 4 +- ...xtinguish-fire-blocks-with-snowballs.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 8 +- .../server/0213-Signs-allow-color-codes.patch | 4 +- .../0215-Mobs-always-drop-experience.patch | 290 +++++++++--------- ...oe-to-replant-crops-and-nether-warts.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0219-Mob-head-visibility-percent.patch | 18 +- ...-Stop-bees-from-dying-after-stinging.patch | 6 +- ...Configurable-farmland-trample-height.patch | 6 +- ...Configurable-player-pickup-exp-delay.patch | 10 +- patches/server/0226-Allow-void-trading.patch | 6 +- .../0227-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0230-Lobotomize-stuck-villagers.patch | 6 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...awner-not-spawning-water-animals-cor.patch | 4 +- ...fig-for-mob-last-hurt-by-player-time.patch | 8 +- .../0234-Anvil-repair-damage-options.patch | 4 +- ...e-turtle-egg-trampling-with-feather-.patch | 4 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0239-Stonecutter-damage.patch | 4 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- ...0241-Add-config-for-snow-on-blue-ice.patch | 4 +- .../0242-Skeletons-eat-wither-roses.patch | 6 +- ...243-Enchantment-Table-Persists-Lapis.patch | 4 +- ...-for-sculk-shrieker-can_summon-state.patch | 4 +- .../0247-Config-to-not-let-coral-die.patch | 4 +- ...0249-Add-toggle-for-RNG-manipulation.patch | 6 +- ...ng-option-to-ignore-creative-players.patch | 6 +- ...256-Add-skeleton-bow-accuracy-option.patch | 6 +- .../0262-Milk-Keeps-Beneficial-Effects.patch | 14 +- ...low-creeper-to-encircle-target-when-.patch | 6 +- ...leport-to-spawn-on-nether-ceiling-da.patch | 8 +- .../server/0271-End-Crystal-Cramming.patch | 6 +- ...beacon-effects-when-covered-by-tinte.patch | 4 +- ...fig-to-remove-explosion-radius-clamp.patch | 4 +- ...able-sugarcane-cactus-and-netherwart.patch | 4 +- .../server/0280-Shears-can-defuse-TNT.patch | 4 +- ...-Option-Ocelot-Spawn-Under-Sea-Level.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 6 +- .../0285-place-end-crystal-on-any-block.patch | 6 +- ...sable-the-copper-oxidation-proximity.patch | 6 +- ...-Configurable-villager-search-radius.patch | 6 +- ...n-to-make-ravagers-afraid-of-rabbits.patch | 6 +- 115 files changed, 613 insertions(+), 609 deletions(-) diff --git a/patches/server/0117-Add-EntityTeleportHinderedEvent.patch b/patches/server/0117-Add-EntityTeleportHinderedEvent.patch index 75550e4d8..51b801fef 100644 --- a/patches/server/0117-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0117-Add-EntityTeleportHinderedEvent.patch @@ -35,7 +35,7 @@ index 3f5bb5c9ceb5b31fcc9ef0a7a6157e1e1cb2a09f..9bd56c48119fe630f272427a2ec99ffe TheEndGatewayBlockEntity.triggerCooldown(world, pos, state, tileentityendgateway); } diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index 01333f69b622141b2eb53441c6cbd69e4a059d55..96854366c0abc7424b7e8164e4438f5a4627e9f0 100644 +index 01333f69b622141b2eb53441c6cbd69e4a059d55..9c11a615fbfd4fcaff5df2a15d1b8578897ab2b4 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -65,6 +65,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { @@ -43,7 +43,7 @@ index 01333f69b622141b2eb53441c6cbd69e4a059d55..96854366c0abc7424b7e8164e4438f5a if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false) && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) { + // Purpur start -+ if (entity.isPassenger() || entity.isVehicle()) { ++ if (world.purpurConfig.imposeTeleportRestrictionsOnEndPortals && (entity.isVehicle() || entity.isPassenger())) { + if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) { + return; + } @@ -53,7 +53,7 @@ index 01333f69b622141b2eb53441c6cbd69e4a059d55..96854366c0abc7424b7e8164e4438f5a EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.ENDER); // Paper - add portal type world.getCraftServer().getPluginManager().callEvent(event); 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 ddab7de1d376e9e486e2f920174397ea8804aa29..ef75ee1a19b68258083c3ea064b0dcfcbf417f0e 100644 +index ddab7de1d376e9e486e2f920174397ea8804aa29..e170176497b833e9addbdc652edcc074e598d26a 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -109,6 +109,13 @@ public class NetherPortalBlock extends Block implements Portal { @@ -61,7 +61,7 @@ index ddab7de1d376e9e486e2f920174397ea8804aa29..ef75ee1a19b68258083c3ea064b0dcfc if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false)) { + // Purpur start -+ if (entity.isPassenger() || entity.isVehicle()) { ++ if (world.purpurConfig.imposeTeleportRestrictionsOnNetherPortals && (entity.isVehicle() || entity.isPassenger())) { + if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL).callEvent()) { + return; + } @@ -95,22 +95,26 @@ index 745e57d58966dbe60b2301818c23d25eecdb6dc2..33425cdcde10f6446f059b290d4c372d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 489beb355db7ea1119470164c987408e9c34a60f..85414be0698396cfee3851e85f8f903737dd4d19 100644 +index 489beb355db7ea1119470164c987408e9c34a60f..ea8288b00d7a9cf5d1529a13011b7df7aac55a3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -117,6 +117,7 @@ public class PurpurWorldConfig { +@@ -117,6 +117,9 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; + public boolean imposeTeleportRestrictionsOnGateways = false; ++ public boolean imposeTeleportRestrictionsOnNetherPortals = false; ++ public boolean imposeTeleportRestrictionsOnEndPortals = false; public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; -@@ -133,6 +134,7 @@ public class PurpurWorldConfig { +@@ -133,6 +136,9 @@ public class PurpurWorldConfig { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); + imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); ++ 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); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); diff --git a/patches/server/0118-Farmland-trampling-changes.patch b/patches/server/0118-Farmland-trampling-changes.patch index 40a4fe4dc..4352c43e8 100644 --- a/patches/server/0118-Farmland-trampling-changes.patch +++ b/patches/server/0118-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 3153c7d88efcf44f805febda73ae340978e0009b..001547cc8fca4d6f5b88c9f7b4f759fd1776018b 100644 +index ea8288b00d7a9cf5d1529a13011b7df7aac55a3a..6958742eb8bafab17f79bb29137dde3f9d9ba5e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -449,10 +449,16 @@ public class PurpurWorldConfig { +@@ -453,10 +453,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0120-Fix-stuck-in-portals.patch b/patches/server/0120-Fix-stuck-in-portals.patch index 077640c0c..2e74b6a19 100644 --- a/patches/server/0120-Fix-stuck-in-portals.patch +++ b/patches/server/0120-Fix-stuck-in-portals.patch @@ -17,7 +17,7 @@ index a1ef38422631b3856160e054daa14eacb8f13c57..794f5ccc2147ad101e06576a704bb153 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 187f5a29cd6c2ee3d4e999fca78b8fa436605065..f80133ad16b65f99144c1a721885cffc6254e45f 100644 +index f63430ca14b746419103994e03707610fcc059bf..d729c66ef03339b2a7cd982082c2e646601e2441 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3102,13 +3102,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -38,10 +38,10 @@ index 187f5a29cd6c2ee3d4e999fca78b8fa436605065..f80133ad16b65f99144c1a721885cffc 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 a3f9c6fb8dab3152cafd0ba29a0c398e9bb52327..6499bd31e160fe349007051eaad712d222e7787c 100644 +index fe262538b7c4f3f69cb481303d4b16b55e8b1082..17a57de1513c635640167b90334aca6cb3384a8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -324,6 +324,7 @@ public class PurpurWorldConfig { +@@ -328,6 +328,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -49,7 +49,7 @@ index a3f9c6fb8dab3152cafd0ba29a0c398e9bb52327..6499bd31e160fe349007051eaad712d2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -339,6 +340,7 @@ public class PurpurWorldConfig { +@@ -343,6 +344,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/0121-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch index 39dd3c5db..77836dbfd 100644 --- a/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch @@ -1199,10 +1199,10 @@ index 0d5e828a7fb6fd6facc04a27175541ac463c918e..05c63eb6cf8a7067105c58d244c7cc27 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3adb36cc85f 100644 +index 17a57de1513c635640167b90334aca6cb3384a8d..75d45b1c9eb9ad15154454802bc5526fb8e50d27 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -580,12 +580,14 @@ public class PurpurWorldConfig { +@@ -584,12 +584,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; @@ -1217,7 +1217,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean batRidable = false; -@@ -601,6 +603,7 @@ public class PurpurWorldConfig { +@@ -605,6 +607,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1225,7 +1225,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -620,6 +623,7 @@ public class PurpurWorldConfig { +@@ -624,6 +627,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean beeRidable = false; -@@ -629,6 +633,7 @@ public class PurpurWorldConfig { +@@ -633,6 +637,7 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; public int beeBreedingTicks = 6000; @@ -1241,7 +1241,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -642,6 +647,7 @@ public class PurpurWorldConfig { +@@ -646,6 +651,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean blazeRidable = false; -@@ -650,6 +656,7 @@ public class PurpurWorldConfig { +@@ -654,6 +660,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; @@ -1257,7 +1257,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -662,6 +669,7 @@ public class PurpurWorldConfig { +@@ -666,6 +673,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean boggedRidable = false; -@@ -706,6 +714,7 @@ public class PurpurWorldConfig { +@@ -710,6 +718,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1273,7 +1273,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -726,6 +735,7 @@ public class PurpurWorldConfig { +@@ -730,6 +739,7 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1281,7 +1281,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean caveSpiderRidable = false; -@@ -733,6 +743,7 @@ public class PurpurWorldConfig { +@@ -737,6 +747,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; @@ -1289,7 +1289,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -744,6 +755,7 @@ public class PurpurWorldConfig { +@@ -748,6 +759,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean chickenRidable = false; -@@ -753,6 +765,7 @@ public class PurpurWorldConfig { +@@ -757,6 +769,7 @@ public class PurpurWorldConfig { public double chickenScale = 1.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1305,7 +1305,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -766,12 +779,14 @@ public class PurpurWorldConfig { +@@ -770,12 +783,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -782,6 +797,7 @@ public class PurpurWorldConfig { +@@ -786,6 +801,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean cowRidable = false; -@@ -791,6 +807,7 @@ public class PurpurWorldConfig { +@@ -795,6 +811,7 @@ public class PurpurWorldConfig { public double cowScale = 1.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1336,7 +1336,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -804,6 +821,7 @@ public class PurpurWorldConfig { +@@ -808,6 +825,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean creeperRidable = false; -@@ -814,6 +832,7 @@ public class PurpurWorldConfig { +@@ -818,6 +836,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1352,7 +1352,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -828,6 +847,7 @@ public class PurpurWorldConfig { +@@ -832,6 +851,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean dolphinRidable = false; -@@ -838,6 +858,7 @@ public class PurpurWorldConfig { +@@ -842,6 +862,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1368,7 +1368,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -852,6 +873,7 @@ public class PurpurWorldConfig { +@@ -856,6 +877,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean donkeyRidableInWater = false; -@@ -862,6 +884,7 @@ public class PurpurWorldConfig { +@@ -866,6 +888,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1384,7 +1384,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -878,6 +901,7 @@ public class PurpurWorldConfig { +@@ -882,6 +905,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean drownedRidable = false; -@@ -889,6 +913,7 @@ public class PurpurWorldConfig { +@@ -893,6 +917,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1400,7 +1400,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -904,12 +929,14 @@ public class PurpurWorldConfig { +@@ -908,12 +933,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -920,6 +947,7 @@ public class PurpurWorldConfig { +@@ -924,6 +951,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean enderDragonRidable = false; -@@ -929,6 +957,7 @@ public class PurpurWorldConfig { +@@ -933,6 +961,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1431,7 +1431,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -946,6 +975,7 @@ public class PurpurWorldConfig { +@@ -950,6 +979,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean endermanRidable = false; -@@ -956,6 +986,7 @@ public class PurpurWorldConfig { +@@ -960,6 +990,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1447,7 +1447,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -970,6 +1001,7 @@ public class PurpurWorldConfig { +@@ -974,6 +1005,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean endermiteRidable = false; -@@ -977,6 +1009,7 @@ public class PurpurWorldConfig { +@@ -981,6 +1013,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; @@ -1463,7 +1463,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -988,6 +1021,7 @@ public class PurpurWorldConfig { +@@ -992,6 +1025,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean evokerRidable = false; -@@ -996,6 +1030,7 @@ public class PurpurWorldConfig { +@@ -1000,6 +1034,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; @@ -1479,7 +1479,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1008,6 +1043,7 @@ public class PurpurWorldConfig { +@@ -1012,6 +1047,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean foxRidable = false; -@@ -1018,6 +1054,7 @@ public class PurpurWorldConfig { +@@ -1022,6 +1058,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1495,7 +1495,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1032,6 +1069,7 @@ public class PurpurWorldConfig { +@@ -1036,6 +1073,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean frogRidable = false; -@@ -1053,6 +1091,7 @@ public class PurpurWorldConfig { +@@ -1057,6 +1095,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; @@ -1511,7 +1511,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1065,6 +1104,7 @@ public class PurpurWorldConfig { +@@ -1069,6 +1108,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean giantRidable = false; -@@ -1078,6 +1118,7 @@ public class PurpurWorldConfig { +@@ -1082,6 +1122,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1527,7 +1527,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1099,6 +1140,7 @@ public class PurpurWorldConfig { +@@ -1103,6 +1144,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean glowSquidRidable = false; -@@ -1106,12 +1148,14 @@ public class PurpurWorldConfig { +@@ -1110,12 +1152,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; @@ -1550,7 +1550,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean goatRidable = false; -@@ -1120,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1124,6 +1168,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; public int goatBreedingTicks = 6000; @@ -1558,7 +1558,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1127,12 +1172,14 @@ public class PurpurWorldConfig { +@@ -1131,12 +1176,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1143,6 +1190,7 @@ public class PurpurWorldConfig { +@@ -1147,6 +1194,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean hoglinRidable = false; -@@ -1151,6 +1199,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1203,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; @@ -1589,7 +1589,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1163,6 +1212,7 @@ public class PurpurWorldConfig { +@@ -1167,6 +1216,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean horseRidableInWater = false; -@@ -1173,6 +1223,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1227,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1605,7 +1605,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1189,6 +1240,7 @@ public class PurpurWorldConfig { +@@ -1193,6 +1244,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean huskRidable = false; -@@ -1200,6 +1252,7 @@ public class PurpurWorldConfig { +@@ -1204,6 +1256,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1621,7 +1621,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1215,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1219,6 +1272,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean illusionerRidable = false; -@@ -1224,6 +1278,7 @@ public class PurpurWorldConfig { +@@ -1228,6 +1282,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; @@ -1637,7 +1637,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1241,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1300,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean ironGolemRidable = false; -@@ -1249,6 +1305,7 @@ public class PurpurWorldConfig { +@@ -1253,6 +1309,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; @@ -1653,7 +1653,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1261,6 +1318,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1322,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean llamaRidable = false; -@@ -1273,6 +1331,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1335,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1669,7 +1669,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1291,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1295,6 +1354,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean magmaCubeRidable = false; -@@ -1300,6 +1360,7 @@ public class PurpurWorldConfig { +@@ -1304,6 +1364,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1685,7 +1685,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1313,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1378,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1693,7 +1693,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean mooshroomRidable = false; -@@ -1321,6 +1383,7 @@ public class PurpurWorldConfig { +@@ -1325,6 +1387,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; @@ -1701,7 +1701,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1333,6 +1396,7 @@ public class PurpurWorldConfig { +@@ -1337,6 +1400,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean muleRidableInWater = false; -@@ -1343,6 +1407,7 @@ public class PurpurWorldConfig { +@@ -1347,6 +1411,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1717,7 +1717,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1359,6 +1424,7 @@ public class PurpurWorldConfig { +@@ -1363,6 +1428,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean ocelotRidable = false; -@@ -1367,6 +1433,7 @@ public class PurpurWorldConfig { +@@ -1371,6 +1437,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; @@ -1733,7 +1733,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1379,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1383,6 +1450,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean pandaRidable = false; -@@ -1387,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1391,6 +1459,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; @@ -1749,7 +1749,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1399,6 +1468,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1472,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean parrotRidable = false; -@@ -1407,6 +1477,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1481,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; @@ -1765,7 +1765,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1419,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1494,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean phantomRidable = false; -@@ -1445,6 +1517,7 @@ public class PurpurWorldConfig { +@@ -1449,6 +1521,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1781,7 +1781,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1479,6 +1552,7 @@ public class PurpurWorldConfig { +@@ -1483,6 +1556,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean pigRidable = false; -@@ -1488,6 +1562,7 @@ public class PurpurWorldConfig { +@@ -1492,6 +1566,7 @@ public class PurpurWorldConfig { public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1797,7 +1797,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1501,6 +1576,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1580,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean piglinRidable = false; -@@ -1509,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1513,6 +1589,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; @@ -1813,7 +1813,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1521,6 +1598,7 @@ public class PurpurWorldConfig { +@@ -1525,6 +1602,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean piglinBruteRidable = false; -@@ -1528,6 +1606,7 @@ public class PurpurWorldConfig { +@@ -1532,6 +1610,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; @@ -1829,7 +1829,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1539,6 +1618,7 @@ public class PurpurWorldConfig { +@@ -1543,6 +1622,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean pillagerRidable = false; -@@ -1547,6 +1627,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1631,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; @@ -1845,7 +1845,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1559,6 +1640,7 @@ public class PurpurWorldConfig { +@@ -1563,6 +1644,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean polarBearRidable = false; -@@ -1569,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1573,6 +1655,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1861,7 +1861,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1584,12 +1667,14 @@ public class PurpurWorldConfig { +@@ -1588,12 +1671,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1600,6 +1685,7 @@ public class PurpurWorldConfig { +@@ -1604,6 +1689,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean rabbitRidable = false; -@@ -1611,6 +1697,7 @@ public class PurpurWorldConfig { +@@ -1615,6 +1701,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1892,7 +1892,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1626,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1717,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean ravagerRidable = false; -@@ -1634,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1638,6 +1726,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; @@ -1908,7 +1908,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1646,12 +1735,14 @@ public class PurpurWorldConfig { +@@ -1650,12 +1739,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1662,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1666,6 +1757,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean sheepRidable = false; -@@ -1671,6 +1763,7 @@ public class PurpurWorldConfig { +@@ -1675,6 +1767,7 @@ public class PurpurWorldConfig { public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1939,7 +1939,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1684,6 +1777,7 @@ public class PurpurWorldConfig { +@@ -1688,6 +1781,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean shulkerRidable = false; -@@ -1691,6 +1785,7 @@ public class PurpurWorldConfig { +@@ -1695,6 +1789,7 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; @@ -1955,7 +1955,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1702,6 +1797,7 @@ public class PurpurWorldConfig { +@@ -1706,6 +1801,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean silverfishRidable = false; -@@ -1712,6 +1808,7 @@ public class PurpurWorldConfig { +@@ -1716,6 +1812,7 @@ public class PurpurWorldConfig { public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; @@ -1971,7 +1971,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1726,6 +1823,7 @@ public class PurpurWorldConfig { +@@ -1730,6 +1827,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean skeletonRidable = false; -@@ -1733,6 +1831,7 @@ public class PurpurWorldConfig { +@@ -1737,6 +1835,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; @@ -1987,7 +1987,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1744,6 +1843,7 @@ public class PurpurWorldConfig { +@@ -1748,6 +1847,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean skeletonHorseRidable = false; -@@ -1755,6 +1855,7 @@ public class PurpurWorldConfig { +@@ -1759,6 +1859,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -2003,7 +2003,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1771,6 +1872,7 @@ public class PurpurWorldConfig { +@@ -1775,6 +1876,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean slimeRidable = false; -@@ -1780,6 +1882,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1886,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2019,7 +2019,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1793,6 +1896,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1900,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2027,7 +2027,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean snowGolemRidable = false; -@@ -1807,6 +1911,7 @@ public class PurpurWorldConfig { +@@ -1811,6 +1915,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2035,7 +2035,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1825,6 +1930,7 @@ public class PurpurWorldConfig { +@@ -1829,6 +1934,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean snifferRidable = false; -@@ -1849,6 +1955,7 @@ public class PurpurWorldConfig { +@@ -1853,6 +1959,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2051,7 +2051,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1862,6 +1969,7 @@ public class PurpurWorldConfig { +@@ -1866,6 +1973,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean spiderRidable = false; -@@ -1869,6 +1977,7 @@ public class PurpurWorldConfig { +@@ -1873,6 +1981,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; @@ -2067,7 +2067,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1880,6 +1989,7 @@ public class PurpurWorldConfig { +@@ -1884,6 +1993,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean strayRidable = false; -@@ -1887,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1891,6 +2001,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; @@ -2083,7 +2083,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1898,6 +2009,7 @@ public class PurpurWorldConfig { +@@ -1902,6 +2013,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean striderRidable = false; -@@ -1907,6 +2019,7 @@ public class PurpurWorldConfig { +@@ -1911,6 +2023,7 @@ public class PurpurWorldConfig { public double striderScale = 1.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2099,7 +2099,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1920,6 +2033,7 @@ public class PurpurWorldConfig { +@@ -1924,6 +2037,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean tadpoleRidable = false; -@@ -1941,6 +2055,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +2059,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2115,7 +2115,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1959,12 +2074,14 @@ public class PurpurWorldConfig { +@@ -1963,12 +2078,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1975,6 +2092,7 @@ public class PurpurWorldConfig { +@@ -1979,6 +2096,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean turtleRidable = false; -@@ -1983,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -1987,6 +2105,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; @@ -2146,7 +2146,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1995,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2118,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean vexRidable = false; -@@ -2003,6 +2123,7 @@ public class PurpurWorldConfig { +@@ -2007,6 +2127,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; @@ -2162,7 +2162,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2015,6 +2136,7 @@ public class PurpurWorldConfig { +@@ -2019,6 +2140,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean villagerRidable = false; -@@ -2029,6 +2151,7 @@ public class PurpurWorldConfig { +@@ -2033,6 +2155,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2178,7 +2178,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2047,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2051,6 +2174,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean vindicatorRidable = false; -@@ -2055,6 +2179,7 @@ public class PurpurWorldConfig { +@@ -2059,6 +2183,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2194,7 +2194,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2067,6 +2192,7 @@ public class PurpurWorldConfig { +@@ -2071,6 +2196,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean wanderingTraderRidable = false; -@@ -2076,6 +2202,7 @@ public class PurpurWorldConfig { +@@ -2080,6 +2206,7 @@ public class PurpurWorldConfig { public double wanderingTraderScale = 1.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2210,7 +2210,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2089,6 +2216,7 @@ public class PurpurWorldConfig { +@@ -2093,6 +2220,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean wardenRidable = false; -@@ -2105,6 +2233,7 @@ public class PurpurWorldConfig { +@@ -2109,6 +2237,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; @@ -2226,7 +2226,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2116,6 +2245,7 @@ public class PurpurWorldConfig { +@@ -2120,6 +2249,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean witherRidable = false; -@@ -2127,6 +2257,7 @@ public class PurpurWorldConfig { +@@ -2131,6 +2261,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2242,7 +2242,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2146,6 +2277,7 @@ public class PurpurWorldConfig { +@@ -2150,6 +2281,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean witherSkeletonRidable = false; -@@ -2153,6 +2285,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2289,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; @@ -2258,7 +2258,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2164,6 +2297,7 @@ public class PurpurWorldConfig { +@@ -2168,6 +2301,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean wolfRidable = false; -@@ -2175,6 +2309,7 @@ public class PurpurWorldConfig { +@@ -2179,6 +2313,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2274,7 +2274,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2194,6 +2329,7 @@ public class PurpurWorldConfig { +@@ -2198,6 +2333,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean zoglinRidable = false; -@@ -2201,6 +2337,7 @@ public class PurpurWorldConfig { +@@ -2205,6 +2341,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; @@ -2290,7 +2290,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2212,6 +2349,7 @@ public class PurpurWorldConfig { +@@ -2216,6 +2353,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean zombieRidable = false; -@@ -2225,6 +2363,7 @@ public class PurpurWorldConfig { +@@ -2229,6 +2367,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2306,7 +2306,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2242,6 +2381,7 @@ public class PurpurWorldConfig { +@@ -2246,6 +2385,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean zombieHorseRidable = false; -@@ -2254,6 +2394,7 @@ public class PurpurWorldConfig { +@@ -2258,6 +2398,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2322,7 +2322,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2271,6 +2412,7 @@ public class PurpurWorldConfig { +@@ -2275,6 +2416,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean zombieVillagerRidable = false; -@@ -2282,6 +2424,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2428,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2338,7 +2338,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2297,6 +2440,7 @@ public class PurpurWorldConfig { +@@ -2301,6 +2444,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 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad } public boolean zombifiedPiglinRidable = false; -@@ -2309,6 +2453,7 @@ public class PurpurWorldConfig { +@@ -2313,6 +2457,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2354,7 +2354,7 @@ index 6499bd31e160fe349007051eaad712d222e7787c..c0ce5590301edfa8155ed56e1c61e3ad private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2325,5 +2470,6 @@ public class PurpurWorldConfig { +@@ -2329,5 +2474,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/0122-Config-to-always-tame-in-Creative.patch b/patches/server/0122-Config-to-always-tame-in-Creative.patch index 83aa0b7fd..2bdc5be4f 100644 --- a/patches/server/0122-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0122-Config-to-always-tame-in-Creative.patch @@ -59,7 +59,7 @@ index 43fcaa66b1c3a53a625aca63c50793e91b97d30f..b79707bafd7c18eda8ea64bc33d22625 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 8583c7391cc0dd6dcd7e11e1f75c3e131afad842..7ec19337f557207808a2349aa23718a05beb4c72 100644 +index 75d45b1c9eb9ad15154454802bc5526fb8e50d27..9110920bbcc32fa3cf67ea92030fa1b4101e44f4 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 8583c7391cc0dd6dcd7e11e1f75c3e131afad842..7ec19337f557207808a2349aa23718a0 public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; -@@ -135,6 +136,7 @@ public class PurpurWorldConfig { +@@ -137,6 +138,7 @@ public class PurpurWorldConfig { public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0123-End-crystal-explosion-options.patch b/patches/server/0123-End-crystal-explosion-options.patch index 89009a255..43ac3c550 100644 --- a/patches/server/0123-End-crystal-explosion-options.patch +++ b/patches/server/0123-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 7ec19337f557207808a2349aa23718a05beb4c72..6c12e058fc5f24ac15e946f261a0cf2920f1fb78 100644 +index 9110920bbcc32fa3cf67ea92030fa1b4101e44f4..6f18225b00fa2b6c46265de0caa761695e3aeaee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -456,6 +456,43 @@ public class PurpurWorldConfig { +@@ -460,6 +460,43 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index d3f5d93a7..966988a1c 100644 --- a/patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 714223f131cb4ece988ffacbfc90bb9d7d143636..3cc6db1e0a657468282caaba0d9dccea } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0e25e5217e7076667a590c4186ec2e86b1f4bce..26db84f0b1fe1447f3e80f28db5fe7cd4a11ccc3 100644 +index 6f18225b00fa2b6c46265de0caa761695e3aeaee..9d44e091645ab76f8b085ff94388788f1ea42b77 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -997,6 +997,7 @@ public class PurpurWorldConfig { +@@ -1001,6 +1001,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index d0e25e5217e7076667a590c4186ec2e86b1f4bce..26db84f0b1fe1447f3e80f28db5fe7cd private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -1015,6 +1016,7 @@ public class PurpurWorldConfig { +@@ -1019,6 +1020,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 d0e25e5217e7076667a590c4186ec2e86b1f4bce..26db84f0b1fe1447f3e80f28db5fe7cd } public boolean endermanRidable = false; -@@ -2297,6 +2299,7 @@ public class PurpurWorldConfig { +@@ -2301,6 +2303,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index d0e25e5217e7076667a590c4186ec2e86b1f4bce..26db84f0b1fe1447f3e80f28db5fe7cd private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2317,6 +2320,7 @@ public class PurpurWorldConfig { +@@ -2321,6 +2324,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/0125-Dont-run-with-scissors.patch b/patches/server/0125-Dont-run-with-scissors.patch index 8b1e192d9..8fde1b96c 100644 --- a/patches/server/0125-Dont-run-with-scissors.patch +++ b/patches/server/0125-Dont-run-with-scissors.patch @@ -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 230a61c491aeacb8cb60c52019af7ef4f59fe982..65d6bbcc80e379aa3eb6a74bc45fd7e83b33a0c1 100644 +index 9d44e091645ab76f8b085ff94388788f1ea42b77..9f5fd26c46daa685cca8382c5f1d410493c0cac6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -188,6 +188,10 @@ public class PurpurWorldConfig { +@@ -192,6 +192,10 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -163,7 +163,7 @@ index 230a61c491aeacb8cb60c52019af7ef4f59fe982..65d6bbcc80e379aa3eb6a74bc45fd7e8 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -225,6 +229,10 @@ public class PurpurWorldConfig { +@@ -229,6 +233,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/0126-One-Punch-Man.patch b/patches/server/0126-One-Punch-Man.patch index d773d95ed..dab763edb 100644 --- a/patches/server/0126-One-Punch-Man.patch +++ b/patches/server/0126-One-Punch-Man.patch @@ -35,10 +35,10 @@ index fc560ddef3542f9bf566917c3af9072857f1bd04..d76e8cf2a2d48548b0ad33c78dbf435b float f1 = amount; 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 65d6bbcc80e379aa3eb6a74bc45fd7e83b33a0c1..3ad684558aa1d21f55e75b9ff8f253cdf3b535ff 100644 +index 9f5fd26c46daa685cca8382c5f1d410493c0cac6..d866d35196055ff4581ee77c6996818ec1e5f977 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -335,6 +335,7 @@ public class PurpurWorldConfig { +@@ -339,6 +339,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index 65d6bbcc80e379aa3eb6a74bc45fd7e83b33a0c1..3ad684558aa1d21f55e75b9ff8f253cd private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -351,6 +352,7 @@ public class PurpurWorldConfig { +@@ -355,6 +356,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/0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 41d1f9a46..d6ff70eab 100644 --- a/patches/server/0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0127-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 3ad684558aa1d21f55e75b9ff8f253cdf3b535ff..e0eee89207713d39b1be36e3b8850ec0c55a3bc6 100644 +index d866d35196055ff4581ee77c6996818ec1e5f977..7c283940d0127eb3800938164c4c20d957a6644d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -192,6 +192,10 @@ public class PurpurWorldConfig { +@@ -196,6 +196,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index 3ad684558aa1d21f55e75b9ff8f253cdf3b535ff..e0eee89207713d39b1be36e3b8850ec0 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -233,6 +237,10 @@ public class PurpurWorldConfig { +@@ -237,6 +241,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/0128-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0128-Config-to-ignore-nearby-mobs-when-sleeping.patch index 7d8846cfd..c4b9de01b 100644 --- a/patches/server/0128-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0128-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,10 +18,10 @@ index 794f5ccc2147ad101e06576a704bb153e83550f7..27acdaa3d72198c822b92f6a0d27b7b1 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e0eee89207713d39b1be36e3b8850ec0c55a3bc6..1072011352d2a65467b3a319a2fb23e00374603a 100644 +index 7c283940d0127eb3800938164c4c20d957a6644d..13aa8212f010540129b8db25c528c0ac89ab7f9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -344,6 +344,7 @@ public class PurpurWorldConfig { +@@ -348,6 +348,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index e0eee89207713d39b1be36e3b8850ec0c55a3bc6..1072011352d2a65467b3a319a2fb23e0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -361,6 +362,7 @@ public class PurpurWorldConfig { +@@ -365,6 +366,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch index e1c039363..22ab9c950 100644 --- a/patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 21b2709f96b49c77807c9054843505a4fd0155f0..61602040352fe2eacd646ec3dc6728ea } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5fff156121766f8b1fbb7cf7d9a73a6da37dd72a..67568ba4d46b6bdd9c2e32eb91ec8a2700888bee 100644 +index 13aa8212f010540129b8db25c528c0ac89ab7f9c..3f98f85fe5e4a44a8d0ad9900ced62075cfc0ae5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1048,6 +1048,8 @@ public class PurpurWorldConfig { +@@ -1052,6 +1052,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 5fff156121766f8b1fbb7cf7d9a73a6da37dd72a..67568ba4d46b6bdd9c2e32eb91ec8a27 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1057,12 +1059,18 @@ public class PurpurWorldConfig { +@@ -1061,12 +1063,18 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index ac841c4a0..17012fb4e 100644 --- a/patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index 61602040352fe2eacd646ec3dc6728ea733d4ca2..a68f63b73785e7db68127151aca5138d } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 67568ba4d46b6bdd9c2e32eb91ec8a2700888bee..f3bec22cab2714d54461cfe29173a9734d198de7 100644 +index 3f98f85fe5e4a44a8d0ad9900ced62075cfc0ae5..126c4d3653b75c3aeccf46608ff32a07a2702add 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1050,6 +1050,8 @@ public class PurpurWorldConfig { +@@ -1054,6 +1054,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 67568ba4d46b6bdd9c2e32eb91ec8a2700888bee..f3bec22cab2714d54461cfe29173a973 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1071,6 +1073,8 @@ public class PurpurWorldConfig { +@@ -1075,6 +1077,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/0132-Tick-fluids-config.patch b/patches/server/0132-Tick-fluids-config.patch index 78370dbd2..4323cc2f7 100644 --- a/patches/server/0132-Tick-fluids-config.patch +++ b/patches/server/0132-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a4f21acb0171a61478a2aca9c753ed60607c882..6cfb3136785358b42e903d9b87c5c25379dd5985 100644 +index 126c4d3653b75c3aeccf46608ff32a07a2702add..a3e30ce28e2255711101724dbf7bcafcea3a3e57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -129,6 +129,7 @@ public class PurpurWorldConfig { +@@ -131,6 +131,7 @@ public class PurpurWorldConfig { public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; @@ -47,7 +47,7 @@ index 0a4f21acb0171a61478a2aca9c753ed60607c882..6cfb3136785358b42e903d9b87c5c253 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -147,6 +148,7 @@ public class PurpurWorldConfig { +@@ -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); diff --git a/patches/server/0133-Config-to-disable-Llama-caravans.patch b/patches/server/0133-Config-to-disable-Llama-caravans.patch index b2e8efa2b..06255e633 100644 --- a/patches/server/0133-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0133-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 00113c0873da5df2a8a2e9a54d05d8bb44026c22..17c69726d9ebe45a958109755c5725342eb6d2aa 100644 +index a3e30ce28e2255711101724dbf7bcafcea3a3e57..49172ba9126c728a4495f8c8b151c4b62cc9d0d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1407,6 +1407,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1411,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 00113c0873da5df2a8a2e9a54d05d8bb44026c22..17c69726d9ebe45a958109755c572534 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1426,6 +1427,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1431,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/0134-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0134-Config-to-make-Creepers-explode-on-death.patch index 547b827b7..e042f1c6f 100644 --- a/patches/server/0134-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0134-Config-to-make-Creepers-explode-on-death.patch @@ -52,10 +52,10 @@ index 798d00aae04ba48ca0bbd70ccf3b3e91180d97b4..e9eeddf5c39d66535163e67f41dbc9ac private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17c69726d9ebe45a958109755c5725342eb6d2aa..b01a18a7888625360fc77094f031d3d6c3833170 100644 +index 49172ba9126c728a4495f8c8b151c4b62cc9d0d2..b820fae29b891ffbde87eed8166802e7187f7131 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -894,6 +894,7 @@ public class PurpurWorldConfig { +@@ -898,6 +898,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -63,7 +63,7 @@ index 17c69726d9ebe45a958109755c5725342eb6d2aa..b01a18a7888625360fc77094f031d3d6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -909,6 +910,7 @@ public class PurpurWorldConfig { +@@ -913,6 +914,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/0135-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0135-Configurable-ravager-griefable-blocks-list.patch index cdf905906..2c58e97a8 100644 --- a/patches/server/0135-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0135-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 b01a18a7888625360fc77094f031d3d6c3833170..2f88038603e7538075633a5d911065fd52d9b23d 100644 +index b820fae29b891ffbde87eed8166802e7187f7131..297edd2b0cf792713d41a7323f2cfd4d680482ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1802,6 +1802,7 @@ public class PurpurWorldConfig { +@@ -1806,6 +1806,7 @@ public class PurpurWorldConfig { public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index b01a18a7888625360fc77094f031d3d6c3833170..2f88038603e7538075633a5d911065fd private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1815,6 +1816,23 @@ public class PurpurWorldConfig { +@@ -1819,6 +1820,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/0136-Sneak-to-bulk-process-composter.patch b/patches/server/0136-Sneak-to-bulk-process-composter.patch index aa105328e..e7a10d25d 100644 --- a/patches/server/0136-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0136-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 96a05ffc7c9cf9a88b8a26bbf0ee17cfc24f8330..8519c8dbc648e3770bc06adafa2892eea5fd5aab 100644 +index 297edd2b0cf792713d41a7323f2cfd4d680482ed..17093e3c696dc0f05735ed3514c37af9968083e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -471,6 +471,11 @@ public class PurpurWorldConfig { +@@ -475,6 +475,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0137-Config-for-skipping-night.patch b/patches/server/0137-Config-for-skipping-night.patch index d9699dcc0..8f34af2d1 100644 --- a/patches/server/0137-Config-for-skipping-night.patch +++ b/patches/server/0137-Config-for-skipping-night.patch @@ -18,10 +18,10 @@ index a416766ababa6ec85d6d53e54042c87f82062a1f..aba483be8705ad41245604862cf403fd 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 8519c8dbc648e3770bc06adafa2892eea5fd5aab..d657d9310db7646336c8fdb166ad4aed50733c30 100644 +index 17093e3c696dc0f05735ed3514c37af9968083e2..fe46a714e5eaf260c39803b9e644f62a5f211dd2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -347,6 +347,7 @@ public class PurpurWorldConfig { +@@ -351,6 +351,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 8519c8dbc648e3770bc06adafa2892eea5fd5aab..d657d9310db7646336c8fdb166ad4aed private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -365,6 +366,7 @@ public class PurpurWorldConfig { +@@ -369,6 +370,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/0138-Add-config-for-villager-trading.patch b/patches/server/0138-Add-config-for-villager-trading.patch index ac43e223d..bb4f3fbcc 100644 --- a/patches/server/0138-Add-config-for-villager-trading.patch +++ b/patches/server/0138-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 58534a280f2700bb317b6d471af3f7992e9cf204..b359af74ec6dee1fdfe7dbcfeeafccf35c5d45c2 100644 +index fe46a714e5eaf260c39803b9e644f62a5f211dd2..9bf0c00ab7ad5c112250d908fd2fc32b7d955cde 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2256,6 +2256,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2260,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 58534a280f2700bb317b6d471af3f7992e9cf204..b359af74ec6dee1fdfe7dbcfeeafccf3 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2275,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2279,6 +2280,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 58534a280f2700bb317b6d471af3f7992e9cf204..b359af74ec6dee1fdfe7dbcfeeafccf3 } public boolean vindicatorRidable = false; -@@ -2307,6 +2309,7 @@ public class PurpurWorldConfig { +@@ -2311,6 +2313,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 58534a280f2700bb317b6d471af3f7992e9cf204..b359af74ec6dee1fdfe7dbcfeeafccf3 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2321,6 +2324,7 @@ public class PurpurWorldConfig { +@@ -2325,6 +2328,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/0139-Drowning-Settings.patch b/patches/server/0139-Drowning-Settings.patch index bf52c0108..fb16c9bbe 100644 --- a/patches/server/0139-Drowning-Settings.patch +++ b/patches/server/0139-Drowning-Settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f80133ad16b65f99144c1a721885cffc6254e45f..555d0b747cc767a3d997b10e5ce8c2a00f261f43 100644 +index d729c66ef03339b2a7cd982082c2e646601e2441..99562b8eb24c39a1771edf4b9084c26179c4f382 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3321,7 +3321,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -40,10 +40,10 @@ index d76e8cf2a2d48548b0ad33c78dbf435b61bf91c4..da28941d9a374be39cf7c1620f48ddaa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b359af74ec6dee1fdfe7dbcfeeafccf35c5d45c2..1a4d5552d2c5e0080663dba95a3676b766bac5f8 100644 +index 9bf0c00ab7ad5c112250d908fd2fc32b7d955cde..140dd4ebdb18fee2e5ab13ca1ff37bc3101e5a0e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -163,6 +163,15 @@ public class PurpurWorldConfig { +@@ -167,6 +167,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0140-Break-individual-slabs-when-sneaking.patch b/patches/server/0140-Break-individual-slabs-when-sneaking.patch index 34596975f..4b283283a 100644 --- a/patches/server/0140-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0140-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 947d46dcf7833ea0d2398551114af22cc4241ad4..2a33a64dfed9570f47515ef85f0c77883949bf03 100644 +index 140dd4ebdb18fee2e5ab13ca1ff37bc3101e5a0e..575b2fe79c5d6ca5c19ee3026abf7ce4618c98dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -592,6 +592,11 @@ public class PurpurWorldConfig { +@@ -596,6 +596,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch index 0b46edaa3..009e56c50 100644 --- a/patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 759839e912c54598b257ad738481364940f88a18..e60e6b3e5ae5a468cfe649ed2222412f return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a33a64dfed9570f47515ef85f0c77883949bf03..f11fabfe8861b5c602093b4ce051c6aa15796041 100644 +index 575b2fe79c5d6ca5c19ee3026abf7ce4618c98dc..92b722c01699f5889da25b7e2ac31862b6df956f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -557,6 +557,13 @@ public class PurpurWorldConfig { +@@ -561,6 +561,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0143-Option-to-make-doors-require-redstone.patch b/patches/server/0143-Option-to-make-doors-require-redstone.patch index ed4a6dee6..cf302c572 100644 --- a/patches/server/0143-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0143-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 2eab0c6ab2a74e141f1e5e6062a2c66f72d35389..39c80285a287714a82bc5b93a2be382446b7ba54 100644 +index f72e3c436911acc9b91f61e0ef4cc36c0dc0cb54..146e2b193703f065dc42968f91ca84a6025ed7b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -496,6 +496,16 @@ public class PurpurWorldConfig { +@@ -500,6 +500,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0145-Configurable-sponge-absorption.patch b/patches/server/0145-Configurable-sponge-absorption.patch index e0a002a11..a33064c8d 100644 --- a/patches/server/0145-Configurable-sponge-absorption.patch +++ b/patches/server/0145-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 39c80285a287714a82bc5b93a2be382446b7ba54..7ddb992f3c994d7ade40e4281b3fc9a7e0868a4a 100644 +index 146e2b193703f065dc42968f91ca84a6025ed7b5..5bae9a1553b81a5a1afb0dbef30725e2ecfe088d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -621,6 +621,13 @@ public class PurpurWorldConfig { +@@ -625,6 +625,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0146-Projectile-offset-config.patch b/patches/server/0146-Projectile-offset-config.patch index 2a5138ccc..a8f61efa3 100644 --- a/patches/server/0146-Projectile-offset-config.patch +++ b/patches/server/0146-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ddb992f3c994d7ade40e4281b3fc9a7e0868a4a..b69a58678e4dc20d7dff961d93c0997995180ce8 100644 +index 5bae9a1553b81a5a1afb0dbef30725e2ecfe088d..75067fbba5ae696640302158b0e83bf77dd9e59d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -446,6 +446,23 @@ public class PurpurWorldConfig { +@@ -450,6 +450,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0147-Config-for-powered-rail-activation-distance.patch b/patches/server/0147-Config-for-powered-rail-activation-distance.patch index c63ceb7f1..08d97e1a3 100644 --- a/patches/server/0147-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0147-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 b69a58678e4dc20d7dff961d93c0997995180ce8..fbdde0870ff384e970ca81289201341c3487e145 100644 +index 75067fbba5ae696640302158b0e83bf77dd9e59d..9cf6098cd7ab85090c279b0737336f515e9645bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -607,6 +607,11 @@ public class PurpurWorldConfig { +@@ -611,6 +611,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0148-Piglin-portal-spawn-modifier.patch b/patches/server/0148-Piglin-portal-spawn-modifier.patch index 1d7e598d0..798d80e88 100644 --- a/patches/server/0148-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0148-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 730ef910afa911f264cf842a53281cda845ffac7..1e036ac5bca4c4c69e7f99390a48daf248364ed3 100644 +index e170176497b833e9addbdc652edcc074e598d26a..c3f37df133250e1a948f3b58d432fbee83a3c2e3 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 730ef910afa911f264cf842a53281cda845ffac7..1e036ac5bca4c4c69e7f99390a48daf2 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34cadf37bdfeb735c8f99cfb189f106202464905..fb612852a3b9a5f80554e7c237e16954c9f43d6b 100644 +index 9cf6098cd7ab85090c279b0737336f515e9645bf..8e4f9132e04e43c7ae9b9ca11191f24c678920ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1734,6 +1734,7 @@ public class PurpurWorldConfig { +@@ -1738,6 +1738,7 @@ public class PurpurWorldConfig { public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 34cadf37bdfeb735c8f99cfb189f106202464905..fb612852a3b9a5f80554e7c237e16954 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1747,6 +1748,7 @@ public class PurpurWorldConfig { +@@ -1751,6 +1752,7 @@ public class PurpurWorldConfig { piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0150-Config-for-wither-explosion-radius.patch b/patches/server/0150-Config-for-wither-explosion-radius.patch index b3ad1c14a..bd5a778d4 100644 --- a/patches/server/0150-Config-for-wither-explosion-radius.patch +++ b/patches/server/0150-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 fb612852a3b9a5f80554e7c237e16954c9f43d6b..110c1eb21a9aeafc8a438cf77d9e259d8d9814ce 100644 +index 8e4f9132e04e43c7ae9b9ca11191f24c678920ce..b0c40b8c47d3fff4c1c6ab5903a062995cead9c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2431,6 +2431,7 @@ public class PurpurWorldConfig { +@@ -2435,6 +2435,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index fb612852a3b9a5f80554e7c237e16954c9f43d6b..110c1eb21a9aeafc8a438cf77d9e259d private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2452,6 +2453,7 @@ public class PurpurWorldConfig { +@@ -2456,6 +2457,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0152-Configurable-piston-push-limit.patch b/patches/server/0152-Configurable-piston-push-limit.patch index fdbba1519..ad3463f71 100644 --- a/patches/server/0152-Configurable-piston-push-limit.patch +++ b/patches/server/0152-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 21e088ecfd12a75af218df097e2da35de3ee1795..dc7689e43e3ba9d0da241e18e09dc3d1cb992535 100644 +index b0c40b8c47d3fff4c1c6ab5903a062995cead9c7..9204429711e23019808f2e619aa6d5fa2c738dc5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -602,6 +602,11 @@ public class PurpurWorldConfig { +@@ -606,6 +606,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0154-Configurable-mob-blindness.patch b/patches/server/0154-Configurable-mob-blindness.patch index ae17e15e5..b697e6577 100644 --- a/patches/server/0154-Configurable-mob-blindness.patch +++ b/patches/server/0154-Configurable-mob-blindness.patch @@ -28,10 +28,10 @@ index da28941d9a374be39cf7c1620f48ddaaa89a9010..ee48e98e6981225b486ea933d51fb4b9 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc7689e43e3ba9d0da241e18e09dc3d1cb992535..8a81ddc4ab1117483f9bd28113e089bdef52d5bf 100644 +index 9204429711e23019808f2e619aa6d5fa2c738dc5..c31823497efcabed036951e0daa6e3da64716c14 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 { +@@ -134,6 +134,7 @@ public class PurpurWorldConfig { public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; @@ -39,7 +39,7 @@ index dc7689e43e3ba9d0da241e18e09dc3d1cb992535..8a81ddc4ab1117483f9bd28113e089bd public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -151,6 +152,7 @@ public class PurpurWorldConfig { +@@ -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); diff --git a/patches/server/0156-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0156-Config-for-health-to-impact-Creeper-explosion-radius.patch index a8ed759c8..363a5a94f 100644 --- a/patches/server/0156-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0156-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index e9eeddf5c39d66535163e67f41dbc9ac98643742..3643f62853dd5782e1dd36bd533864e0 // 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 cdafbe8b6259434d2b9bb6c2a9a924a4d8ade205..40b9650817b781192f668f662873329d22a8698a 100644 +index c31823497efcabed036951e0daa6e3da64716c14..7af41d5c345861970d25b43b094834b16217c002 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -971,6 +971,7 @@ public class PurpurWorldConfig { +@@ -975,6 +975,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index cdafbe8b6259434d2b9bb6c2a9a924a4d8ade205..40b9650817b781192f668f662873329d private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -987,6 +988,7 @@ public class PurpurWorldConfig { +@@ -991,6 +992,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/0157-Iron-golem-calm-anger-options.patch b/patches/server/0157-Iron-golem-calm-anger-options.patch index 2c312051d..1e150f2bc 100644 --- a/patches/server/0157-Iron-golem-calm-anger-options.patch +++ b/patches/server/0157-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 40b9650817b781192f668f662873329d22a8698a..71821fb520c5f367ccc657e2d549250d13fe7ed1 100644 +index 7af41d5c345861970d25b43b094834b16217c002..1e07d5e1e85517c6d7918f2cd3b2bed62f58fbfd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1461,6 +1461,8 @@ public class PurpurWorldConfig { +@@ -1465,6 +1465,8 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 40b9650817b781192f668f662873329d22a8698a..71821fb520c5f367ccc657e2d549250d private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1474,6 +1476,8 @@ public class PurpurWorldConfig { +@@ -1478,6 +1480,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/0158-Breedable-parrots.patch b/patches/server/0158-Breedable-parrots.patch index 16c32befb..2242fb923 100644 --- a/patches/server/0158-Breedable-parrots.patch +++ b/patches/server/0158-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 71821fb520c5f367ccc657e2d549250d13fe7ed1..3ddf43e0c9c632deff580ecbecdc37f3bfab7c5f 100644 +index 1e07d5e1e85517c6d7918f2cd3b2bed62f58fbfd..ac0fb308e320b48c0b992e9988dcdb28f71ac41b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1639,6 +1639,7 @@ public class PurpurWorldConfig { +@@ -1643,6 +1643,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 71821fb520c5f367ccc657e2d549250d13fe7ed1..3ddf43e0c9c632deff580ecbecdc37f3 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1652,6 +1653,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1657,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/0159-Configurable-powered-rail-boost-modifier.patch b/patches/server/0159-Configurable-powered-rail-boost-modifier.patch index 240d425f3..deadeaa1f 100644 --- a/patches/server/0159-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0159-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index 9ad276a73cba04edbe48f828031a15727d768a5b..337bd2011c471361653c317004f8380c Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c76aa3abd855377b9eb73c23b94a23ea01b7dd9d..633e2e1d53e7db3cbe8bc756a1b6ded02185decd 100644 +index ac0fb308e320b48c0b992e9988dcdb28f71ac41b..68a38529cde72e0008f48abf01d007cda8ee4749 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -266,6 +266,7 @@ public class PurpurWorldConfig { +@@ -270,6 +270,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index c76aa3abd855377b9eb73c23b94a23ea01b7dd9d..633e2e1d53e7db3cbe8bc756a1b6ded0 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -318,6 +319,7 @@ public class PurpurWorldConfig { +@@ -322,6 +323,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/0160-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0160-Add-config-change-multiplier-critical-damage-value.patch index e7043688b..196148cfb 100644 --- a/patches/server/0160-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0160-Add-config-change-multiplier-critical-damage-value.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 2dafba96353c208b89da7b65c0d56a51e00547c3..c582b5be87e93a0ea231bb6ce47bd10c2238037c 100644 +index 1974bfc133e582ce1fd6db7d44b72898582e5d12..233e9683add1c64e85bd254aaba970053d637803 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -1347,7 +1347,7 @@ public abstract class Player extends LivingEntity { @@ -18,10 +18,10 @@ index 2dafba96353c208b89da7b65c0d56a51e00547c3..c582b5be87e93a0ea231bb6ce47bd10c 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 633e2e1d53e7db3cbe8bc756a1b6ded02185decd..fe2b10c79a8119030020e085f7dee23299131e72 100644 +index 68a38529cde72e0008f48abf01d007cda8ee4749..14206628ace10ef23ed45a779a8e48ac067a826e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -363,6 +363,7 @@ public class PurpurWorldConfig { +@@ -367,6 +367,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index 633e2e1d53e7db3cbe8bc756a1b6ded02185decd..fe2b10c79a8119030020e085f7dee232 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -382,6 +383,7 @@ public class PurpurWorldConfig { +@@ -386,6 +387,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/0161-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0161-Option-to-disable-dragon-egg-teleporting.patch index d76683963..ac02a4614 100644 --- a/patches/server/0161-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0161-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 fe2b10c79a8119030020e085f7dee23299131e72..f8da85951268bea5e48c5914c6c98a3fb224aa47 100644 +index 14206628ace10ef23ed45a779a8e48ac067a826e..f801e4e307c37f61ce22a5128e64775722c35eee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -529,6 +529,11 @@ public class PurpurWorldConfig { +@@ -533,6 +533,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0164-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0164-Bee-can-work-when-raining-or-at-night.patch index 5ddf9e64c..6f348f3b9 100644 --- a/patches/server/0164-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0164-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index f52823146944d333f2d050e90261b570ba66f5dd..d8efb00c325448d566c59418fe22268c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2845ba46afe2a4d78470f62731e2815c36860ea..853fa09d8c5760c3e0afa4ddec80e522847a6b48 100644 +index f801e4e307c37f61ce22a5128e64775722c35eee..7a70b458ca900e518b24837b0315904021aaefe3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -780,6 +780,8 @@ public class PurpurWorldConfig { +@@ -784,6 +784,8 @@ public class PurpurWorldConfig { public double beeScale = 1.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index d2845ba46afe2a4d78470f62731e2815c36860ea..853fa09d8c5760c3e0afa4ddec80e522 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -794,6 +796,8 @@ public class PurpurWorldConfig { +@@ -798,6 +800,8 @@ public class PurpurWorldConfig { beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0166-Config-MobEffect-by-world.patch b/patches/server/0166-Config-MobEffect-by-world.patch index c59212737..d404381aa 100644 --- a/patches/server/0166-Config-MobEffect-by-world.patch +++ b/patches/server/0166-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 e95e47686e3d9761e09a9a94abc5826e3a78faae..0a6df211aa9958e0f021d71ba784959c2cccb0f8 100644 +index 7a70b458ca900e518b24837b0315904021aaefe3..3d3edb700314ca2a368ad2b5e310d4aaa097c8cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -322,6 +322,21 @@ public class PurpurWorldConfig { +@@ -326,6 +326,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0167-Beacon-Activation-Range-Configurable.patch b/patches/server/0167-Beacon-Activation-Range-Configurable.patch index 17be1c845..025ab9ebb 100644 --- a/patches/server/0167-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0167-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 0a6df211aa9958e0f021d71ba784959c2cccb0f8..973d47d7a42a2e6101c9847bba596e940f252480 100644 +index 3d3edb700314ca2a368ad2b5e310d4aaa097c8cd..6ca213635f81bff18c568768d6a05909de8f7bf8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -496,6 +496,17 @@ public class PurpurWorldConfig { +@@ -500,6 +500,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 547c5db6b..6bba36e25 100644 --- a/patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -54,10 +54,10 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..515dd3b769917c4aa60ce180ef24f38c public void eat(FoodProperties foodComponent) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 21b325552e231f3fb806b7a2094de7ae5ed417cf..fc0c635bcd787bd3105ca7f9b99fd295fa2969ce 100644 +index 6ca213635f81bff18c568768d6a05909de8f7bf8..60496afdae66f0644dddce5891ed4c2c05eab093 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -379,6 +379,8 @@ public class PurpurWorldConfig { +@@ -383,6 +383,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -66,7 +66,7 @@ index 21b325552e231f3fb806b7a2094de7ae5ed417cf..fc0c635bcd787bd3105ca7f9b99fd295 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -399,6 +401,8 @@ public class PurpurWorldConfig { +@@ -403,6 +405,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/0172-Shulker-spawn-from-bullet-options.patch b/patches/server/0172-Shulker-spawn-from-bullet-options.patch index 8b8905b4a..07724bccf 100644 --- a/patches/server/0172-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0172-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 fc0c635bcd787bd3105ca7f9b99fd295fa2969ce..c85019e1bbf2ce440e21f108c2751a715aca5c3a 100644 +index 60496afdae66f0644dddce5891ed4c2c05eab093..bbdf167f158bfadeb3a940587495ea3538a49b13 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2012,6 +2012,11 @@ public class PurpurWorldConfig { +@@ -2016,6 +2016,11 @@ public class PurpurWorldConfig { public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index fc0c635bcd787bd3105ca7f9b99fd295fa2969ce..c85019e1bbf2ce440e21f108c2751a71 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2024,6 +2029,11 @@ public class PurpurWorldConfig { +@@ -2028,6 +2033,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/0173-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0173-Eating-glow-berries-adds-glow-effect.patch index d553d5ab3..85d32d266 100644 --- a/patches/server/0173-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0173-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 5b256af9508acc8c9b62be80c8ebd6ec00f2faab..c00c5bea17557102e11e1e8b214ef1ae3cf80e51 100644 +index bbdf167f158bfadeb3a940587495ea3538a49b13..698c54f8ed3a398077a8dcc7b00d3c6c4d67e6e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -211,6 +211,7 @@ public class PurpurWorldConfig { +@@ -215,6 +215,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 5b256af9508acc8c9b62be80c8ebd6ec00f2faab..c00c5bea17557102e11e1e8b214ef1ae private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -256,6 +257,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,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/0174-Option-to-make-drowned-break-doors.patch b/patches/server/0174-Option-to-make-drowned-break-doors.patch index 12c36cb5d..65bf577ea 100644 --- a/patches/server/0174-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0174-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 42303e1f15e9b0ebce1b77f941d23a5da269420c..2a39509055dbb6bdfd019bab3319376cb39ae0cd 100644 +index 698c54f8ed3a398077a8dcc7b00d3c6c4d67e6e2..96dc19939587dfdaf65734e2b5280e32d03ff6db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1100,6 +1100,7 @@ public class PurpurWorldConfig { +@@ -1104,6 +1104,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 42303e1f15e9b0ebce1b77f941d23a5da269420c..2a39509055dbb6bdfd019bab3319376c private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1116,6 +1117,7 @@ public class PurpurWorldConfig { +@@ -1120,6 +1121,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/0175-Configurable-hunger-starvation-damage.patch b/patches/server/0175-Configurable-hunger-starvation-damage.patch index 5f8297678..7898e6b25 100644 --- a/patches/server/0175-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0175-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 515dd3b769917c4aa60ce180ef24f38ca12e6848..c7ad716f607afe382436d088a2b2e622 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a39509055dbb6bdfd019bab3319376cb39ae0cd..476721e76ee24bd728924e2f1c41784109f3efb9 100644 +index 96dc19939587dfdaf65734e2b5280e32d03ff6db..d2f9afca144bd15ca5c0edfa271897537ddf4adc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2720,4 +2720,9 @@ public class PurpurWorldConfig { +@@ -2724,4 +2724,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/0178-Tool-actionable-options.patch b/patches/server/0178-Tool-actionable-options.patch index 6665ebc92..99e00fb02 100644 --- a/patches/server/0178-Tool-actionable-options.patch +++ b/patches/server/0178-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 6139def3034d512a32bc33b82c9ad42da9d5ec7b..58e55a82430fa4ac0b21c6166309b892b0864b5f 100644 +index d2f9afca144bd15ca5c0edfa271897537ddf4adc..4f96af805f1b27e411d13661566eef0166318b26 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -495,6 +495,280 @@ public class PurpurWorldConfig { +@@ -499,6 +499,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0182-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0182-option-to-disable-shulker-box-items-from-dropping-co.patch index e45a77994..7e6b01be4 100644 --- a/patches/server/0182-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0182-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 58e55a82430fa4ac0b21c6166309b892b0864b5f..1ad0f726805dd28b228fb4e22c0f6cca660d2334 100644 +index 4f96af805f1b27e411d13661566eef0166318b26..a8982914d3fabc9473b8f05e757dd900a765fcd9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -212,6 +212,7 @@ public class PurpurWorldConfig { +@@ -216,6 +216,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -29,7 +29,7 @@ index 58e55a82430fa4ac0b21c6166309b892b0864b5f..1ad0f726805dd28b228fb4e22c0f6cca private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -258,6 +259,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,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/0183-Big-dripleaf-tilt-delay.patch b/patches/server/0183-Big-dripleaf-tilt-delay.patch index f3b5b8cc3..d135fe55a 100644 --- a/patches/server/0183-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0183-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 1ad0f726805dd28b228fb4e22c0f6cca660d2334..f621c656cf9287a7d715e72ae814c13224edec0c 100644 +index a8982914d3fabc9473b8f05e757dd900a765fcd9..a236624e689ee6528f2dd6758dba3cfe56428dc6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -810,6 +810,22 @@ public class PurpurWorldConfig { +@@ -814,6 +814,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0184-Player-ridable-in-water-option.patch b/patches/server/0184-Player-ridable-in-water-option.patch index 38695e09f..a2d8b0fa2 100644 --- a/patches/server/0184-Player-ridable-in-water-option.patch +++ b/patches/server/0184-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 177475facb1c269cd9b4a28e0aa18189baf1b909..4d283ffd0819a82616679dbdb70892e8 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 c255fa7f1bc11a3bcd02b98a5464567c85325313..d7b9d515ec0103f12d33a60c98449c13a4744196 100644 +index a236624e689ee6528f2dd6758dba3cfe56428dc6..9321cba5f280e30fdcf7399349b67bef94eb4f9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -385,6 +385,7 @@ public class PurpurWorldConfig { +@@ -389,6 +389,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index c255fa7f1bc11a3bcd02b98a5464567c85325313..d7b9d515ec0103f12d33a60c98449c13 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -407,6 +408,7 @@ public class PurpurWorldConfig { +@@ -411,6 +412,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/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 2b45bb786..9b71218c2 100644 --- a/patches/server/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index a68f63b73785e7db68127151aca5138da4d88654..aafecf7d199bbcaa09403ed15bf199f7 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d7b9d515ec0103f12d33a60c98449c13a4744196..e474019849d322bdbf576025b6c886c2da1559c5 100644 +index 9321cba5f280e30fdcf7399349b67bef94eb4f9b..990934797fa7aaa5303e4b8a2de3b146350d7517 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1475,6 +1475,7 @@ public class PurpurWorldConfig { +@@ -1479,6 +1479,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index d7b9d515ec0103f12d33a60c98449c13a4744196..e474019849d322bdbf576025b6c886c2 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1498,6 +1499,7 @@ public class PurpurWorldConfig { +@@ -1502,6 +1503,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/0186-Add-compass-command.patch b/patches/server/0186-Add-compass-command.patch index 4cb240835..5bce0c91e 100644 --- a/patches/server/0186-Add-compass-command.patch +++ b/patches/server/0186-Add-compass-command.patch @@ -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 34774db35da51d2942c2d24bb7b99dd9b12c98d0..b984f777a42a6a71a789db4006a2934f1b54be86 100644 +index 990934797fa7aaa5303e4b8a2de3b146350d7517..9cd70ca9dfbb0ea6d241e40bc8efb39c04f27d35 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -213,6 +213,7 @@ public class PurpurWorldConfig { +@@ -217,6 +217,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 34774db35da51d2942c2d24bb7b99dd9b12c98d0..b984f777a42a6a71a789db4006a2934f private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -260,6 +261,7 @@ public class PurpurWorldConfig { +@@ -264,6 +265,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/0187-Toggle-for-kinetic-damage.patch b/patches/server/0187-Toggle-for-kinetic-damage.patch index 324e600ab..a52a9f1e8 100644 --- a/patches/server/0187-Toggle-for-kinetic-damage.patch +++ b/patches/server/0187-Toggle-for-kinetic-damage.patch @@ -17,10 +17,10 @@ index 9367e0f148d3aa9a60dfd8881a3c337630a53129..6b76ca326d08853a8a508ec22d7bc6cf } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b984f777a42a6a71a789db4006a2934f1b54be86..7cd5f8c7eb9ff1fb4c7a86f922767536e18cb802 100644 +index 9cd70ca9dfbb0ea6d241e40bc8efb39c04f27d35..fa4566561f4a4a67f42b3d617b6c1891bc51296f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -180,11 +180,13 @@ public class PurpurWorldConfig { +@@ -184,11 +184,13 @@ public class PurpurWorldConfig { public double elytraDamageMultiplyBySpeed = 0; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0188-Add-Option-for-disable-observer-clocks.patch b/patches/server/0188-Add-Option-for-disable-observer-clocks.patch index b88abc328..147e6a671 100644 --- a/patches/server/0188-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0188-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 7cd5f8c7eb9ff1fb4c7a86f922767536e18cb802..bd9090f8fbaf4e1ab51570c7b88833f1dbc7e4fb 100644 +index fa4566561f4a4a67f42b3d617b6c1891bc51296f..34b6a9d8da2cd06d2267fe6e1f3c4057a6269f67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -360,6 +360,11 @@ public class PurpurWorldConfig { +@@ -364,6 +364,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0189-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0189-Customizeable-Zombie-Villager-curing-times.patch index 1ae7431bf..d68665f03 100644 --- a/patches/server/0189-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0189-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 c64d4708de68ac5d6575d8e5cf7efa8efa19f411..a943470572f6ac15e9174a2645270c04d04c2076 100644 +index 34b6a9d8da2cd06d2267fe6e1f3c4057a6269f67..bc20b8fae0bd6696a308b22b664aaba26cb4e037 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2978,6 +2978,8 @@ public class PurpurWorldConfig { +@@ -2982,6 +2982,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index c64d4708de68ac5d6575d8e5cf7efa8efa19f411..a943470572f6ac15e9174a2645270c04 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2994,6 +2996,8 @@ public class PurpurWorldConfig { +@@ -2998,6 +3000,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/0190-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0190-Option-for-sponges-to-work-on-lava-and-mud.patch index ce95770ec..890344f19 100644 --- a/patches/server/0190-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0190-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 ca3ebcb6266354a7a838d704d2ab04a9fa48cf56..d71a057d3bce2d00edb5b4b95b3b3d05ad4944f1 100644 +index bc20b8fae0bd6696a308b22b664aaba26cb4e037..84041f353d3c969095c98d9e234a7d76ec77f325 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -996,9 +996,13 @@ public class PurpurWorldConfig { +@@ -1000,9 +1000,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch index d8f26504d..c8561d9df 100644 --- a/patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index cf4161c57c3d8e6e93bce9e20490cd0893e8e0ca..3492cfcb6f0764f54caa1a5658801cd7 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b43ddd661ce002014334359396a7fb24a6cd2db..58e8dcb6d97c50e35e03650416608cd253933db0 100644 +index 84041f353d3c969095c98d9e234a7d76ec77f325..a72b334ad842e9c0789c6a2dc0d4ab1cca0c3545 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2813,6 +2813,7 @@ public class PurpurWorldConfig { +@@ -2817,6 +2817,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 3b43ddd661ce002014334359396a7fb24a6cd2db..58e8dcb6d97c50e35e03650416608cd2 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2835,6 +2836,7 @@ public class PurpurWorldConfig { +@@ -2839,6 +2840,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/0192-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0192-Cactus-breaks-from-solid-neighbors-config.patch index aee900c81..929faa613 100644 --- a/patches/server/0192-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0192-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 56a611603baf88fd386e8faaef65b2d7f23a8437..6ba0ff633b3ffd3566d6faf88ae06463a22a640f 100644 +index a72b334ad842e9c0789c6a2dc0d4ab1cca0c3545..09b753d35c412e102a0d9557326e10f99293a784 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -837,6 +837,11 @@ public class PurpurWorldConfig { +@@ -841,6 +841,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0193-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0193-Config-to-remove-curse-of-binding-with-weakness.patch index 81598c48f..63d102f6b 100644 --- a/patches/server/0193-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0193-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 6ba0ff633b3ffd3566d6faf88ae06463a22a640f..a0a7f805ef38a2d2eeb351f9b8bd0d5910de019a 100644 +index 09b753d35c412e102a0d9557326e10f99293a784..223c94383b315d933be94decc2ceb4646cb2d0e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -395,6 +395,7 @@ public class PurpurWorldConfig { +@@ -399,6 +399,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index 6ba0ff633b3ffd3566d6faf88ae06463a22a640f..a0a7f805ef38a2d2eeb351f9b8bd0d59 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -418,6 +419,7 @@ public class PurpurWorldConfig { +@@ -422,6 +423,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/0194-Conduit-behavior-configuration.patch b/patches/server/0194-Conduit-behavior-configuration.patch index 5ee4c2140..d258f81dc 100644 --- a/patches/server/0194-Conduit-behavior-configuration.patch +++ b/patches/server/0194-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 f01d2e5fbd9383893c36f06ed9ccf08ca6f67dd0..53de70ff50c88f3f25ba9e101698791b64194b5e 100644 +index 223c94383b315d933be94decc2ceb4646cb2d0e4..9716dc8bddb7063cdfbcbcf6d677026306b27f28 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3047,4 +3047,27 @@ public class PurpurWorldConfig { +@@ -3051,4 +3051,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0195-Cauldron-fill-chances.patch b/patches/server/0195-Cauldron-fill-chances.patch index 7f24e2a9f..65c361553 100644 --- a/patches/server/0195-Cauldron-fill-chances.patch +++ b/patches/server/0195-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 53de70ff50c88f3f25ba9e101698791b64194b5e..47b598595f0f421d91a1697b4a76dc98454dfda9 100644 +index 9716dc8bddb7063cdfbcbcf6d677026306b27f28..06496178c618c1204ccb6edb71296bf6f08cb686 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3070,4 +3070,15 @@ public class PurpurWorldConfig { +@@ -3074,4 +3074,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch index a4b8701af..bc4a2f338 100644 --- a/patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f74aaf5cf03e5fd7e4841fd757e52c7e4804dc65..242aed5501cac56ed9a50473b7742d0daa010766 100644 +index 06496178c618c1204ccb6edb71296bf6f08cb686..b5b235ab952c15951cc46db8d517c36f09f08d1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -138,6 +138,7 @@ public class PurpurWorldConfig { +@@ -140,6 +140,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,7 +29,7 @@ index f74aaf5cf03e5fd7e4841fd757e52c7e4804dc65..242aed5501cac56ed9a50473b7742d0d private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -158,6 +159,7 @@ public class PurpurWorldConfig { +@@ -162,6 +163,7 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0197-Shulker-change-color-with-dye.patch b/patches/server/0197-Shulker-change-color-with-dye.patch index 459f2bbf3..10c9c2779 100644 --- a/patches/server/0197-Shulker-change-color-with-dye.patch +++ b/patches/server/0197-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 92fc515ebecd55d8c109d0059d0a4d480f727a26..12e9509c129ff9da55043f57bc5864fd5c80d8f1 100644 +index b5b235ab952c15951cc46db8d517c36f09f08d1e..56b631c9689f797b9ae36be89b5e81515700022a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2339,6 +2339,7 @@ public class PurpurWorldConfig { +@@ -2343,6 +2343,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 92fc515ebecd55d8c109d0059d0a4d480f727a26..12e9509c129ff9da55043f57bc5864fd private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2356,6 +2357,7 @@ public class PurpurWorldConfig { +@@ -2360,6 +2361,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/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 5bb5706db..c120d683d 100644 --- a/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,10 +25,10 @@ index 65f36d4cf7789f9a7b26d29d9b2b5fdae199694f..11b73081f5e225257027c15749636ed1 // 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 93dfa8b30637f8f150d60cb31053f81789cd6529..c6d03a8a6494c2ed53b3592b7a0c5a1ffb858fa5 100644 +index 56b631c9689f797b9ae36be89b5e81515700022a..6803f7ec1717cd1e71b53fdbab2251c8bcdee9d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -139,6 +139,8 @@ public class PurpurWorldConfig { +@@ -141,6 +141,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 93dfa8b30637f8f150d60cb31053f81789cd6529..c6d03a8a6494c2ed53b3592b7a0c5a1f private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -160,6 +162,8 @@ public class PurpurWorldConfig { +@@ -164,6 +166,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/0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index e0f9dca35..8fd602aee 100644 --- a/patches/server/0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0201-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 c6d03a8a6494c2ed53b3592b7a0c5a1ffb858fa5..4030b49fb0c35f684e9037442f11070e49e4f4a2 100644 +index 6803f7ec1717cd1e71b53fdbab2251c8bcdee9d9..0f923e71fe419f3986d56f9e4b63c99f7edf6dd9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -797,6 +797,11 @@ public class PurpurWorldConfig { +@@ -801,6 +801,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index c6d03a8a6494c2ed53b3592b7a0c5a1ffb858fa5..4030b49fb0c35f684e9037442f11070e public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -934,6 +939,11 @@ public class PurpurWorldConfig { +@@ -938,6 +943,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch index ee88d294a..26b98c157 100644 --- a/patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch @@ -48,10 +48,10 @@ index e81820761689801c3ca267c500818ff0f48bb858..efb72ae3ce609117258dfc9f09b53add cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4030b49fb0c35f684e9037442f11070e49e4f4a2..c9212e9deea521c95427fc80669964b9af97b95d 100644 +index 0f923e71fe419f3986d56f9e4b63c99f7edf6dd9..1a3c950e938ecfe69662cc071111ebfd31c6e3eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -402,6 +402,7 @@ public class PurpurWorldConfig { +@@ -406,6 +406,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 4030b49fb0c35f684e9037442f11070e49e4f4a2..c9212e9deea521c95427fc80669964b9 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -426,6 +427,7 @@ public class PurpurWorldConfig { +@@ -430,6 +431,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/0203-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0203-Dolphins-naturally-aggressive-to-players-chance.patch index 965ba8329..c418b0d65 100644 --- a/patches/server/0203-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0203-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 ee4e45423687ae28467a243d373c666f31f31550..c526c13da1ac0e12fbf92cc95ed2b43f723ee489 100644 +index 1a3c950e938ecfe69662cc071111ebfd31c6e3eb..adac3e234cd3995a8f8d26f233ebf420184f2f19 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1377,6 +1377,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1381,7 @@ public class PurpurWorldConfig { public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index ee4e45423687ae28467a243d373c666f31f31550..c526c13da1ac0e12fbf92cc95ed2b43f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1392,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1396,6 +1397,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/0204-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0204-Cows-naturally-aggressive-to-players-chance.patch index 2d14e1260..4fed8b9b0 100644 --- a/patches/server/0204-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0204-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 c526c13da1ac0e12fbf92cc95ed2b43f723ee489..7ec338c83afa7af447e6aba5a06a9d8061d51f73 100644 +index adac3e234cd3995a8f8d26f233ebf420184f2f19..2c4bdd6a72f9957a2df923db7088951c95c628ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1322,7 +1322,14 @@ public class PurpurWorldConfig { +@@ -1326,7 +1326,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index c526c13da1ac0e12fbf92cc95ed2b43f723ee489..7ec338c83afa7af447e6aba5a06a9d80 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1336,6 +1343,8 @@ public class PurpurWorldConfig { +@@ -1340,6 +1347,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/0205-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0205-Option-for-beds-to-explode-on-villager-sleep.patch index 3cfe798da..ddcab654f 100644 --- a/patches/server/0205-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0205-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 77fc9ca8d4a72cdb7db51297a13808f46e497126..884d9074da27a1a8157e0e6d66936375 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c73364a1ea2881ce04f131ebfc1a763fcbf2082..8a509053260b9bac5269e45e28eaa113c2dfe9a7 100644 +index 2c4bdd6a72f9957a2df923db7088951c95c628ed..329b2f9ae61df6a69daabb74b2db88b26bb61db5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -816,6 +816,7 @@ public class PurpurWorldConfig { +@@ -820,6 +820,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 2c73364a1ea2881ce04f131ebfc1a763fcbf2082..8a509053260b9bac5269e45e28eaa113 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -826,6 +827,7 @@ public class PurpurWorldConfig { +@@ -830,6 +831,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0206-Halloween-options-and-optimizations.patch b/patches/server/0206-Halloween-options-and-optimizations.patch index 8ee830d1e..60b206494 100644 --- a/patches/server/0206-Halloween-options-and-optimizations.patch +++ b/patches/server/0206-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 1910e22e9ee2d18e86c9f8e3dd06199e73599bf6..29cbb9ae004f657ff3aa6db379716472 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72a22046ea2b5b2e044ab3288b51121e06fb4079..b751cb6eedfd2b914bc091c53bbdc3450fcc04a8 100644 +index 329b2f9ae61df6a69daabb74b2db88b26bb61db5..390d90b1e02fd96ef02ac902653b52afba25d2fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1742,6 +1742,13 @@ public class PurpurWorldConfig { +@@ -1746,6 +1746,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0209-Campfire-option-for-lit-when-placed.patch b/patches/server/0209-Campfire-option-for-lit-when-placed.patch index b8db818c4..928a495b8 100644 --- a/patches/server/0209-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0209-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 947f615241b097c18af93b0c920cc9320ecd37c3..454739d2091b1ed0e77ab604c61dfb986925f609 100644 +index 390d90b1e02fd96ef02ac902653b52afba25d2fc..c032dc798d02066982127ffa4a83c7506abebd1a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -859,6 +859,11 @@ public class PurpurWorldConfig { +@@ -863,6 +863,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0210-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0210-options-to-extinguish-fire-blocks-with-snowballs.patch index 5b6f99b25..71245624e 100644 --- a/patches/server/0210-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0210-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 454739d2091b1ed0e77ab604c61dfb986925f609..840313e0b64fdb0ec2cb8224b58a157872a34535 100644 +index c032dc798d02066982127ffa4a83c7506abebd1a..d2747f66aeaa032e58a4f09f5ab36fc44e42e4a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -222,6 +222,9 @@ public class PurpurWorldConfig { +@@ -226,6 +226,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 454739d2091b1ed0e77ab604c61dfb986925f609..840313e0b64fdb0ec2cb8224b58a1578 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -270,6 +273,9 @@ public class PurpurWorldConfig { +@@ -274,6 +277,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/0211-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0211-Add-option-to-disable-zombie-villagers-cure.patch index 5b14e03c6..6a2f424c4 100644 --- a/patches/server/0211-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0211-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 ed16f9336220a2b161ceeffa83359e1654c7438c..d729153abad512b3791aaf26ce1af7bb83cd449f 100644 +index d2747f66aeaa032e58a4f09f5ab36fc44e42e4a8..2d93f7feb8432c3fa7fee91f89eeb907046e7346 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3044,6 +3044,7 @@ public class PurpurWorldConfig { +@@ -3048,6 +3048,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index ed16f9336220a2b161ceeffa83359e1654c7438c..d729153abad512b3791aaf26ce1af7bb private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3062,6 +3063,7 @@ public class PurpurWorldConfig { +@@ -3066,6 +3067,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/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch index 390df1e55..bb54a3246 100644 --- a/patches/server/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -135,10 +135,10 @@ index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a05c3e53ad102428963cc4fe7d227ae189a3185..e61b537f78593c5f836a82ef5cb792df1adbdb78 100644 +index 2d93f7feb8432c3fa7fee91f89eeb907046e7346..abe5832720e034959bc4efcc308828bd2e12decc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -130,6 +130,8 @@ public class PurpurWorldConfig { +@@ -132,6 +132,8 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; @@ -147,8 +147,8 @@ index 8a05c3e53ad102428963cc4fe7d227ae189a3185..e61b537f78593c5f836a82ef5cb792df public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -152,6 +154,14 @@ public class PurpurWorldConfig { - imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); +@@ -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); + if (PurpurConfig.version < 35) { diff --git a/patches/server/0213-Signs-allow-color-codes.patch b/patches/server/0213-Signs-allow-color-codes.patch index ccd71a701..c03a14fc0 100644 --- a/patches/server/0213-Signs-allow-color-codes.patch +++ b/patches/server/0213-Signs-allow-color-codes.patch @@ -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 e61b537f78593c5f836a82ef5cb792df1adbdb78..410834fda269ea422cc9396741a6ee12b88a659d 100644 +index abe5832720e034959bc4efcc308828bd2e12decc..e1f5f82d227a495a43bb833ce5c555fa45bd7fd9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1032,6 +1032,11 @@ public class PurpurWorldConfig { +@@ -1036,6 +1036,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0215-Mobs-always-drop-experience.patch b/patches/server/0215-Mobs-always-drop-experience.patch index 534f8958e..140bcf50c 100644 --- a/patches/server/0215-Mobs-always-drop-experience.patch +++ b/patches/server/0215-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba..d342752271c76b447bb8cde50d574072 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ced1b55cdf 100644 +index e1f5f82d227a495a43bb833ce5c555fa45bd7fd9..aca8a3d7c8b646746b4f54fdaf784acf329125c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1119,6 +1119,7 @@ public class PurpurWorldConfig { +@@ -1123,6 +1123,7 @@ public class PurpurWorldConfig { public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1168,7 +1168,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void axolotlSettings() { axolotlRidable = getBoolean("mobs.axolotl.ridable", axolotlRidable); axolotlControllable = getBoolean("mobs.axolotl.controllable", axolotlControllable); -@@ -1126,6 +1127,7 @@ public class PurpurWorldConfig { +@@ -1130,6 +1131,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean batRidable = false; -@@ -1142,6 +1144,7 @@ public class PurpurWorldConfig { +@@ -1146,6 +1148,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1184,7 +1184,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1162,6 +1165,7 @@ public class PurpurWorldConfig { +@@ -1166,6 +1169,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean beeRidable = false; -@@ -1174,6 +1178,7 @@ public class PurpurWorldConfig { +@@ -1178,6 +1182,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1200,7 +1200,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1190,6 +1195,7 @@ public class PurpurWorldConfig { +@@ -1194,6 +1199,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean blazeRidable = false; -@@ -1199,6 +1205,7 @@ public class PurpurWorldConfig { +@@ -1203,6 +1209,7 @@ public class PurpurWorldConfig { public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; public boolean blazeTakeDamageFromWater = true; @@ -1216,7 +1216,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1212,6 +1219,7 @@ public class PurpurWorldConfig { +@@ -1216,6 +1223,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean boggedRidable = false; -@@ -1257,6 +1265,7 @@ public class PurpurWorldConfig { +@@ -1261,6 +1269,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1232,7 +1232,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1278,6 +1287,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1291,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1240,7 +1240,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean caveSpiderRidable = false; -@@ -1286,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1300,7 @@ public class PurpurWorldConfig { public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1248,7 +1248,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1298,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1313,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean chickenRidable = false; -@@ -1308,6 +1320,7 @@ public class PurpurWorldConfig { +@@ -1312,6 +1324,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1264,7 +1264,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1322,6 +1335,7 @@ public class PurpurWorldConfig { +@@ -1326,6 +1339,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean codRidable = false; -@@ -1329,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1347,7 @@ public class PurpurWorldConfig { public double codMaxHealth = 3.0D; public double codScale = 1.0D; public boolean codTakeDamageFromWater = false; @@ -1280,7 +1280,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1340,6 +1355,7 @@ public class PurpurWorldConfig { +@@ -1344,6 +1359,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean cowRidable = false; -@@ -1352,6 +1368,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1372,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1296,7 +1296,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1373,6 +1390,7 @@ public class PurpurWorldConfig { +@@ -1377,6 +1394,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean creeperRidable = false; -@@ -1386,6 +1404,7 @@ public class PurpurWorldConfig { +@@ -1390,6 +1408,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1312,7 +1312,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1403,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1407,6 +1426,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean dolphinRidable = false; -@@ -1415,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1419,6 +1439,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1328,7 +1328,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1431,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1456,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean donkeyRidableInWater = false; -@@ -1442,6 +1464,7 @@ public class PurpurWorldConfig { +@@ -1446,6 +1468,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1344,7 +1344,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1459,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1463,6 +1486,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean drownedRidable = false; -@@ -1472,6 +1496,7 @@ public class PurpurWorldConfig { +@@ -1476,6 +1500,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1360,7 +1360,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1489,6 +1514,7 @@ public class PurpurWorldConfig { +@@ -1493,6 +1518,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean elderGuardianRidable = false; -@@ -1496,6 +1522,7 @@ public class PurpurWorldConfig { +@@ -1500,6 +1526,7 @@ public class PurpurWorldConfig { public double elderGuardianMaxHealth = 80.0D; public double elderGuardianScale = 1.0D; public boolean elderGuardianTakeDamageFromWater = false; @@ -1376,7 +1376,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1507,6 +1534,7 @@ public class PurpurWorldConfig { +@@ -1511,6 +1538,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean enderDragonRidable = false; -@@ -1553,6 +1581,7 @@ public class PurpurWorldConfig { +@@ -1557,6 +1585,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1392,7 +1392,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1577,6 +1606,7 @@ public class PurpurWorldConfig { +@@ -1581,6 +1610,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean endermiteRidable = false; -@@ -1585,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1589,6 +1619,7 @@ public class PurpurWorldConfig { public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1408,7 +1408,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1597,6 +1628,7 @@ public class PurpurWorldConfig { +@@ -1601,6 +1632,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean evokerRidable = false; -@@ -1606,6 +1638,7 @@ public class PurpurWorldConfig { +@@ -1610,6 +1642,7 @@ public class PurpurWorldConfig { public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1424,7 +1424,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1619,6 +1652,7 @@ public class PurpurWorldConfig { +@@ -1623,6 +1656,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean foxRidable = false; -@@ -1630,6 +1664,7 @@ public class PurpurWorldConfig { +@@ -1634,6 +1668,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1440,7 +1440,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1645,6 +1680,7 @@ public class PurpurWorldConfig { +@@ -1649,6 +1684,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean frogRidable = false; -@@ -1667,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1671,6 +1707,7 @@ public class PurpurWorldConfig { public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; public boolean ghastTakeDamageFromWater = false; @@ -1456,7 +1456,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1680,6 +1717,7 @@ public class PurpurWorldConfig { +@@ -1684,6 +1721,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean giantRidable = false; -@@ -1694,6 +1732,7 @@ public class PurpurWorldConfig { +@@ -1698,6 +1736,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1472,7 +1472,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1716,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1720,6 +1759,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean glowSquidRidable = false; -@@ -1724,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1728,6 +1768,7 @@ public class PurpurWorldConfig { public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1488,7 +1488,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1731,6 +1772,7 @@ public class PurpurWorldConfig { +@@ -1735,6 +1776,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean goatRidable = false; -@@ -1740,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1744,6 +1786,7 @@ public class PurpurWorldConfig { public double goatScale = 1.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1504,7 +1504,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1748,6 +1791,7 @@ public class PurpurWorldConfig { +@@ -1752,6 +1795,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean guardianRidable = false; -@@ -1755,6 +1799,7 @@ public class PurpurWorldConfig { +@@ -1759,6 +1803,7 @@ public class PurpurWorldConfig { public double guardianMaxHealth = 30.0D; public double guardianScale = 1.0D; public boolean guardianTakeDamageFromWater = false; @@ -1520,7 +1520,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1766,6 +1811,7 @@ public class PurpurWorldConfig { +@@ -1770,6 +1815,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean forceHalloweenSeason = false; -@@ -1782,6 +1828,7 @@ public class PurpurWorldConfig { +@@ -1786,6 +1832,7 @@ public class PurpurWorldConfig { public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1536,7 +1536,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1795,6 +1842,7 @@ public class PurpurWorldConfig { +@@ -1799,6 +1846,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean horseRidableInWater = false; -@@ -1806,6 +1854,7 @@ public class PurpurWorldConfig { +@@ -1810,6 +1858,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1552,7 +1552,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1823,6 +1872,7 @@ public class PurpurWorldConfig { +@@ -1827,6 +1876,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean huskRidable = false; -@@ -1835,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1889,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1568,7 +1568,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1851,6 +1902,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1906,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean illusionerRidable = false; -@@ -1861,6 +1913,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1917,7 @@ public class PurpurWorldConfig { public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1584,7 +1584,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1879,6 +1932,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +1936,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean ironGolemRidable = false; -@@ -1890,6 +1944,7 @@ public class PurpurWorldConfig { +@@ -1894,6 +1948,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1600,7 +1600,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1905,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1909,6 +1964,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean llamaRidable = false; -@@ -1919,6 +1975,7 @@ public class PurpurWorldConfig { +@@ -1923,6 +1979,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1616,7 +1616,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1939,6 +1996,7 @@ public class PurpurWorldConfig { +@@ -1943,6 +2000,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean magmaCubeRidable = false; -@@ -1949,6 +2007,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +2011,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1632,7 +1632,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1963,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -1967,6 +2026,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1640,7 +1640,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean mooshroomRidable = false; -@@ -1972,6 +2032,7 @@ public class PurpurWorldConfig { +@@ -1976,6 +2036,7 @@ public class PurpurWorldConfig { public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1648,7 +1648,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1985,6 +2046,7 @@ public class PurpurWorldConfig { +@@ -1989,6 +2050,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean muleRidableInWater = false; -@@ -1996,6 +2058,7 @@ public class PurpurWorldConfig { +@@ -2000,6 +2062,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1664,7 +1664,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -2013,6 +2076,7 @@ public class PurpurWorldConfig { +@@ -2017,6 +2080,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean ocelotRidable = false; -@@ -2022,6 +2086,7 @@ public class PurpurWorldConfig { +@@ -2026,6 +2090,7 @@ public class PurpurWorldConfig { public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1680,7 +1680,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2035,6 +2100,7 @@ public class PurpurWorldConfig { +@@ -2039,6 +2104,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean pandaRidable = false; -@@ -2044,6 +2110,7 @@ public class PurpurWorldConfig { +@@ -2048,6 +2114,7 @@ public class PurpurWorldConfig { public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1696,7 +1696,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -2057,6 +2124,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2128,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean parrotRidable = false; -@@ -2067,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2071,6 +2139,7 @@ public class PurpurWorldConfig { public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1712,7 +1712,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2081,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2085,6 +2154,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean phantomRidable = false; -@@ -2108,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2112,6 +2182,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1728,7 +1728,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2143,6 +2214,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2218,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean pigRidable = false; -@@ -2153,6 +2225,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2229,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1744,7 +1744,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2167,6 +2240,7 @@ public class PurpurWorldConfig { +@@ -2171,6 +2244,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean piglinRidable = false; -@@ -2177,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2255,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1760,7 +1760,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2191,6 +2266,7 @@ public class PurpurWorldConfig { +@@ -2195,6 +2270,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean piglinBruteRidable = false; -@@ -2199,6 +2275,7 @@ public class PurpurWorldConfig { +@@ -2203,6 +2279,7 @@ public class PurpurWorldConfig { public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2211,6 +2288,7 @@ public class PurpurWorldConfig { +@@ -2215,6 +2292,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean pillagerRidable = false; -@@ -2220,6 +2298,7 @@ public class PurpurWorldConfig { +@@ -2224,6 +2302,7 @@ public class PurpurWorldConfig { public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2233,6 +2312,7 @@ public class PurpurWorldConfig { +@@ -2237,6 +2316,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean polarBearRidable = false; -@@ -2244,6 +2324,7 @@ public class PurpurWorldConfig { +@@ -2248,6 +2328,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1808,7 +1808,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2260,6 +2341,7 @@ public class PurpurWorldConfig { +@@ -2264,6 +2345,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean pufferfishRidable = false; -@@ -2267,6 +2349,7 @@ public class PurpurWorldConfig { +@@ -2271,6 +2353,7 @@ public class PurpurWorldConfig { public double pufferfishMaxHealth = 3.0D; public double pufferfishScale = 1.0D; public boolean pufferfishTakeDamageFromWater = false; @@ -1824,7 +1824,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2278,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2282,6 +2365,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean rabbitRidable = false; -@@ -2290,6 +2374,7 @@ public class PurpurWorldConfig { +@@ -2294,6 +2378,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1840,7 +1840,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2306,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2310,6 +2395,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean ravagerRidable = false; -@@ -2316,6 +2402,7 @@ public class PurpurWorldConfig { +@@ -2320,6 +2406,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1856,7 +1856,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2346,6 +2433,7 @@ public class PurpurWorldConfig { +@@ -2350,6 +2437,7 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1864,7 +1864,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean salmonRidable = false; -@@ -2353,6 +2441,7 @@ public class PurpurWorldConfig { +@@ -2357,6 +2445,7 @@ public class PurpurWorldConfig { public double salmonMaxHealth = 3.0D; public double salmonScale = 1.0D; public boolean salmonTakeDamageFromWater = false; @@ -1872,7 +1872,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2364,6 +2453,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2457,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean sheepRidable = false; -@@ -2374,6 +2464,7 @@ public class PurpurWorldConfig { +@@ -2378,6 +2468,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1888,7 +1888,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2388,6 +2479,7 @@ public class PurpurWorldConfig { +@@ -2392,6 +2483,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean shulkerRidable = false; -@@ -2402,6 +2494,7 @@ public class PurpurWorldConfig { +@@ -2406,6 +2498,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1904,7 +1904,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2420,6 +2513,7 @@ public class PurpurWorldConfig { +@@ -2424,6 +2517,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean silverfishRidable = false; -@@ -2431,6 +2525,7 @@ public class PurpurWorldConfig { +@@ -2435,6 +2529,7 @@ public class PurpurWorldConfig { public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1920,7 +1920,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2446,6 +2541,7 @@ public class PurpurWorldConfig { +@@ -2450,6 +2545,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean skeletonRidable = false; -@@ -2454,6 +2550,7 @@ public class PurpurWorldConfig { +@@ -2458,6 +2554,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1936,7 +1936,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2466,6 +2563,7 @@ public class PurpurWorldConfig { +@@ -2470,6 +2567,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean skeletonHorseRidable = false; -@@ -2478,6 +2576,7 @@ public class PurpurWorldConfig { +@@ -2482,6 +2580,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1952,7 +1952,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2495,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2499,6 +2598,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean slimeRidable = false; -@@ -2505,6 +2605,7 @@ public class PurpurWorldConfig { +@@ -2509,6 +2609,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1968,7 +1968,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2519,6 +2620,7 @@ public class PurpurWorldConfig { +@@ -2523,6 +2624,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1976,7 +1976,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean snowGolemRidable = false; -@@ -2534,6 +2636,7 @@ public class PurpurWorldConfig { +@@ -2538,6 +2640,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1984,7 +1984,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2553,6 +2656,7 @@ public class PurpurWorldConfig { +@@ -2557,6 +2660,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean snifferRidable = false; -@@ -2578,6 +2682,7 @@ public class PurpurWorldConfig { +@@ -2582,6 +2686,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -2000,7 +2000,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2592,6 +2697,7 @@ public class PurpurWorldConfig { +@@ -2596,6 +2701,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean spiderRidable = false; -@@ -2600,6 +2706,7 @@ public class PurpurWorldConfig { +@@ -2604,6 +2710,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; public boolean spiderTakeDamageFromWater = false; @@ -2016,7 +2016,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2612,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2616,6 +2723,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean strayRidable = false; -@@ -2620,6 +2728,7 @@ public class PurpurWorldConfig { +@@ -2624,6 +2732,7 @@ public class PurpurWorldConfig { public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; public boolean strayTakeDamageFromWater = false; @@ -2032,7 +2032,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2632,6 +2741,7 @@ public class PurpurWorldConfig { +@@ -2636,6 +2745,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean striderRidable = false; -@@ -2642,6 +2752,7 @@ public class PurpurWorldConfig { +@@ -2646,6 +2756,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2048,7 +2048,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2656,6 +2767,7 @@ public class PurpurWorldConfig { +@@ -2660,6 +2771,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean tadpoleRidable = false; -@@ -2678,6 +2790,7 @@ public class PurpurWorldConfig { +@@ -2682,6 +2794,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2064,7 +2064,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2697,6 +2810,7 @@ public class PurpurWorldConfig { +@@ -2701,6 +2814,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean tropicalFishRidable = false; -@@ -2704,6 +2818,7 @@ public class PurpurWorldConfig { +@@ -2708,6 +2822,7 @@ public class PurpurWorldConfig { public double tropicalFishMaxHealth = 3.0D; public double tropicalFishScale = 1.0D; public boolean tropicalFishTakeDamageFromWater = false; @@ -2080,7 +2080,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2715,6 +2830,7 @@ public class PurpurWorldConfig { +@@ -2719,6 +2834,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean turtleRidable = false; -@@ -2724,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2728,6 +2844,7 @@ public class PurpurWorldConfig { public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2096,7 +2096,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2737,6 +2854,7 @@ public class PurpurWorldConfig { +@@ -2741,6 +2858,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean vexRidable = false; -@@ -2746,6 +2864,7 @@ public class PurpurWorldConfig { +@@ -2750,6 +2868,7 @@ public class PurpurWorldConfig { public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; public boolean vexTakeDamageFromWater = false; @@ -2112,7 +2112,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2759,6 +2878,7 @@ public class PurpurWorldConfig { +@@ -2763,6 +2882,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean villagerRidable = false; -@@ -2775,6 +2895,7 @@ public class PurpurWorldConfig { +@@ -2779,6 +2899,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2128,7 +2128,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2795,6 +2916,7 @@ public class PurpurWorldConfig { +@@ -2799,6 +2920,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean vindicatorRidable = false; -@@ -2804,6 +2926,7 @@ public class PurpurWorldConfig { +@@ -2808,6 +2930,7 @@ public class PurpurWorldConfig { public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2144,7 +2144,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2817,6 +2940,7 @@ public class PurpurWorldConfig { +@@ -2821,6 +2944,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean wanderingTraderRidable = false; -@@ -2828,6 +2952,7 @@ public class PurpurWorldConfig { +@@ -2832,6 +2956,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2160,7 +2160,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2843,6 +2968,7 @@ public class PurpurWorldConfig { +@@ -2847,6 +2972,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean wardenRidable = false; -@@ -2860,6 +2986,7 @@ public class PurpurWorldConfig { +@@ -2864,6 +2990,7 @@ public class PurpurWorldConfig { public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; public boolean witchTakeDamageFromWater = false; @@ -2176,7 +2176,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2872,6 +2999,7 @@ public class PurpurWorldConfig { +@@ -2876,6 +3003,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean witherRidable = false; -@@ -2887,6 +3015,7 @@ public class PurpurWorldConfig { +@@ -2891,6 +3019,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2192,7 +2192,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2910,6 +3039,7 @@ public class PurpurWorldConfig { +@@ -2914,6 +3043,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean witherSkeletonRidable = false; -@@ -2918,6 +3048,7 @@ public class PurpurWorldConfig { +@@ -2922,6 +3052,7 @@ public class PurpurWorldConfig { public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2208,7 +2208,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2930,6 +3061,7 @@ public class PurpurWorldConfig { +@@ -2934,6 +3065,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean wolfRidable = false; -@@ -2942,6 +3074,7 @@ public class PurpurWorldConfig { +@@ -2946,6 +3078,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2224,7 +2224,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2962,6 +3095,7 @@ public class PurpurWorldConfig { +@@ -2966,6 +3099,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean zoglinRidable = false; -@@ -2970,6 +3104,7 @@ public class PurpurWorldConfig { +@@ -2974,6 +3108,7 @@ public class PurpurWorldConfig { public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2240,7 +2240,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2982,6 +3117,7 @@ public class PurpurWorldConfig { +@@ -2986,6 +3121,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean zombieRidable = false; -@@ -2996,6 +3132,7 @@ public class PurpurWorldConfig { +@@ -3000,6 +3136,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2256,7 +2256,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3014,6 +3151,7 @@ public class PurpurWorldConfig { +@@ -3018,6 +3155,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean zombieHorseRidable = false; -@@ -3027,6 +3165,7 @@ public class PurpurWorldConfig { +@@ -3031,6 +3169,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2272,7 +2272,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -3045,6 +3184,7 @@ public class PurpurWorldConfig { +@@ -3049,6 +3188,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean zombieVillagerRidable = false; -@@ -3060,6 +3200,7 @@ public class PurpurWorldConfig { +@@ -3064,6 +3204,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2288,7 +2288,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3079,6 +3220,7 @@ public class PurpurWorldConfig { +@@ -3083,6 +3224,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 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce } public boolean zombifiedPiglinRidable = false; -@@ -3092,6 +3234,7 @@ public class PurpurWorldConfig { +@@ -3096,6 +3238,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2304,7 +2304,7 @@ index 85fe8c9f3b6b568d006204034dc8f7be2f13ed72..9a807ba3c9ccc83422cd6b32c37416ce private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3109,6 +3252,7 @@ public class PurpurWorldConfig { +@@ -3113,6 +3256,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index cecbe9c6e..162835f6c 100644 --- a/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0217-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 812947a70300aa0e66f8035b50b4eef9053628f8..a8d9e58fbaa8a2aec8feeb5730de0ce67bedf902 100644 +index aca8a3d7c8b646746b4f54fdaf784acf329125c7..04efd2c306f453d53aa46b995008cebec70e6cd1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -539,6 +539,8 @@ public class PurpurWorldConfig { +@@ -543,6 +543,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 812947a70300aa0e66f8035b50b4eef9053628f8..a8d9e58fbaa8a2aec8feeb5730de0ce6 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -806,6 +808,8 @@ public class PurpurWorldConfig { +@@ -810,6 +812,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch index a58e94175..cac2760dc 100644 --- a/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0218-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 a8d9e58fbaa8a2aec8feeb5730de0ce67bedf902..42c70b2ea5231f4b31856abe6ad6d0e53bf2a83c 100644 +index 04efd2c306f453d53aa46b995008cebec70e6cd1..98c01d48a01786abfd7a85c857ec92f46610c8ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1066,11 +1066,13 @@ public class PurpurWorldConfig { +@@ -1070,11 +1070,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0219-Mob-head-visibility-percent.patch b/patches/server/0219-Mob-head-visibility-percent.patch index d53a4faed..35ad82012 100644 --- a/patches/server/0219-Mob-head-visibility-percent.patch +++ b/patches/server/0219-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 6b76ca326d08853a8a508ec22d7bc6cf370223dd..07068e5f93289534f10c0b876dbf884a // 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 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c071b6c2889 100644 +index 98c01d48a01786abfd7a85c857ec92f46610c8ee..25f95e7d3be2b183ea7be58419ad5376b0135325 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1411,6 +1411,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1415,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1429,6 +1430,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1434,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 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 } public boolean dolphinRidable = false; -@@ -2258,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2262,6 +2264,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2273,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2277,6 +2280,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 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 } public boolean piglinBruteRidable = false; -@@ -2557,6 +2561,7 @@ public class PurpurWorldConfig { +@@ -2561,6 +2565,7 @@ public class PurpurWorldConfig { public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2570,6 +2575,7 @@ public class PurpurWorldConfig { +@@ -2574,6 +2579,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 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 } public boolean skeletonHorseRidable = false; -@@ -3139,6 +3145,7 @@ public class PurpurWorldConfig { +@@ -3143,6 +3149,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 97f3ce2c92caa52a0cf113080a260295f8a15687..870d394b388d82547662db833a806c07 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3158,6 +3165,7 @@ public class PurpurWorldConfig { +@@ -3162,6 +3169,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/0222-Stop-bees-from-dying-after-stinging.patch b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch index 47cfd7cb3..65f840d1d 100644 --- a/patches/server/0222-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0222-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 870d394b388d82547662db833a806c071b6c2889..1c0a02d4c6f7cf83c5298fb9d1bf86d385a449b5 100644 +index 25f95e7d3be2b183ea7be58419ad5376b0135325..c9dba0cded4d79a57f051aefb45486ebbf40b3a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1185,6 +1185,7 @@ public class PurpurWorldConfig { +@@ -1189,6 +1189,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 870d394b388d82547662db833a806c071b6c2889..1c0a02d4c6f7cf83c5298fb9d1bf86d3 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1202,6 +1203,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1207,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0224-Configurable-farmland-trample-height.patch b/patches/server/0224-Configurable-farmland-trample-height.patch index bb765040f..0ad9aa9fa 100644 --- a/patches/server/0224-Configurable-farmland-trample-height.patch +++ b/patches/server/0224-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 c1309e4a14d29f722c171144799fea809b08c357..0cd6888166161671e626a2becfdbb9d755e65da8 100644 +index c9dba0cded4d79a57f051aefb45486ebbf40b3a2..f34bdc25186f4cbf59227d0f1add8dfc8fd36d76 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -959,6 +959,7 @@ public class PurpurWorldConfig { +@@ -963,6 +963,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index c1309e4a14d29f722c171144799fea809b08c357..0cd6888166161671e626a2becfdbb9d7 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -966,6 +967,7 @@ public class PurpurWorldConfig { +@@ -970,6 +971,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/0225-Configurable-player-pickup-exp-delay.patch b/patches/server/0225-Configurable-player-pickup-exp-delay.patch index 2bc365820..c12d198b1 100644 --- a/patches/server/0225-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0225-Configurable-player-pickup-exp-delay.patch @@ -9,7 +9,7 @@ players still only pick up one orb every tick. However, setting this to any negative number will pick up all orbs instantly. diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 9743e3ed1bbccc44c39df864e980e64fc5e32e1d..3003f2ab38008b761bee49823b49edae67cd5292 100644 +index caaeeb63b8bf0d3709fc38266a7e8c48211f5c0b..1cdf71a76c629bcc42da7fcc451b7031dbe644bd 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -329,7 +329,7 @@ public class ExperienceOrb extends Entity { @@ -22,7 +22,7 @@ index 9743e3ed1bbccc44c39df864e980e64fc5e32e1d..3003f2ab38008b761bee49823b49edae int i = this.repairPlayerItems(entityplayer, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index cb6f161d32fe9642e9e9b1efc47d88612041ea15..92df67d9e1d32c8a7aaeaaa46c7641af600edc52 100644 +index 4d283ffd0819a82616679dbdb70892e84bdd12de..42f9a2046aa8086aecbfa2fa0b604b21c2b70754 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -636,7 +636,7 @@ public abstract class Player extends LivingEntity { @@ -35,10 +35,10 @@ index cb6f161d32fe9642e9e9b1efc47d88612041ea15..92df67d9e1d32c8a7aaeaaa46c7641af } 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 0cd6888166161671e626a2becfdbb9d755e65da8..0cfc9690efe0436ba6dec988a3f14639af2b7d42 100644 +index f34bdc25186f4cbf59227d0f1add8dfc8fd36d76..108226cc328f6411ef6fa98577b4b68f089d5595 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -419,6 +419,7 @@ public class PurpurWorldConfig { +@@ -423,6 +423,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 0cd6888166161671e626a2becfdbb9d755e65da8..0cfc9690efe0436ba6dec988a3f14639 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -444,6 +445,7 @@ public class PurpurWorldConfig { +@@ -448,6 +449,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/0226-Allow-void-trading.patch b/patches/server/0226-Allow-void-trading.patch index 3ec4b49a3..80c48ff24 100644 --- a/patches/server/0226-Allow-void-trading.patch +++ b/patches/server/0226-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 11b73081f5e225257027c15749636ed147b969af..be1d11d58aca571ed5b943bcbc00bafd } // 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 0cfc9690efe0436ba6dec988a3f14639af2b7d42..607c4f930ffc33685aa48337190a3e71cec26da9 100644 +index 108226cc328f6411ef6fa98577b4b68f089d5595..0637155329792f1f8bbc0b2216a015fb3749bd68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -420,6 +420,7 @@ public class PurpurWorldConfig { +@@ -424,6 +424,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 0cfc9690efe0436ba6dec988a3f14639af2b7d42..607c4f930ffc33685aa48337190a3e71 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -446,6 +447,7 @@ public class PurpurWorldConfig { +@@ -450,6 +451,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/0227-Configurable-phantom-size.patch b/patches/server/0227-Configurable-phantom-size.patch index 6eb6e8d80..8ee5a004a 100644 --- a/patches/server/0227-Configurable-phantom-size.patch +++ b/patches/server/0227-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 f4622490bc639ee08acbe506f739c091607947b5..be4adb06541bf7ede9b4489c0f42c1478e702f98 100644 +index 0637155329792f1f8bbc0b2216a015fb3749bd68..154f4111a298d57d2d821e700edc81c9dcb01f87 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2195,6 +2195,8 @@ public class PurpurWorldConfig { +@@ -2199,6 +2199,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index f4622490bc639ee08acbe506f739c091607947b5..be4adb06541bf7ede9b4489c0f42c147 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2231,6 +2233,13 @@ public class PurpurWorldConfig { +@@ -2235,6 +2237,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0229-Configurable-minimum-demand-for-trades.patch b/patches/server/0229-Configurable-minimum-demand-for-trades.patch index f7a4e41f2..6c0f28ddf 100644 --- a/patches/server/0229-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0229-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 be4adb06541bf7ede9b4489c0f42c1478e702f98..ff4c614df1cd6b0749591fb5c3f38276d24e89e1 100644 +index 154f4111a298d57d2d821e700edc81c9dcb01f87..7ecb674ca5f5663aaa003cb87e3c9da2362a5958 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2925,6 +2925,7 @@ public class PurpurWorldConfig { +@@ -2929,6 +2929,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index be4adb06541bf7ede9b4489c0f42c1478e702f98..ff4c614df1cd6b0749591fb5c3f38276 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2946,6 +2947,7 @@ public class PurpurWorldConfig { +@@ -2950,6 +2951,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/0230-Lobotomize-stuck-villagers.patch b/patches/server/0230-Lobotomize-stuck-villagers.patch index af5adca84..0bc727596 100644 --- a/patches/server/0230-Lobotomize-stuck-villagers.patch +++ b/patches/server/0230-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff4c614df1cd6b0749591fb5c3f38276d24e89e1..1f04607f47520983a57f07b72408354b4c4499b5 100644 +index 7ecb674ca5f5663aaa003cb87e3c9da2362a5958..52f4e35faf440f73ebd6b2c9f8a768f201e62790 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2926,6 +2926,9 @@ public class PurpurWorldConfig { +@@ -2930,6 +2930,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index ff4c614df1cd6b0749591fb5c3f38276d24e89e1..1f04607f47520983a57f07b72408354b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2948,6 +2951,18 @@ public class PurpurWorldConfig { +@@ -2952,6 +2955,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/0231-Option-for-villager-display-trade-item.patch b/patches/server/0231-Option-for-villager-display-trade-item.patch index 310936634..b85209301 100644 --- a/patches/server/0231-Option-for-villager-display-trade-item.patch +++ b/patches/server/0231-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 1f04607f47520983a57f07b72408354b4c4499b5..4688fd988af50ae3812ac901039c7f797b58501b 100644 +index 52f4e35faf440f73ebd6b2c9f8a768f201e62790..c6d9a65ebf184a984c7ca7497c4061aaed44340c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2929,6 +2929,7 @@ public class PurpurWorldConfig { +@@ -2933,6 +2933,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 1f04607f47520983a57f07b72408354b4c4499b5..4688fd988af50ae3812ac901039c7f79 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2963,6 +2964,7 @@ public class PurpurWorldConfig { +@@ -2967,6 +2968,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/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index ab267464e..196b3e37c 100644 --- a/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0232-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 d640775ea3d6e8eb2e89f0050c7fcec95100f5dd..97b819d0da56c029e9bc6b013da50c00cdca1b89 100644 +index c6d9a65ebf184a984c7ca7497c4061aaed44340c..8aca371e3762dbe8b4ed4b8b6065d0029133ff4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1053,8 +1053,10 @@ public class PurpurWorldConfig { +@@ -1057,8 +1057,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch index fa0fb5441..64ad54e9c 100644 --- a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch @@ -25,7 +25,7 @@ index 07068e5f93289534f10c0b876dbf884afd9f9b59..a9833d805aa51755a15fd98ca546c119 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 26eaf4d9b931bfe51482e1f5d2350fc591778acc..db9962ef89829bb14d84cc8495117ff4509c01cf 100644 +index 572587db064c87ac86add6d9eece5ac94374c7b9..9add2ba364e80815ec9c530b984e1619b6607bb8 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 26eaf4d9b931bfe51482e1f5d2350fc591778acc..db9962ef89829bb14d84cc8495117ff4 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97b819d0da56c029e9bc6b013da50c00cdca1b89..e6991f3ab6d1c091cc93c1e16807699a13c730d2 100644 +index 8aca371e3762dbe8b4ed4b8b6065d0029133ff4d..22b95c9df12bd4f61d278d51b39fae90274a97a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -143,6 +143,7 @@ public class PurpurWorldConfig { +@@ -145,6 +145,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index 97b819d0da56c029e9bc6b013da50c00cdca1b89..e6991f3ab6d1c091cc93c1e16807699a private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -174,6 +175,7 @@ public class PurpurWorldConfig { +@@ -178,6 +179,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/0234-Anvil-repair-damage-options.patch b/patches/server/0234-Anvil-repair-damage-options.patch index da579b71b..db399f753 100644 --- a/patches/server/0234-Anvil-repair-damage-options.patch +++ b/patches/server/0234-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e6991f3ab6d1c091cc93c1e16807699a13c730d2..be78c5a89669fa8dfa2e625477787b1119a1cfe1 100644 +index 22b95c9df12bd4f61d278d51b39fae90274a97a3..7beb9d378c694eb7a329970b1a59c0da1813e6db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -820,9 +820,13 @@ public class PurpurWorldConfig { +@@ -824,9 +824,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 1793f3f98..2366cbb1a 100644 --- a/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0235-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 be78c5a89669fa8dfa2e625477787b1119a1cfe1..77a3b714845c08e6749a5ae116833afdbe54c004 100644 +index 7beb9d378c694eb7a329970b1a59c0da1813e6db..1b195a0d9bb14447da905da122b07ee03eeca141 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1081,12 +1081,14 @@ public class PurpurWorldConfig { +@@ -1085,12 +1085,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch index ada528ea6..973393823 100644 --- a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 05c945ba584757f8b3ccba50734917183882b10f..d4f64414a0351999a04308a3d26d15c9 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b686ef07af67f1214f77483c1a474fbf56d8fef..7ea05a55674b204ac6eae3ddcce5a99c34a5c08f 100644 +index 1b195a0d9bb14447da905da122b07ee03eeca141..10dac9061aa168325048f59445f290f7acaa519a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2940,6 +2940,8 @@ public class PurpurWorldConfig { +@@ -2944,6 +2944,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 7b686ef07af67f1214f77483c1a474fbf56d8fef..7ea05a55674b204ac6eae3ddcce5a99c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2975,6 +2977,8 @@ public class PurpurWorldConfig { +@@ -2979,6 +2981,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/0239-Stonecutter-damage.patch b/patches/server/0239-Stonecutter-damage.patch index 9e40fbce9..9cddd9725 100644 --- a/patches/server/0239-Stonecutter-damage.patch +++ b/patches/server/0239-Stonecutter-damage.patch @@ -143,10 +143,10 @@ index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7fa03c9f5e1370e1698a0e8d9fb2d4824b85664d..c0c707fa547414df9b4e3abde17c574d7e209ed5 100644 +index 10dac9061aa168325048f59445f290f7acaa519a..ca996a364d554729d756253a98f041ed73b1d9a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1076,6 +1076,11 @@ public class PurpurWorldConfig { +@@ -1080,6 +1080,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch index 4fbc2f503..1beab4586 100644 --- a/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0240-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 c0c707fa547414df9b4e3abde17c574d7e209ed5..96b22d0733423e6bc5e33da8ad2d5a00ad1ebdc4 100644 +index ca996a364d554729d756253a98f041ed73b1d9a9..64adffd6e28abf1de05e6829f862cc513409e6df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1017,6 +1017,11 @@ public class PurpurWorldConfig { +@@ -1021,6 +1021,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0241-Add-config-for-snow-on-blue-ice.patch b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch index 0767383af..7267141da 100644 --- a/patches/server/0241-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0241-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 96b22d0733423e6bc5e33da8ad2d5a00ad1ebdc4..8aaeef6ace7b3abf90ca6830d39d344fd14d9101 100644 +index 64adffd6e28abf1de05e6829f862cc513409e6df..01bffc3460ccd5766fecee89584bff3f724aae11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -998,9 +998,11 @@ public class PurpurWorldConfig { +@@ -1002,9 +1002,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0242-Skeletons-eat-wither-roses.patch b/patches/server/0242-Skeletons-eat-wither-roses.patch index 7b2dd948b..8b10f2b63 100644 --- a/patches/server/0242-Skeletons-eat-wither-roses.patch +++ b/patches/server/0242-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 b2a2bd5d010af05b7d99128f99c00a24e50e9aba..64e63d2329347c0eb492588560e5463b314f0b0e 100644 +index 01bffc3460ccd5766fecee89584bff3f724aae11..a455ed17987f9cbe4287126815862e9214ed5052 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2601,6 +2601,7 @@ public class PurpurWorldConfig { +@@ -2605,6 +2605,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index b2a2bd5d010af05b7d99128f99c00a24e50e9aba..64e63d2329347c0eb492588560e5463b private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2615,6 +2616,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2620,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/0243-Enchantment-Table-Persists-Lapis.patch b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch index bab84f2bb..8faf76f2f 100644 --- a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 64e63d2329347c0eb492588560e5463b314f0b0e..8719b1aedf649083f875ff77ae96b6a5ca7ffa3a 100644 +index a455ed17987f9cbe4287126815862e9214ed5052..bfb1e8169e931ae23941eb1e8009a1f95374ac80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1575,6 +1575,11 @@ public class PurpurWorldConfig { +@@ -1579,6 +1579,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch index f544880c4..4c9a9a09b 100644 --- a/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0246-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 0f6dfdd7d19878e8c2b5a7c97b15aa8d962c3e3e..219b6eeface8a5ddfda45190e17363c47c388384 100644 +index bfb1e8169e931ae23941eb1e8009a1f95374ac80..a2a8b2c90d33b60fce3a2167d3fa85a3a786862c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1055,6 +1055,11 @@ public class PurpurWorldConfig { +@@ -1059,6 +1059,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0247-Config-to-not-let-coral-die.patch b/patches/server/0247-Config-to-not-let-coral-die.patch index bfbc3a14d..448c34316 100644 --- a/patches/server/0247-Config-to-not-let-coral-die.patch +++ b/patches/server/0247-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 219b6eeface8a5ddfda45190e17363c47c388384..369e6223225126e376c0ea964477b40043f8ee8d 100644 +index a2a8b2c90d33b60fce3a2167d3fa85a3a786862c..024c70f0fdfc4933a62b2ca8e8b36f45581b2a9f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -904,6 +904,11 @@ public class PurpurWorldConfig { +@@ -908,6 +908,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch index a97850c77..4393d647a 100644 --- a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0249-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 313f3430af520613cebbf890ff8d7f70d30dd518..496551820d0357da9c5e89dd989d31b43fbfeb18 100644 +index 586410044c969569f8b55b0b71b08faa8a2bb578..ef24ef826ab825ce0a22ff3c5ad84d9494d63aef 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -559,7 +559,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 369e6223225126e376c0ea964477b40043f8ee8d..49290cc88cc65f4868b56730341adfd63d6f72c1 100644 +index 024c70f0fdfc4933a62b2ca8e8b36f45581b2a9f..3cb5df38ba68ea452bf6ad092178a3b2c4a2e667 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -209,9 +209,11 @@ public class PurpurWorldConfig { +@@ -213,9 +213,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch index ab7588ef3..c771638b1 100644 --- a/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd 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 49290cc88cc65f4868b56730341adfd63d6f72c1..2e225e6cf8b5c2f30c792aace47f1ac5048667d1 100644 +index 3cb5df38ba68ea452bf6ad092178a3b2c4a2e667..358932371859c6406309ac792f9e1eb7d4c93f1b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -376,6 +376,7 @@ public class PurpurWorldConfig { +@@ -380,6 +380,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index 49290cc88cc65f4868b56730341adfd63d6f72c1..2e225e6cf8b5c2f30c792aace47f1ac5 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); -@@ -384,6 +385,7 @@ public class PurpurWorldConfig { +@@ -388,6 +389,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0256-Add-skeleton-bow-accuracy-option.patch b/patches/server/0256-Add-skeleton-bow-accuracy-option.patch index 7b09edd94..d2b6e54fb 100644 --- a/patches/server/0256-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0256-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 1bdca77ab0e98f579565abbf39a207b732e803d8..8c20a00498198664223bda73049b581515aabd87 100644 +index 358932371859c6406309ac792f9e1eb7d4c93f1b..b2e5678bb8ed5964387eaf3f2daa6880a9991e17 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2621,6 +2621,8 @@ public class PurpurWorldConfig { +@@ -2625,6 +2625,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 1bdca77ab0e98f579565abbf39a207b732e803d8..8c20a00498198664223bda73049b5815 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2636,6 +2638,18 @@ public class PurpurWorldConfig { +@@ -2640,6 +2642,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/0262-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch index 29849c7b4..9a2b6d858 100644 --- a/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch @@ -30,20 +30,20 @@ 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 f038f82e8f45c5cef176361de2a80960abde8c4d..fd7cedaf9a3dfa995b8fdcc3439909c61fa3b8f1 100644 +index b2e5678bb8ed5964387eaf3f2daa6880a9991e17..613fe8d58d7f1d4f5fa336cddbe2d9728b1d42cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -128,6 +128,7 @@ public class PurpurWorldConfig { - public boolean fireballsBypassMobGriefing = false; - public boolean imposeTeleportRestrictionsOnGateways = false; +@@ -130,6 +130,7 @@ public class PurpurWorldConfig { + public boolean imposeTeleportRestrictionsOnNetherPortals = false; + public boolean imposeTeleportRestrictionsOnEndPortals = false; public boolean milkCuresBadOmen = true; + public boolean milkClearsBeneficialEffects = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean persistentTileEntityLore = false; -@@ -154,6 +155,7 @@ public class PurpurWorldConfig { - fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); - imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); +@@ -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); + milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 8876554b7..328039a39 100644 --- a/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0266-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 fe8da2cf00bba10261fdfd984942a8f6acb06c0f..7d74b66fc337cf0cee765f5a45a3cf8bee8b21ed 100644 +index 613fe8d58d7f1d4f5fa336cddbe2d9728b1d42cb..70dff6a012ae9ded82ed2aef6c126efd5dd5d0af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1458,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1462,6 +1462,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index fe8da2cf00bba10261fdfd984942a8f6acb06c0f..7d74b66fc337cf0cee765f5a45a3cf8b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1477,6 +1478,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1482,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/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 4eac7a92a..e64222295 100644 --- a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9d44ca469e658005b5379eb07c483fc4983b3273..c1d6b00c2e74cd19df9dd074a021024e0c9ac442 100644 +index 11fd2c306979c9e8d85ff563b098426b94859146..4a3a05324d1c732abc344c17242368a3cbaf81f3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -938,6 +938,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -17,10 +17,10 @@ index 9d44ca469e658005b5379eb07c483fc4983b3273..c1d6b00c2e74cd19df9dd074a021024e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0116b37ebac76bb2182b71acefb2c6073bb71a77..7d97ca71924d1340bfdcc66e3645fbd1c2d54a3a 100644 +index 70dff6a012ae9ded82ed2aef6c126efd5dd5d0af..0256e9c668e6f3ed5e108c70659c7fcf03b89a10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -416,6 +416,7 @@ public class PurpurWorldConfig { +@@ -420,6 +420,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 0116b37ebac76bb2182b71acefb2c6073bb71a77..7d97ca71924d1340bfdcc66e3645fbd1 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -447,6 +448,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/0271-End-Crystal-Cramming.patch b/patches/server/0271-End-Crystal-Cramming.patch index 1dd6c87ae..302de144f 100644 --- a/patches/server/0271-End-Crystal-Cramming.patch +++ b/patches/server/0271-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 7d97ca71924d1340bfdcc66e3645fbd1c2d54a3a..34c9f76685e9114349d649e52f2ce0b0dc390206 100644 +index 0256e9c668e6f3ed5e108c70659c7fcf03b89a10..bdd6d44adb4425f892f7d91f3cd1cf790ced052e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -947,6 +947,7 @@ public class PurpurWorldConfig { +@@ -951,6 +951,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 7d97ca71924d1340bfdcc66e3645fbd1c2d54a3a..34c9f76685e9114349d649e52f2ce0b0 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -974,6 +975,7 @@ public class PurpurWorldConfig { +@@ -978,6 +979,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 99cb76b2b..e8236885f 100644 --- a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0272-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 34c9f76685e9114349d649e52f2ce0b0dc390206..16ed2b9f5379c1374e7a365f3c5dd397e4e18758 100644 +index bdd6d44adb4425f892f7d91f3cd1cf790ced052e..09a15692c4a6b6678c9d1de3d14f9842ec8e3b65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -846,11 +846,13 @@ public class PurpurWorldConfig { +@@ -850,11 +850,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch index 5a01e21c8..705333d5c 100644 --- a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index 3ee7bf7e10f8120258baaae8f77cdcbb6a781f78..754373da9a5246c11f3c33a8907d387e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16ed2b9f5379c1374e7a365f3c5dd397e4e18758..0f087bfef3b5e7ec7e0fb7d5c259221696621564 100644 +index 09a15692c4a6b6678c9d1de3d14f9842ec8e3b65..5384c4fac1cf65c2f00135e47c7cf2086a0c2067 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -223,6 +223,11 @@ public class PurpurWorldConfig { +@@ -227,6 +227,11 @@ public class PurpurWorldConfig { infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } diff --git a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch index 0e2dfe036..247c1a450 100644 --- a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0275-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 0f087bfef3b5e7ec7e0fb7d5c259221696621564..1d74b195d6b4e854869d128beb4d2cc801991b71 100644 +index 5384c4fac1cf65c2f00135e47c7cf2086a0c2067..ef176763c3aababc8b41a1f53acea44703fdebe0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -900,8 +900,20 @@ public class PurpurWorldConfig { +@@ -904,8 +904,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0280-Shears-can-defuse-TNT.patch b/patches/server/0280-Shears-can-defuse-TNT.patch index 5956fb558..7f87d8f59 100644 --- a/patches/server/0280-Shears-can-defuse-TNT.patch +++ b/patches/server/0280-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 00e4b553b9c2cfb78fe6818c7f978ba45c181479..32911c4fc3f31529b1bc97380a457198f6f43530 100644 +index ef176763c3aababc8b41a1f53acea44703fdebe0..bd2457af40d00763c1598dca687ceb71fb358653 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3431,4 +3431,11 @@ public class PurpurWorldConfig { +@@ -3435,4 +3435,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/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch index 17462fd25..08018b563 100644 --- a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0282-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 32911c4fc3f31529b1bc97380a457198f6f43530..3baf43d11f6704ba40d522644299da0a937f7052 100644 +index bd2457af40d00763c1598dca687ceb71fb358653..fad0f384205ec5cb5a66775d0972e6ea1fce74bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2171,6 +2171,7 @@ public class PurpurWorldConfig { +@@ -2175,6 +2175,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 32911c4fc3f31529b1bc97380a457198f6f43530..3baf43d11f6704ba40d522644299da0a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2185,6 +2186,7 @@ public class PurpurWorldConfig { +@@ -2189,6 +2190,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index f348386fd..ef05501c5 100644 --- a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3baf43d11f6704ba40d522644299da0a937f7052..e050f17ffbe73211adb2e7bc4f65f8cd00d7db39 100644 +index fad0f384205ec5cb5a66775d0972e6ea1fce74bb..85d6466b38f4563719296a28459b8fd3cfb20876 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2348,6 +2348,7 @@ public class PurpurWorldConfig { +@@ -2352,6 +2352,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index 3baf43d11f6704ba40d522644299da0a937f7052..e050f17ffbe73211adb2e7bc4f65f8cd private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2364,6 +2365,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2369,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/0285-place-end-crystal-on-any-block.patch b/patches/server/0285-place-end-crystal-on-any-block.patch index 55163f822..58c92dd4e 100644 --- a/patches/server/0285-place-end-crystal-on-any-block.patch +++ b/patches/server/0285-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..8fb564f43e2f1194d2ad68d35c4df6b9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9d176800b55d5ec59e3a5586a9fbaadcbc8ec32f..7fb74493d945358f114ddc051fe407fe4af5d4fc 100644 +index 85d6466b38f4563719296a28459b8fd3cfb20876..51a7017dcd025da28ad36f9c94b80c7b326baf52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -967,6 +967,7 @@ public class PurpurWorldConfig { +@@ -971,6 +971,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 9d176800b55d5ec59e3a5586a9fbaadcbc8ec32f..7fb74493d945358f114ddc051fe407fe private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -995,6 +996,7 @@ public class PurpurWorldConfig { +@@ -999,6 +1000,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch index c7867df4f..639ae5d89 100644 --- a/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0286-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 7fb74493d945358f114ddc051fe407fe4af5d4fc..66e8e5403f34e4174535341a4c8a36f1ba378a7b 100644 +index 51a7017dcd025da28ad36f9c94b80c7b326baf52..5f807e0abb572ace1b05ef315ef23b0bc7f2d6f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -145,6 +145,7 @@ public class PurpurWorldConfig { +@@ -147,6 +147,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 7fb74493d945358f114ddc051fe407fe4af5d4fc..66e8e5403f34e4174535341a4c8a36f1 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -178,6 +179,7 @@ public class PurpurWorldConfig { +@@ -182,6 +183,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/0288-Configurable-villager-search-radius.patch b/patches/server/0288-Configurable-villager-search-radius.patch index 13fccb048..5867a72b1 100644 --- a/patches/server/0288-Configurable-villager-search-radius.patch +++ b/patches/server/0288-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..222c87e80cb089867ce9a7d2dceebe21 .collect(Collectors.toSet()); Path path = AcquirePoi.findPathToPois(entity, set); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 21a0f9604485f6704bf3edfe5f117d7b0ea99364..b3e3b5738abceade320480131f6e7238ca85473b 100644 +index 5f807e0abb572ace1b05ef315ef23b0bc7f2d6f3..8321de8fa989c47f0f777cc399264898f646ff8b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3024,6 +3024,8 @@ public class PurpurWorldConfig { +@@ -3028,6 +3028,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 21a0f9604485f6704bf3edfe5f117d7b0ea99364..b3e3b5738abceade320480131f6e7238 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -3061,6 +3063,8 @@ public class PurpurWorldConfig { +@@ -3065,6 +3067,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch index edd7c14c0..316da4966 100644 --- a/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0289-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 b3e3b5738abceade320480131f6e7238ca85473b..3336bb6bf61477be575c6f1b3a8ccfec1b009d48 100644 +index 8321de8fa989c47f0f777cc399264898f646ff8b..2cb73db565bc55a0c49310cf76ee3ed7a6821c6a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2506,6 +2506,7 @@ public class PurpurWorldConfig { +@@ -2510,6 +2510,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index b3e3b5738abceade320480131f6e7238ca85473b..3336bb6bf61477be575c6f1b3a8ccfec private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2537,6 +2538,7 @@ public class PurpurWorldConfig { +@@ -2541,6 +2542,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);