From 639bcbd780998ac87bfc167cf84101678bd20082 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 3 Oct 2024 17:08:59 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f9c7f2a Begin switching to JSpecify annotations (#11448) PaperMC/Paper@e3c8a8e Add PlayerInsertLecternBookEvent [1.20 port] (#7305) PaperMC/Paper@b410fe8 Configurable per-world void damage offset/damage(#11436) PaperMC/Paper@ea00be3 Do not NPE on uuid resolution in player profile (#11449) PaperMC/Paper@ba3c29b Finish converting all events to jspecify annotations PaperMC/Paper@e7e1ab5 Finish converting most of the undeprecated api to jspecify PaperMC/Paper@69ffbec Fix hex color check PaperMC/Paper@709f0f2 Use components properly in ProfileWhitelistVerifyEvent (#11456) PaperMC/Paper@fb76840 [ci skip] Add section on nullability annotations (#11461) PaperMC/Paper@7cd4f2c Check if leash tag has a uuid --- gradle.properties | 2 +- patches/api/0001-Pufferfish-API-Changes.patch | 4 +- patches/api/0002-Fix-pufferfish-issues.patch | 6 +- patches/api/0003-Rebrand.patch | 4 +- patches/api/0005-Build-System-Changes.patch | 4 +- ...0030-Clean-up-version-command-output.patch | 10 +- .../api/0036-Add-local-difficulty-api.patch | 4 +- patches/api/0039-Debug-Marker-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 10 +- patches/server/0004-Purpur-config-files.patch | 8 +- .../0008-Component-related-conveniences.patch | 6 +- patches/server/0009-Ridables.patch | 12 +- ...option-to-set-armorstand-step-height.patch | 4 +- .../0050-Allow-leashing-villagers.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 203 +++++++++--- ...ispenser-curse-of-binding-protection.patch | 6 +- ...n-for-boats-to-eject-players-on-land.patch | 6 +- ...g-mends-most-damages-equipment-first.patch | 10 +- ...0059-Add-5-second-tps-average-in-tps.patch | 4 +- .../0060-Implement-elytra-settings.patch | 8 +- .../server/0061-Item-entity-immunities.patch | 4 +- .../0065-Configurable-jockey-options.patch | 22 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- .../0067-Add-phantom-spawning-options.patch | 6 +- ...0068-Implement-bed-explosion-options.patch | 4 +- ...ent-respawn-anchor-explosion-options.patch | 4 +- patches/server/0072-Entity-lifespan.patch | 4 +- ...leport-to-spawn-if-outside-world-bor.patch | 8 +- patches/server/0074-Squid-EAR-immunity.patch | 6 +- .../server/0075-Phantoms-burn-in-light.patch | 6 +- .../0076-Configurable-villager-breeding.patch | 6 +- .../0077-Redstone-deactivates-spawners.patch | 4 +- .../0078-Totems-work-in-inventory.patch | 8 +- ...9-Add-vindicator-johnny-spawn-chance.patch | 6 +- .../0080-Dispensers-place-anvils-option.patch | 4 +- patches/server/0081-Allow-anvil-colors.patch | 6 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 10 +- .../0086-Entities-can-use-portals.patch | 15 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 6 +- .../server/0089-Raid-cooldown-setting.patch | 14 +- ...e-config-options-per-projectile-type.patch | 4 +- ...sable-zombie-aggressiveness-towards-.patch | 8 +- patches/server/0093-Flying-squids-Oh-my.patch | 8 +- .../server/0094-Infinity-bow-settings.patch | 4 +- .../0095-Configurable-daylight-cycle.patch | 10 +- ...96-Furnace-uses-lava-from-underneath.patch | 4 +- ...re-add-farmland-mechanics-from-Alpha.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 16 +- ...e-entity-breeding-times-configurable.patch | 100 +++--- ...mes-from-item-forms-of-entities-to-e.patch | 12 +- ...llowing-Endermen-to-despawn-even-whi.patch | 6 +- ...104-Add-configurable-snowball-damage.patch | 4 +- ...05-Changeable-Mob-Left-Handed-Chance.patch | 4 +- .../0106-Add-boat-fall-damage-config.patch | 6 +- .../0107-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 6 +- ...12-Configurable-default-collar-color.patch | 10 +- .../server/0113-Phantom-flames-on-swoop.patch | 6 +- ...s-to-open-even-with-a-solid-block-on.patch | 4 +- .../0116-Striders-give-saddle-back.patch | 6 +- ...therite-armor-grants-fire-resistance.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 80 ++--- ...allow-Note-Block-sounds-when-blocked.patch | 4 +- ...0121-Add-EntityTeleportHinderedEvent.patch | 4 +- .../0122-Farmland-trampling-changes.patch | 4 +- ...23-Movement-options-for-armor-stands.patch | 6 +- .../server/0124-Fix-stuck-in-portals.patch | 12 +- ...oggle-for-water-sensitive-mob-damage.patch | 282 ++++++++--------- ...26-Config-to-always-tame-in-Creative.patch | 4 +- .../0127-End-crystal-explosion-options.patch | 4 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 10 +- .../server/0129-Dont-run-with-scissors.patch | 10 +- patches/server/0130-One-Punch-Man.patch | 8 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 8 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 6 +- patches/server/0136-Tick-fluids-config.patch | 12 +- ...137-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0140-Sneak-to-bulk-process-composter.patch | 4 +- .../0141-Config-for-skipping-night.patch | 8 +- ...0142-Add-config-for-villager-trading.patch | 10 +- patches/server/0143-Drowning-Settings.patch | 10 +- ...Break-individual-slabs-when-sneaking.patch | 6 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 4 +- ...ption-to-make-doors-require-redstone.patch | 4 +- .../0149-Configurable-sponge-absorption.patch | 4 +- .../0150-Projectile-offset-config.patch | 6 +- ...for-powered-rail-activation-distance.patch | 4 +- .../0152-Piglin-portal-spawn-modifier.patch | 8 +- ...4-Config-for-wither-explosion-radius.patch | 6 +- .../0156-Configurable-piston-push-limit.patch | 4 +- .../0158-Configurable-mob-blindness.patch | 14 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0161-Iron-golem-calm-anger-options.patch | 6 +- patches/server/0162-Breedable-parrots.patch | 6 +- ...igurable-powered-rail-boost-modifier.patch | 6 +- ...nge-multiplier-critical-damage-value.patch | 6 +- ...on-to-disable-dragon-egg-teleporting.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 6 +- .../0170-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 4 +- ...after-eating-food-fills-hunger-bar-c.patch | 6 +- ...76-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...8-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../server/0182-Tool-actionable-options.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- .../server/0187-Big-dripleaf-tilt-delay.patch | 4 +- .../0188-Player-ridable-in-water-option.patch | 6 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0190-Add-compass-command.patch | 10 +- .../0191-Toggle-for-kinetic-damage.patch | 6 +- ...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 +- ...0195-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 6 +- .../0198-Conduit-behavior-configuration.patch | 4 +- .../server/0199-Cauldron-fill-chances.patch | 4 +- ...to-allow-mobs-to-pathfind-over-rails.patch | 10 +- .../0201-Shulker-change-color-with-dye.patch | 6 +- ...ain-and-thunder-should-stop-on-sleep.patch | 8 +- ...a-blocks-to-grow-into-trees-naturall.patch | 6 +- ...t-right-click-to-use-exp-for-mending.patch | 8 +- ...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 | 4 +- .../server/0217-Signs-allow-color-codes.patch | 8 +- .../0219-Mobs-always-drop-experience.patch | 294 +++++++++--------- ...oe-to-replant-crops-and-nether-warts.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0223-Mob-head-visibility-percent.patch | 20 +- ...-Stop-bees-from-dying-after-stinging.patch | 6 +- ...Configurable-farmland-trample-height.patch | 6 +- ...Configurable-player-pickup-exp-delay.patch | 6 +- patches/server/0230-Allow-void-trading.patch | 6 +- .../0231-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0234-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 | 10 +- .../0238-Anvil-repair-damage-options.patch | 6 +- ...e-turtle-egg-trampling-with-feather-.patch | 4 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0243-Stonecutter-damage.patch | 8 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- ...0245-Add-config-for-snow-on-blue-ice.patch | 4 +- .../0246-Skeletons-eat-wither-roses.patch | 6 +- ...247-Enchantment-Table-Persists-Lapis.patch | 6 +- ...-for-sculk-shrieker-can_summon-state.patch | 4 +- .../0250-Config-to-not-let-coral-die.patch | 4 +- .../0251-Add-local-difficulty-api.patch | 4 +- ...0252-Add-toggle-for-RNG-manipulation.patch | 6 +- patches/server/0253-Remove-Timings.patch | 30 +- .../server/0254-Remove-Mojang-Profiler.patch | 64 ++-- patches/server/0257-Debug-Marker-API.patch | 4 +- ...ng-option-to-ignore-creative-players.patch | 6 +- ...259-Add-skeleton-bow-accuracy-option.patch | 6 +- ...1-Make-pufferfish-config-relocatable.patch | 10 +- .../0266-Milk-Keeps-Beneficial-Effects.patch | 6 +- ...low-creeper-to-encircle-target-when-.patch | 6 +- patches/server/0271-Fire-Immunity-API.patch | 10 +- ...leport-to-spawn-on-nether-ceiling-da.patch | 10 +- .../server/0275-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/0284-Shears-can-defuse-TNT.patch | 4 +- ...-Option-Ocelot-Spawn-Under-Sea-Level.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 8 +- .../0289-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 +- .../0294-config-for-startup-commands.patch | 11 +- 190 files changed, 1166 insertions(+), 1049 deletions(-) diff --git a/gradle.properties b/gradle.properties index 87df81e05..3c9a827b2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.1-R0.1-SNAPSHOT mcVersion = 1.21.1 -paperCommit = 6d7a438faddfbea99d6af7f99f99a480883cef8a +paperCommit = 7cd4f2c15fbd12637c2161779986f8b56aa0a59e org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index 7f00ccc11..daf09777d 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 540fe7e2c110e79c3742f229b3ed8c54b101d260..07945418e95cbe07c45bfa815d828fa311c7f033 100644 +index ab84a1405acc1f0d5f267892243b82b8dab03e21..4114aa99614ae588b1cf465ea7900308476a7568 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -52,6 +52,7 @@ dependencies { @@ -31,7 +31,7 @@ index 540fe7e2c110e79c3742f229b3ed8c54b101d260..07945418e95cbe07c45bfa815d828fa3 implementation("org.ow2.asm:asm:9.7") implementation("org.ow2.asm:asm-commons:9.7") -@@ -130,6 +131,13 @@ val generateApiVersioningFile by tasks.registering { +@@ -131,6 +132,13 @@ val generateApiVersioningFile by tasks.registering { } } diff --git a/patches/api/0002-Fix-pufferfish-issues.patch b/patches/api/0002-Fix-pufferfish-issues.patch index 85559ee90..61275c5d4 100644 --- a/patches/api/0002-Fix-pufferfish-issues.patch +++ b/patches/api/0002-Fix-pufferfish-issues.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java -index 9df9d09aa477d4cd3c496ba0933c816df1ef0964..2655f98322bcab8622e5f84db1085c3b1f5174b7 100644 +index 652ff54e7c50412503725d628bfe72ed03059790..a7c0936a1ee80618f9a504087c88814f738f4693 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfo.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java -@@ -18,6 +18,13 @@ public interface ServerBuildInfo { +@@ -19,6 +19,13 @@ public interface ServerBuildInfo { */ Key BRAND_PAPER_ID = Key.key("papermc", "paper"); @@ -23,7 +23,7 @@ index 9df9d09aa477d4cd3c496ba0933c816df1ef0964..2655f98322bcab8622e5f84db1085c3b * Gets the {@code ServerBuildInfo}. * diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java -index b82f07a2879412f6b30643ca93a97439aa49a98a..6369124775f8b51b10476a6819969fd075cb61e1 100644 +index 88d5db2995829cba919d78f988d5c735cf70cb1b..494ba7e7bfe2c73d6ea3a348f023372f23a62b1c 100644 --- a/src/test/java/org/bukkit/AnnotationTest.java +++ b/src/test/java/org/bukkit/AnnotationTest.java @@ -47,6 +47,10 @@ public class AnnotationTest { diff --git a/patches/api/0003-Rebrand.patch b/patches/api/0003-Rebrand.patch index 7427e0cae..97f4d9656 100644 --- a/patches/api/0003-Rebrand.patch +++ b/patches/api/0003-Rebrand.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Rebrand diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java -index 2655f98322bcab8622e5f84db1085c3b1f5174b7..8c2c5ea14a839c8767bbf120ae5512f65475cbb0 100644 +index a7c0936a1ee80618f9a504087c88814f738f4693..7196594e07af19a14c320d77df893978525fe386 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfo.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java -@@ -25,6 +25,13 @@ public interface ServerBuildInfo { +@@ -26,6 +26,13 @@ public interface ServerBuildInfo { Key BRAND_PUFFERFISH_ID = Key.key("pufferfish", "pufferfish"); // Purpur end diff --git a/patches/api/0005-Build-System-Changes.patch b/patches/api/0005-Build-System-Changes.patch index b4123cae3..ffa035ede 100644 --- a/patches/api/0005-Build-System-Changes.patch +++ b/patches/api/0005-Build-System-Changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 07945418e95cbe07c45bfa815d828fa311c7f033..b7d584c8b96eb7699e5df90ed04bf22ee256d571 100644 +index 4114aa99614ae588b1cf465ea7900308476a7568..f68a447f309bc9d45c275bbfee1c237f6fb0d680 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -150,6 +150,8 @@ tasks.jar { +@@ -151,6 +151,8 @@ tasks.jar { } tasks.withType { diff --git a/patches/api/0030-Clean-up-version-command-output.patch b/patches/api/0030-Clean-up-version-command-output.patch index b71081eb6..3bbcebb14 100644 --- a/patches/api/0030-Clean-up-version-command-output.patch +++ b/patches/api/0030-Clean-up-version-command-output.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Clean up version command output diff --git a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java -index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48cc50fad5b 100644 +index 023cc52a9e28e1238c7452c0f3f577f2850fd861..00b3f46ddd26ae08744d3dba211f92624d4b1063 100644 --- a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java -@@ -26,6 +26,12 @@ public interface VersionFetcher { - @NotNull - Component getVersionMessage(@NotNull String serverVersion); +@@ -28,6 +28,12 @@ public interface VersionFetcher { + */ + Component getVersionMessage(String serverVersion); + // Purpur start + default int distance() { @@ -18,9 +18,9 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c + } + // Purpur end + + @ApiStatus.Internal class DummyVersionFetcher implements VersionFetcher { - @Override diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java index e64bb57f74e6d6f78927be228825b3e0bdf41f48..c880d0010849ab733ad13bbd18fab3c864d0cf61 100644 --- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java diff --git a/patches/api/0036-Add-local-difficulty-api.patch b/patches/api/0036-Add-local-difficulty-api.patch index c55fc8364..d34fee58e 100644 --- a/patches/api/0036-Add-local-difficulty-api.patch +++ b/patches/api/0036-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index adcd8161846b06fd1a7895750f98b629204a8406..c9edc1d91046c80feb39a2f9cb7f3b69a99fe0b5 100644 +index ef32a937e6faf1e8a5d6b1207986715bae5a246c..24d39c8c449e0ea6175989295d24eee902baec17 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4161,6 +4161,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4209,6 +4209,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0039-Debug-Marker-API.patch b/patches/api/0039-Debug-Marker-API.patch index d5cc7a2a9..0725aa5cd 100644 --- a/patches/api/0039-Debug-Marker-API.patch +++ b/patches/api/0039-Debug-Marker-API.patch @@ -179,10 +179,10 @@ index 5c0dbd534aaab560a4f327f48e1359de0bf7d3c9..eb29794f6ca2efc9cde4dd1685822f9a // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index c9edc1d91046c80feb39a2f9cb7f3b69a99fe0b5..efe32ca9cbe0cd43e308ab0528f345345584c254 100644 +index 24d39c8c449e0ea6175989295d24eee902baec17..36cf567973900d1e472616748926aecb9afcb42f 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4169,6 +4169,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4217,6 +4217,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index f7fd8f209..131c60cb9 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1425,7 +1425,7 @@ index befeaac4786760f6847a5945da2296a3e68dbb17..6c28390e33c07d4c65493019375b669c final io.papermc.paper.configuration.type.number.IntOr.Disabled pageMax = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; if (!this.cserver.isPrimaryThread() && pageMax.enabled()) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd546fd4bbc8 100644 +index 4b54d0ea31062972e68ee8fafe3cfaf68f65a5cd..8492421ed2186c0eab517a67f3140b9988f65250 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -429,6 +429,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -1451,7 +1451,7 @@ index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd54 this.baseTick(); } -@@ -4450,16 +4459,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4452,16 +4461,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -1477,7 +1477,7 @@ index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd54 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4467,14 +4478,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4469,14 +4480,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -1545,7 +1545,7 @@ index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..e12cbbe9eea3f243808fad547c91bd54 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4496,9 +4554,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4498,9 +4556,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end } } @@ -1572,7 +1572,7 @@ index cb61462d4691a055a4b25f7b953609d8a154fdfe..f9440014ab2fe753c16b9383f5fffbb8 private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 30f4f1254fc295442d72d50479e8af635f2fe983..731f5111127f048f8afed8ed970cd6cfc492fb89 100644 +index 2aa6374cd4a96efd85899be8cd3172a8257bfe6b..5132e108df37ca97ba94b8b72c0ef292cbb2ec94 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 8ecfda434..a10ef828d 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -92,7 +92,7 @@ index 18bf9c42e76c8c35f57d74ea4adfa5b3bb53762f..ca9afa93a9c43208ef64f86d534e5540 gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d3cc65612c44f42ecae2e09b942438a03bc244bd..116cfd126df3ed5c6643e70912c0d6a63f4a6eb2 100644 +index 2479b47186202de40cdb4ae773c696a4adee9bad..97f83c9737726be0c3b6dc847b56970e81cc6b6f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -173,6 +173,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -179,7 +179,7 @@ index c1e88c31910e96ef07cece05046c0b55e708b52d..22bdc8fe2796940eb971437e1c97d638 .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..f06fed3ae5631d46a953617cfdd766a02e628515 +index 0000000000000000000000000000000000000000..7a571d04eb7622004720dd7c7ec946d88e01ddc7 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,177 @@ @@ -262,8 +262,8 @@ index 0000000000000000000000000000000000000000..f06fed3ae5631d46a953617cfdd766a0 + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 35); -+ set("config-version", 35); ++ version = getInt("config-version", 36); ++ set("config-version", 36); + + readConfig(PurpurConfig.class, null); + diff --git a/patches/server/0008-Component-related-conveniences.patch b/patches/server/0008-Component-related-conveniences.patch index 6ec6e2378..6b9587f4c 100644 --- a/patches/server/0008-Component-related-conveniences.patch +++ b/patches/server/0008-Component-related-conveniences.patch @@ -36,7 +36,7 @@ index 2e45bc48c8a86d9522e4574bf3037611cfda63a3..98fd4d8aab273ab86bcb9b95a331cd8b public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index c13922d2fb1c15f895b14d4cb6d5379b59ea1ef8..fbfcd1bd4f6bbaef2d5eb4b5f4c286b343ffb294 100644 +index 5e2c4969e77c669acbb4a13c07033cb267c3d586..0a7f30f86adfbcbfc4d65f6194d26c51dba8bff1 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1026,6 +1026,20 @@ public abstract class PlayerList { @@ -81,10 +81,10 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7abe795de5c9965e4f9481aacc7189f759b0f86b..899a89d64ae9c7320c4ff86281670e432b4a88e4 100644 +index b0db87fc0e1a05a6268b3f93403ec4209f10f685..bc484b2ad1fbbece041adb3282d80fac2dc826bd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4187,6 +4187,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4189,6 +4189,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } diff --git a/patches/server/0009-Ridables.patch b/patches/server/0009-Ridables.patch index ec674c5bd..99e4bffef 100644 --- a/patches/server/0009-Ridables.patch +++ b/patches/server/0009-Ridables.patch @@ -79,7 +79,7 @@ index 6c28390e33c07d4c65493019375b669ccfa5ae2d..d5267431f0ac8fdf2d474951dde50f29 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa212efd414 100644 +index bc484b2ad1fbbece041adb3282d80fac2dc826bd..ed2452720f098e12cfce7475e7bfeeadcd3ec611 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -91,7 +91,7 @@ index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa2 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3133,6 +3133,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3135,6 +3135,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa2 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3172,6 +3179,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3174,6 +3181,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index 899a89d64ae9c7320c4ff86281670e432b4a88e4..7afc85b1a42ae6c755265a605883aaa2 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -5065,4 +5080,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5067,4 +5082,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 731f5111127f048f8afed8ed970cd6cfc492fb89..ae97b6a5aa43889e48a422c9b1692308b7535b21 100644 +index 5132e108df37ca97ba94b8b72c0ef292cbb2ec94..42218910d3003310d71a8bdb491293ff98284039 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -5150,7 +5150,7 @@ index 4632eb883e9f5efde520ee543bcad25827c0da2c..df37da354b5ffffc484a8660949c8969 event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f06fed3ae5631d46a953617cfdd766a02e628515..08f38c2a87feb138b202f0934abb3724ef79c4c1 100644 +index 7a571d04eb7622004720dd7c7ec946d88e01ddc7..30269a03ae894c4291416182eaaea413ad8507ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -174,4 +174,9 @@ public class PurpurConfig { diff --git a/patches/server/0033-Add-option-to-set-armorstand-step-height.patch b/patches/server/0033-Add-option-to-set-armorstand-step-height.patch index 7c7e806f0..a5c9453a2 100644 --- a/patches/server/0033-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0033-Add-option-to-set-armorstand-step-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 736e33331c591567d1fbb4b046ee6ea0a40bff88..32007168992c47c1029f91ee9c5319490b3f9e3a 100644 +index 624df1834b25ae8a02596fa582fb9030b99107d2..2fc9f26af5aaa41762c48010f08fc3d17d24bdfe 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -343,6 +343,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index 736e33331c591567d1fbb4b046ee6ea0a40bff88..32007168992c47c1029f91ee9c531949 public boolean noPhysics; public final RandomSource random; public int tickCount; -@@ -4888,7 +4889,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4890,7 +4891,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { diff --git a/patches/server/0050-Allow-leashing-villagers.patch b/patches/server/0050-Allow-leashing-villagers.patch index 89937c6b6..97102be54 100644 --- a/patches/server/0050-Allow-leashing-villagers.patch +++ b/patches/server/0050-Allow-leashing-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3708fe0bb7af7b542ffd103f803223893e6dea72..79b158062b37fe19956a025ae6d74563092e3b8e 100644 +index 2fc9f26af5aaa41762c48010f08fc3d17d24bdfe..2bbb185b2f2c4ea93f49a14baedfce83db3134f3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2931,6 +2931,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2933,6 +2933,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index 5448af4c7..1c703002c 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-Configurable-void-damage-height-and-damage.patch @@ -3,49 +3,170 @@ From: William Blake Galbreath Date: Thu, 27 Feb 2020 21:42:19 -0600 Subject: [PATCH] Configurable void damage height and damage +temporarily migrate to paper's config +drop patch on the next minecraft release -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 79b158062b37fe19956a025ae6d74563092e3b8e..4ba8de9d87fc1b94019e8529a279cbc8a91a2b7f 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -942,7 +942,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +index 1029b6de6f36b08bf634b4056ef5701383f6f258..ee0d1df78838e05450ad1a06ce70eab2d5e5d3b8 100644 +--- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java ++++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +@@ -260,6 +260,7 @@ public class PaperConfigurations extends Configurations this.getY() >= v) - && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { - // Paper end - Configurable nether ceiling damage -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b4c50e28cad3a063c2168cd9a813dfc6349d86e3..f721bd0286d8ea903b1d41983451fa406e870bd3 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2657,7 +2657,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - - @Override - protected void onBelowWorld() { -- this.hurt(this.damageSources().fellOutOfWorld(), 4.0F); -+ this.hurt(this.damageSources().fellOutOfWorld(), (float) level().purpurConfig.voidDamageDealt); // Purpur + final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder(); +diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4be5a7561e 100644 +--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java ++++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +@@ -401,6 +401,7 @@ public class WorldConfiguration extends ConfigurationPart { + public boolean useVanillaWorldScoreboardNameColoring = false; } - protected void updateSwingTime() { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8..022cebe27d305073a05475cb045e863135de5446 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -99,10 +99,14 @@ public class PurpurWorldConfig { - public boolean disableDropsOnCrammingDeath = false; - public boolean milkCuresBadOmen = true; - public double tridentLoyaltyVoidReturnHeight = 0.0D; -+ public double voidDamageHeight = -64.0D; -+ public double voidDamageDealt = 4.0D; - private void miscGameplayMechanicsSettings() { - disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); - milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); - tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); -+ voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); -+ voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); - } ++ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.ENVIRONMENT_KEY) // Purpur + public Environment environment; - public double minecartMaxSpeed = 0.4D; + public class Environment extends ConfigurationPart { +@@ -410,7 +411,9 @@ public class WorldConfiguration extends ConfigurationPart { + public boolean disableExplosionKnockback = false; + public boolean generateFlatBedrock = false; + public FrostedIce frostedIce; ++ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.VOID_DAMAGE_KEY) // Purpur + public DoubleOr.Disabled voidDamageAmount = new DoubleOr.Disabled(OptionalDouble.of(4)); ++ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.VOID_DAMAGE_MIN_HEIGHT_OFFSET_KEY) // Purpur + public double voidDamageMinBuildHeightOffset = -64.0; + + public class FrostedIce extends ConfigurationPart { +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index f200a105bd3f5013d0590f1a10d4edc08ad745d1..debc521eaa05c6befc6fe67f44780372b078039d 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -1249,7 +1249,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -269,7 +269,7 @@ index a4eef27653adda8486130c5affea09396a8901a7..97c6c063729b8bbff87761b90d4314dd private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1175,6 +1178,9 @@ public class PurpurWorldConfig { +@@ -1171,6 +1174,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0067-Add-phantom-spawning-options.patch b/patches/server/0067-Add-phantom-spawning-options.patch index 8246695d2..404bfa3b9 100644 --- a/patches/server/0067-Add-phantom-spawning-options.patch +++ b/patches/server/0067-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f for (int l = 0; l < k; ++l) { // Paper start - PhantomPreSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97c6c063729b8bbff87761b90d4314dd0612e3a1..1369a14df3736cce6b6806fba7de7ffdefac1ab2 100644 +index 25db0b39456aed561f1fe12b08db8ff3e9244879..0117359271289b9ebe28b028ba0def78a7c024d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1157,6 +1157,12 @@ public class PurpurWorldConfig { +@@ -1153,6 +1153,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index 97c6c063729b8bbff87761b90d4314dd0612e3a1..1369a14df3736cce6b6806fba7de7ffd private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1181,6 +1187,12 @@ public class PurpurWorldConfig { +@@ -1177,6 +1183,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0068-Implement-bed-explosion-options.patch b/patches/server/0068-Implement-bed-explosion-options.patch index 1cb3a99f9..091cbdcfd 100644 --- a/patches/server/0068-Implement-bed-explosion-options.patch +++ b/patches/server/0068-Implement-bed-explosion-options.patch @@ -27,10 +27,10 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1369a14df3736cce6b6806fba7de7ffdefac1ab2..799e599f79b2ed4852a4adbec47fde9c7b67e569 100644 +index 0117359271289b9ebe28b028ba0def78a7c024d2..cea3e28f38e5ab585351893f62142db6dc9f4949 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -283,6 +283,27 @@ public class PurpurWorldConfig { +@@ -279,6 +279,27 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0069-Implement-respawn-anchor-explosion-options.patch b/patches/server/0069-Implement-respawn-anchor-explosion-options.patch index 849039d7d..19b1f93cb 100644 --- a/patches/server/0069-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0069-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 799e599f79b2ed4852a4adbec47fde9c7b67e569..e1c2080ffd8be35c224e0e41a69b6a98c4b932dc 100644 +index cea3e28f38e5ab585351893f62142db6dc9f4949..7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -323,6 +323,27 @@ public class PurpurWorldConfig { +@@ -319,6 +319,27 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index 03fd34554..4141c84c5 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-Entity-lifespan.patch @@ -94,10 +94,10 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1c2080ffd8be35c224e0e41a69b6a98c4b932dc..65b5ddde3496d1b04bedd410675a548f662aa073 100644 +index 7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc..063b8ba15e6ed01a5d77572df363b5fc89edfea6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -124,6 +124,11 @@ public class PurpurWorldConfig { +@@ -120,6 +120,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 9c45085d3..f29cbd7ef 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,7 +36,7 @@ index 14df0de1e1abe154991c77319a73dbb3a709af80..aca60e21e7a191212d07a03a105fc4fb + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9ee0ff0a32634cda0fff6bc16df32e47f0edec1c..7dd20ec15b038df76d3f9e34e0f2c90c4659c9e8 100644 +index d8db30c9051aebf2cb6567a273bcfdfbe06d4936..cacda8947f0d88f6022e2c468e94da25ac0a1d7e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -461,6 +461,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -48,10 +48,10 @@ index 9ee0ff0a32634cda0fff6bc16df32e47f0edec1c..7dd20ec15b038df76d3f9e34e0f2c90c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65b5ddde3496d1b04bedd410675a548f662aa073..7e416c24a336b53a71b53c020171a32adca6c95c 100644 +index 063b8ba15e6ed01a5d77572df363b5fc89edfea6..bb88e3e6b467f9c66df48389f0f99218972b5856 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -241,6 +241,7 @@ public class PurpurWorldConfig { +@@ -237,6 +237,7 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -59,7 +59,7 @@ index 65b5ddde3496d1b04bedd410675a548f662aa073..7e416c24a336b53a71b53c020171a32a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -254,6 +255,7 @@ public class PurpurWorldConfig { +@@ -250,6 +251,7 @@ public class PurpurWorldConfig { idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); diff --git a/patches/server/0074-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch index 697697ddb..4c61612ed 100644 --- a/patches/server/0074-Squid-EAR-immunity.patch +++ b/patches/server/0074-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e416c24a336b53a71b53c020171a32adca6c95c..4ed5b8babbbace9b26659b54c7de395aaa9ab8ac 100644 +index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552fae53e3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1577,6 +1577,7 @@ public class PurpurWorldConfig { +@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; @@ -16,7 +16,7 @@ index 7e416c24a336b53a71b53c020171a32adca6c95c..4ed5b8babbbace9b26659b54c7de395a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1587,6 +1588,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1584,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); diff --git a/patches/server/0075-Phantoms-burn-in-light.patch b/patches/server/0075-Phantoms-burn-in-light.patch index 3412cc1ea..d55662b89 100644 --- a/patches/server/0075-Phantoms-burn-in-light.patch +++ b/patches/server/0075-Phantoms-burn-in-light.patch @@ -51,10 +51,10 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ed5b8babbbace9b26659b54c7de395aaa9ab8ac..bc04f87a0603b3b27cd542156a0173c09e28d5ab 100644 +index 2eb90a4bc6db46de1a288c454bd5b552fae53e3a..619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1212,6 +1212,9 @@ public class PurpurWorldConfig { +@@ -1208,6 +1208,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -64,7 +64,7 @@ index 4ed5b8babbbace9b26659b54c7de395aaa9ab8ac..bc04f87a0603b3b27cd542156a0173c0 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1242,6 +1245,9 @@ public class PurpurWorldConfig { +@@ -1238,6 +1241,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0076-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch index 29d4f3d0a..bfc002ca6 100644 --- a/patches/server/0076-Configurable-villager-breeding.patch +++ b/patches/server/0076-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index f083de2448e0e6dfa277c58a082b305cdc1e11e7..37aefffb16c43221e39ef0b41a16968a private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc04f87a0603b3b27cd542156a0173c09e28d5ab..4172de8958c5216eeca7535de3be97515d32337e 100644 +index 619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da..6657fdacd399d0c097f81abe8de282f5a7c35445 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1749,6 +1749,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1745,7 @@ public class PurpurWorldConfig { public double villagerScale = 1.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index bc04f87a0603b3b27cd542156a0173c09e28d5ab..4172de8958c5216eeca7535de3be9751 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1762,6 +1763,7 @@ public class PurpurWorldConfig { +@@ -1758,6 +1759,7 @@ public class PurpurWorldConfig { villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0077-Redstone-deactivates-spawners.patch b/patches/server/0077-Redstone-deactivates-spawners.patch index 825da468f..be7bc39a5 100644 --- a/patches/server/0077-Redstone-deactivates-spawners.patch +++ b/patches/server/0077-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4172de8958c5216eeca7535de3be97515d32337e..41e07eec0ba1cc2e31b967fdc616e59f7cd76b28 100644 +index 6657fdacd399d0c097f81abe8de282f5a7c35445..c613cc628f5f40d85000709b228c09bfa057028a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -351,6 +351,11 @@ public class PurpurWorldConfig { +@@ -347,6 +347,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0078-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch index 93c98e393..3a37df8fd 100644 --- a/patches/server/0078-Totems-work-in-inventory.patch +++ b/patches/server/0078-Totems-work-in-inventory.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 56d07a0aef9cd1732b5cf10765137730129e5c03..6c3e1ec1058854a5dd4115e26f529624f5e4eef3 100644 +index cacda8947f0d88f6022e2c468e94da25ac0a1d7e..cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1679,6 +1679,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,10 +28,10 @@ index 56d07a0aef9cd1732b5cf10765137730129e5c03..6c3e1ec1058854a5dd4115e26f529624 EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41e07eec0ba1cc2e31b967fdc616e59f7cd76b28..d320a16646d0e15278c7d459f49627293b96a0f9 100644 +index c613cc628f5f40d85000709b228c09bfa057028a..a3e40d92a32e214a69b605740bcbe639211bedb6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -242,6 +242,7 @@ public class PurpurWorldConfig { +@@ -238,6 +238,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -39,7 +39,7 @@ index 41e07eec0ba1cc2e31b967fdc616e59f7cd76b28..d320a16646d0e15278c7d459f4962729 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -256,6 +257,7 @@ public class PurpurWorldConfig { +@@ -252,6 +253,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch index d365960c2..8f8366485 100644 --- a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch @@ -21,10 +21,10 @@ index e5c6baf199235812f7b4fcec20145d7146737224..f8c2911496aa18e8e2b589309e9cdd78 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d320a16646d0e15278c7d459f49627293b96a0f9..cf75f01c719ad6d3bfef73314c31c51c200fc4aa 100644 +index a3e40d92a32e214a69b605740bcbe639211bedb6..cf8165b5a5a1b82c966ae891d95e0093bf76526f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1778,6 +1778,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1774,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; @@ -32,7 +32,7 @@ index d320a16646d0e15278c7d459f49627293b96a0f9..cf75f01c719ad6d3bfef73314c31c51c private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1789,6 +1790,7 @@ public class PurpurWorldConfig { +@@ -1785,6 +1786,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); diff --git a/patches/server/0080-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch index 997ef980a..9c180a248 100644 --- a/patches/server/0080-Dispensers-place-anvils-option.patch +++ b/patches/server/0080-Dispensers-place-anvils-option.patch @@ -32,10 +32,10 @@ index 60d3319016beb4f60cbc26dde165f64cf7577602..bd07743817f2510c179614a6215434e7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cf75f01c719ad6d3bfef73314c31c51c200fc4aa..b11f86ad33df553b598e859e110ab6d6abf1f744 100644 +index cf8165b5a5a1b82c966ae891d95e0093bf76526f..f291018ef35645d14811bbc1e47c56ac34fb73c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -314,8 +314,10 @@ public class PurpurWorldConfig { +@@ -310,8 +310,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0081-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch index e5d50b4b5..4af7877f3 100644 --- a/patches/server/0081-Allow-anvil-colors.patch +++ b/patches/server/0081-Allow-anvil-colors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow anvil colors diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 99bfa7cdc58c690d6f0c742dafedd40cace3223f..2d300905c05c7c23a4da30b3651b331381a1dc0d 100644 +index b1810b5dfc89dd2921607b0040afd69b05d36b9e..3cdadb7028de83d3c2a939ba883061171137a620 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -282,6 +282,54 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -64,10 +64,10 @@ index 99bfa7cdc58c690d6f0c742dafedd40cace3223f..2d300905c05c7c23a4da30b3651b3313 } } else if (itemstack.has(DataComponents.CUSTOM_NAME)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b11f86ad33df553b598e859e110ab6d6abf1f744..91536c5280330a9a2beccf1bee59ad071736b57e 100644 +index f291018ef35645d14811bbc1e47c56ac34fb73c6..1c1cf0e4c7fa41c2b5239ca47048670e058fd685 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -292,6 +292,13 @@ public class PurpurWorldConfig { +@@ -288,6 +288,13 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch index e51f6d32c..499108698 100644 --- a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 98885a788af662736435fa8465c9b6ffeb16811b..6278d1020aeac52622ecf98c34453044 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91536c5280330a9a2beccf1bee59ad071736b57e..271bb47c47312c1d09d4cd4024f19935a3ec469b 100644 +index 1c1cf0e4c7fa41c2b5239ca47048670e058fd685..0411116e9b6735dcddf5f4d197f83ce61bd2aab6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -660,6 +660,7 @@ public class PurpurWorldConfig { +@@ -656,6 +656,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; @@ -28,7 +28,7 @@ index 91536c5280330a9a2beccf1bee59ad071736b57e..271bb47c47312c1d09d4cd4024f19935 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -673,6 +674,7 @@ public class PurpurWorldConfig { +@@ -669,6 +670,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index ca3af363f..a16fe0c1c 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6182fcddb7fdb10d03e1db4943ff80e288c25e31..9dfbe5a9139909f07f5081783ebdb22b0060801f 100644 +index e6c1ae7b70bed34fa9b1acdeaf0d969a1f5b6f08..8911eb7f6f307c7846eeb10f68e5cd231bd22e1b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4494,6 +4494,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4496,6 +4496,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(delta, this.yRotO, this.yRot); } @@ -54,10 +54,10 @@ index 29123f3a2f211c08d1a9ccf62ca9bc9822f90111..db78616676ba021ee0f03cfea932f291 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 271bb47c47312c1d09d4cd4024f19935a3ec469b..b3a9e307d1bed0c53a42119fa74c3a0f1be12d36 100644 +index 0411116e9b6735dcddf5f4d197f83ce61bd2aab6..45238996bb7ee057ab981178baf56194411d5b77 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1602,6 +1602,7 @@ public class PurpurWorldConfig { +@@ -1598,6 +1598,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 271bb47c47312c1d09d4cd4024f19935a3ec469b..b3a9e307d1bed0c53a42119fa74c3a0f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1613,6 +1614,7 @@ public class PurpurWorldConfig { +@@ -1609,6 +1610,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0086-Entities-can-use-portals.patch b/patches/server/0086-Entities-can-use-portals.patch index e1fceb5c7..277528f86 100644 --- a/patches/server/0086-Entities-can-use-portals.patch +++ b/patches/server/0086-Entities-can-use-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9dfbe5a9139909f07f5081783ebdb22b0060801f..18fafad5458472bfcee3b819d212ae481deec293 100644 +index 8911eb7f6f307c7846eeb10f68e5cd231bd22e1b..acf10656ea445554ee537dcb2f23164ee77e4d60 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3275,7 +3275,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3277,7 +3277,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void setAsInsidePortal(Portal portal, BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 9dfbe5a9139909f07f5081783ebdb22b0060801f..18fafad5458472bfcee3b819d212ae48 if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) { this.portalProcess.updateEntryPosition(pos.immutable()); this.portalProcess.setAsInsidePortalThisTick(true); -@@ -3900,7 +3900,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3902,7 +3902,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public boolean canUsePortal(boolean allowVehicles) { @@ -27,22 +27,21 @@ index 9dfbe5a9139909f07f5081783ebdb22b0060801f..18fafad5458472bfcee3b819d212ae48 public boolean canChangeDimensions(Level from, Level to) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b3a9e307d1bed0c53a42119fa74c3a0f1be12d36..9f00ee2e9882226973c6846211574809c18b52bc 100644 +index 45238996bb7ee057ab981178baf56194411d5b77..96dc75c3ab53dbd2df040c84ddf878881d26a051 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -99,6 +99,7 @@ public class PurpurWorldConfig { +@@ -99,12 +99,14 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; -@@ -107,6 +108,7 @@ public class PurpurWorldConfig { + private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); + } diff --git a/patches/server/0087-Customizable-wither-health-and-healing.patch b/patches/server/0087-Customizable-wither-health-and-healing.patch index 8bebdf5cc..c76294668 100644 --- a/patches/server/0087-Customizable-wither-health-and-healing.patch +++ b/patches/server/0087-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 8a4f48956cb0804c0d717783556b97603a1e59b2..0d753a16c77251b421735f9e38202af0 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f00ee2e9882226973c6846211574809c18b52bc..0fbb32272453df331df54e8eda37da0b9b7af954 100644 +index 96dc75c3ab53dbd2df040c84ddf878881d26a051..07bb161fce3e66eaac6ca347a0ad508aa80ecbf4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1863,6 +1863,8 @@ public class PurpurWorldConfig { +@@ -1859,6 +1859,8 @@ public class PurpurWorldConfig { public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; public double witherScale = 1.0D; @@ -35,7 +35,7 @@ index 9f00ee2e9882226973c6846211574809c18b52bc..0fbb32272453df331df54e8eda37da0b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1879,6 +1881,8 @@ public class PurpurWorldConfig { +@@ -1875,6 +1877,8 @@ public class PurpurWorldConfig { } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); diff --git a/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch index 7ea339b12..7eaf976f4 100644 --- a/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ef645bf72db80a0d085c8bca29bf67cab189ffde..98e369bcd556306ec380600b4c7385e240cef06c 100644 +index 8b2ab0a91a5243357400c91c01c9f27a79825047..9eeb5a5304a25f8709288bc78ec8458b70e18649 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -520,7 +520,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0fbb32272453df331df54e8eda37da0b9b7af954..03aa9b6bc1095475c21a93544c14e5f5bfa1e141 100644 +index 07bb161fce3e66eaac6ca347a0ad508aa80ecbf4..84713d2c265d2ce097a59f64eb693742933ad8ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -70,6 +70,12 @@ public class PurpurWorldConfig { @@ -75,7 +75,7 @@ index 0fbb32272453df331df54e8eda37da0b9b7af954..03aa9b6bc1095475c21a93544c14e5f5 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -236,6 +242,21 @@ public class PurpurWorldConfig { +@@ -232,6 +238,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0089-Raid-cooldown-setting.patch b/patches/server/0089-Raid-cooldown-setting.patch index 84f4093ae..1fd6933d5 100644 --- a/patches/server/0089-Raid-cooldown-setting.patch +++ b/patches/server/0089-Raid-cooldown-setting.patch @@ -49,21 +49,21 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948 if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03aa9b6bc1095475c21a93544c14e5f5bfa1e141..0549d17b69e869d9014040528e9163d56a316972 100644 +index 84713d2c265d2ce097a59f64eb693742933ad8ca..54e7250a70ef538ff25df1737a064690a204fa91 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -110,6 +110,7 @@ public class PurpurWorldConfig { +@@ -108,6 +108,7 @@ public class PurpurWorldConfig { + public boolean entitiesCanUsePortals = true; + public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; + public int raidCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -119,6 +120,7 @@ public class PurpurWorldConfig { +@@ -115,6 +116,7 @@ public class PurpurWorldConfig { + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } diff --git a/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch index a5f344de4..855b6c1ab 100644 --- a/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch @@ -7,10 +7,10 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0549d17b69e869d9014040528e9163d56a316972..f10a009ad72789015861fbc35d490f6c72dd036c 100644 +index 54e7250a70ef538ff25df1737a064690a204fa91..0d2a9c030404e57a0ec5d921080304fd54838bbd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -317,6 +317,40 @@ public class PurpurWorldConfig { +@@ -313,6 +313,40 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch index c2dfbac95..c9073fde4 100644 --- a/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -45,7 +45,7 @@ index b5a46c844e0f366828f8c287a598abb9aaeacf21..4f9daaeb1bd4d115a84b0c20649e4dd4 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index ada1f9f9bf8770c48ff25d562cf84cb04be17ca2..21e0028ad33f8de0211dd733d98a00af8461684b 100644 +index bd24217d0c696a506c916e062b3cb5bc751981f8..c0adb41e2772ac1204bbdf8e6eee27fbfc82ef12 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -159,7 +159,19 @@ public class Zombie extends Monster { @@ -70,10 +70,10 @@ index ada1f9f9bf8770c48ff25d562cf84cb04be17ca2..21e0028ad33f8de0211dd733d98a00af this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f10a009ad72789015861fbc35d490f6c72dd036c..b7af904f30fdbb9a3f680d1d8244edf1e0061e25 100644 +index 0d2a9c030404e57a0ec5d921080304fd54838bbd..51485b123545d11f7327aea9b6d76cb1fe1f3b97 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2005,6 +2005,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2001,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index f10a009ad72789015861fbc35d490f6c72dd036c..b7af904f30fdbb9a3f680d1d8244edf1 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2020,6 +2021,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2017,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0093-Flying-squids-Oh-my.patch b/patches/server/0093-Flying-squids-Oh-my.patch index a3a45c8bc..984b90c6b 100644 --- a/patches/server/0093-Flying-squids-Oh-my.patch +++ b/patches/server/0093-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2 float g = Mth.cos(f) * 0.2F; float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0a679aa93 100644 +index 51485b123545d11f7327aea9b6d76cb1fe1f3b97..0c852bdc84dbb3fc9855dc69269daac2e2dfe305 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -971,11 +971,13 @@ public class PurpurWorldConfig { +@@ -967,11 +967,13 @@ public class PurpurWorldConfig { public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; @@ -75,7 +75,7 @@ index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0 } public boolean goatRidable = false; -@@ -1662,6 +1664,7 @@ public class PurpurWorldConfig { +@@ -1658,6 +1660,7 @@ public class PurpurWorldConfig { public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -83,7 +83,7 @@ index b7af904f30fdbb9a3f680d1d8244edf1e0061e25..8ee07ea25cbc5d59b972116c09ec57f0 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1674,6 +1677,7 @@ public class PurpurWorldConfig { +@@ -1670,6 +1673,7 @@ public class PurpurWorldConfig { squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0094-Infinity-bow-settings.patch b/patches/server/0094-Infinity-bow-settings.patch index 766e11325..a23d81e10 100644 --- a/patches/server/0094-Infinity-bow-settings.patch +++ b/patches/server/0094-Infinity-bow-settings.patch @@ -30,10 +30,10 @@ index 6eb5c0f23d9dc61e69ad5ad493c89602a9dcd4b5..4db2032178471860baddc6b669c9a4f8 } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ee07ea25cbc5d59b972116c09ec57f0a679aa93..22522af6a0b0894c798399456303d951ca884fe6 100644 +index 0c852bdc84dbb3fc9855dc69269daac2e2dfe305..c28c1a42600345468edd87ff2bf6223d8b0398bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -139,6 +139,11 @@ public class PurpurWorldConfig { +@@ -135,6 +135,11 @@ public class PurpurWorldConfig { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } diff --git a/patches/server/0095-Configurable-daylight-cycle.patch b/patches/server/0095-Configurable-daylight-cycle.patch index 669937c82..9b7085f65 100644 --- a/patches/server/0095-Configurable-daylight-cycle.patch +++ b/patches/server/0095-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd88 public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b783a77032b108aa7cb50b0ce15abee4f3d06740..dd02ae5af707c8335a296e66b0f55e960c8e86bc 100644 +index b2ce50799ff158ff2160b0d75404e52e34d54805..f514c421b5ff7e46b2d211f895dcb0d7a375704f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1776,7 +1776,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34aafc5bac4e7876fdf50289748df5070126139e..b398af642abe85747cc416f49cc229c1f491c1a3 100644 +index 939da41bf38a912c1f25f56096d8c10d1b9bfb08..5cf762eeb981c4b2832bacefd79027148693e58f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -403,6 +403,17 @@ public class PurpurWorldConfig { +@@ -399,6 +399,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index a096f45e4..de06a18b3 100644 --- a/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61585b3e964f5f80d6c3dba8ee5dfae7e59e53f3..af9c365025df231f53ffe1c28013c4b36c325ea2 100644 +index 4f105633f458cab3ed2877594a5b56f888f546ae..9289c97d303588c55db43b0e239904ffa91131fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -404,8 +404,10 @@ public class PurpurWorldConfig { +@@ -400,8 +400,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch index a5a1801b8..0f05eed08 100644 --- a/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch @@ -42,7 +42,7 @@ index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2e EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 99c58ab01b0a61def3c9b9e39e0fbcf90e600a6c..442c77fb3ac421ae6a90b5b96e1d00d4d65eeade 100644 +index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -182,6 +182,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -104,20 +104,20 @@ index 99c58ab01b0a61def3c9b9e39e0fbcf90e600a6c..442c77fb3ac421ae6a90b5b96e1d00d4 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af9c365025df231f53ffe1c28013c4b36c325ea2..d2ecc35e4c20549c71b32ae444b3c4e98ed3561a 100644 +index 9289c97d303588c55db43b0e239904ffa91131fb..560342aff844201ee678eae45e77079fc1fd2a23 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -116,6 +116,7 @@ public class PurpurWorldConfig { - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; +@@ -114,6 +114,7 @@ public class PurpurWorldConfig { + public boolean milkCuresBadOmen = true; + public double tridentLoyaltyVoidReturnHeight = 0.0D; public int raidCooldownSeconds = 0; + public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -126,6 +127,7 @@ public class PurpurWorldConfig { - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -122,6 +123,7 @@ public class PurpurWorldConfig { + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); } diff --git a/patches/server/0100-Make-entity-breeding-times-configurable.patch b/patches/server/0100-Make-entity-breeding-times-configurable.patch index 358bd9993..a3aef6c47 100644 --- a/patches/server/0100-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0100-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index cd6428d0d61f68eafa8829fc21084586447cd61e..eb4a2e57ee9bddacef184e81167f8ee3 public boolean canBeLeashed() { return true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339b457ffdc 100644 +index 560342aff844201ee678eae45e77079fc1fd2a23..b0397d5586f4356e9b8bd11973a5c6839734098a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -501,23 +501,27 @@ public class PurpurWorldConfig { +@@ -497,23 +497,27 @@ public class PurpurWorldConfig { public boolean armadilloControllable = true; public double armadilloMaxHealth = 12.0D; public double armadilloScale = 1.0D; @@ -569,7 +569,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean batRidable = false; -@@ -560,6 +564,7 @@ public class PurpurWorldConfig { +@@ -556,6 +560,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; @@ -577,7 +577,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -572,6 +577,7 @@ public class PurpurWorldConfig { +@@ -568,6 +573,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); @@ -585,7 +585,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean blazeRidable = false; -@@ -614,6 +620,7 @@ public class PurpurWorldConfig { +@@ -610,6 +616,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -593,7 +593,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -622,6 +629,7 @@ public class PurpurWorldConfig { +@@ -618,6 +625,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -601,7 +601,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean catRidable = false; -@@ -632,6 +640,7 @@ public class PurpurWorldConfig { +@@ -628,6 +636,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -609,7 +609,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -646,6 +655,7 @@ public class PurpurWorldConfig { +@@ -642,6 +651,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -617,7 +617,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean caveSpiderRidable = false; -@@ -672,6 +682,7 @@ public class PurpurWorldConfig { +@@ -668,6 +678,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public double chickenScale = 1.0D; public boolean chickenRetaliate = false; @@ -625,7 +625,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -684,6 +695,7 @@ public class PurpurWorldConfig { +@@ -680,6 +691,7 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -633,7 +633,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean codRidable = false; -@@ -708,6 +720,7 @@ public class PurpurWorldConfig { +@@ -704,6 +716,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public double cowScale = 1.0D; public int cowFeedMushrooms = 0; @@ -641,7 +641,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -720,6 +733,7 @@ public class PurpurWorldConfig { +@@ -716,6 +729,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -649,7 +649,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean creeperRidable = false; -@@ -775,6 +789,7 @@ public class PurpurWorldConfig { +@@ -771,6 +785,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -657,7 +657,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -790,6 +805,7 @@ public class PurpurWorldConfig { +@@ -786,6 +801,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -665,7 +665,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean drownedRidable = false; -@@ -920,6 +936,7 @@ public class PurpurWorldConfig { +@@ -916,6 +932,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; @@ -673,7 +673,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -932,17 +949,20 @@ public class PurpurWorldConfig { +@@ -928,17 +945,20 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -694,7 +694,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean ghastRidable = false; -@@ -1017,12 +1037,14 @@ public class PurpurWorldConfig { +@@ -1013,12 +1033,14 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; @@ -709,7 +709,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean guardianRidable = false; -@@ -1046,6 +1068,7 @@ public class PurpurWorldConfig { +@@ -1042,6 +1064,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; @@ -717,7 +717,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1057,6 +1080,7 @@ public class PurpurWorldConfig { +@@ -1053,6 +1076,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); @@ -725,7 +725,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean horseRidableInWater = false; -@@ -1066,6 +1090,7 @@ public class PurpurWorldConfig { +@@ -1062,6 +1086,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -733,7 +733,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1081,6 +1106,7 @@ public class PurpurWorldConfig { +@@ -1077,6 +1102,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -741,7 +741,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean huskRidable = false; -@@ -1164,6 +1190,7 @@ public class PurpurWorldConfig { +@@ -1160,6 +1186,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -749,7 +749,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1181,6 +1208,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1204,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -757,7 +757,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean magmaCubeRidable = false; -@@ -1210,6 +1238,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1234,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; @@ -765,7 +765,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1221,6 +1250,7 @@ public class PurpurWorldConfig { +@@ -1217,6 +1246,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); @@ -773,7 +773,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean muleRidableInWater = false; -@@ -1230,6 +1260,7 @@ public class PurpurWorldConfig { +@@ -1226,6 +1256,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -781,7 +781,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1245,6 +1276,7 @@ public class PurpurWorldConfig { +@@ -1241,6 +1272,7 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -789,7 +789,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean ocelotRidable = false; -@@ -1252,6 +1284,7 @@ public class PurpurWorldConfig { +@@ -1248,6 +1280,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; @@ -797,7 +797,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1263,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1292,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); @@ -805,7 +805,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean pandaRidable = false; -@@ -1270,6 +1304,7 @@ public class PurpurWorldConfig { +@@ -1266,6 +1300,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; @@ -813,7 +813,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1281,6 +1316,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1312,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); @@ -821,7 +821,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean parrotRidable = false; -@@ -1367,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1363,6 +1399,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; @@ -829,7 +829,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1379,6 +1416,7 @@ public class PurpurWorldConfig { +@@ -1375,6 +1412,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -837,7 +837,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean piglinRidable = false; -@@ -1442,6 +1480,7 @@ public class PurpurWorldConfig { +@@ -1438,6 +1476,7 @@ public class PurpurWorldConfig { public double polarBearScale = 1.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -845,7 +845,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1456,6 +1495,7 @@ public class PurpurWorldConfig { +@@ -1452,6 +1491,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -853,7 +853,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean pufferfishRidable = false; -@@ -1481,6 +1521,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1517,7 @@ public class PurpurWorldConfig { public double rabbitScale = 1.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -861,7 +861,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1494,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1490,6 +1531,7 @@ public class PurpurWorldConfig { rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -869,7 +869,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean ravagerRidable = false; -@@ -1535,6 +1577,7 @@ public class PurpurWorldConfig { +@@ -1531,6 +1573,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; @@ -877,7 +877,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1546,6 +1589,7 @@ public class PurpurWorldConfig { +@@ -1542,6 +1585,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); @@ -885,7 +885,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean shulkerRidable = false; -@@ -1682,12 +1726,14 @@ public class PurpurWorldConfig { +@@ -1678,12 +1722,14 @@ public class PurpurWorldConfig { public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; @@ -900,7 +900,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean squidRidable = false; -@@ -1753,6 +1799,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1795,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; @@ -908,7 +908,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1764,6 +1811,7 @@ public class PurpurWorldConfig { +@@ -1760,6 +1807,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); @@ -916,7 +916,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean tadpoleRidable = false; -@@ -1784,6 +1832,7 @@ public class PurpurWorldConfig { +@@ -1780,6 +1828,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -924,7 +924,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1801,6 +1850,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1846,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -932,7 +932,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean tropicalFishRidable = false; -@@ -1824,6 +1874,7 @@ public class PurpurWorldConfig { +@@ -1820,6 +1870,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; @@ -940,7 +940,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1835,6 +1886,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1882,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); @@ -948,7 +948,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean vexRidable = false; -@@ -1865,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1861,6 +1913,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -956,7 +956,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1879,6 +1932,7 @@ public class PurpurWorldConfig { +@@ -1875,6 +1928,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -964,7 +964,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 } public boolean vindicatorRidable = false; -@@ -2001,6 +2055,7 @@ public class PurpurWorldConfig { +@@ -1997,6 +2051,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -972,7 +972,7 @@ index d2ecc35e4c20549c71b32ae444b3c4e98ed3561a..3cb0f571577a1377f339362434a6d339 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2012,6 +2067,7 @@ public class PurpurWorldConfig { +@@ -2008,6 +2063,7 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch index fc3c92ca5..69cea675c 100644 --- a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -126,7 +126,7 @@ index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3cb0f571577a1377f339362434a6d339b457ffdc..79eb0e3553a3f9b2fb8059e882fed0427be67043 100644 +index b0397d5586f4356e9b8bd11973a5c6839734098a..53d0d688a0a4195bc1fe57a47e523bd4edf9a58f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,8 +98,10 @@ public class PurpurWorldConfig { @@ -146,13 +146,13 @@ index 3cb0f571577a1377f339362434a6d339b457ffdc..79eb0e3553a3f9b2fb8059e882fed042 public boolean milkCuresBadOmen = true; + public boolean persistentDroppableEntityDisplayNames = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; -@@ -123,6 +126,7 @@ public class PurpurWorldConfig { + public int raidCooldownSeconds = 0; + public int animalBreedingCooldownSeconds = 0; +@@ -121,6 +124,7 @@ public class PurpurWorldConfig { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index b35ca6933..08c1333b6 100644 --- a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index b081ea3f272ec2dba426bf0ebdfbbba1cec718ee..3348b5a9e4e00ef7f4dabe10d0fe0a9c private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 39aa800ecca20af51d7d07288c8db2f16969fc20..82cd55f78f957875514213c21c36586fc1f27c10 100644 +index de933c8cc5eafc99a77cd1271238ab9717f81d25..5089e9c899fef29a0078d5fce8af93538046b3b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -886,6 +886,7 @@ public class PurpurWorldConfig { +@@ -882,6 +882,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 39aa800ecca20af51d7d07288c8db2f16969fc20..82cd55f78f957875514213c21c36586f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -898,6 +899,7 @@ public class PurpurWorldConfig { +@@ -894,6 +895,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0104-Add-configurable-snowball-damage.patch b/patches/server/0104-Add-configurable-snowball-damage.patch index 9df460563..0f2f1e4a6 100644 --- a/patches/server/0104-Add-configurable-snowball-damage.patch +++ b/patches/server/0104-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82cd55f78f957875514213c21c36586fc1f27c10..cf3d1d188cb3a83cf81bf6a5af2640db4c0a2785 100644 +index 5089e9c899fef29a0078d5fce8af93538046b3b8..5540dca552e6a6aa4b3ee2042cc7898adb25eae9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -376,6 +376,11 @@ public class PurpurWorldConfig { +@@ -372,6 +372,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch index 1e88b4720..c9c819d08 100644 --- a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch @@ -18,10 +18,10 @@ index 0d93a8cbf15fa84f422d61adddb420ba5dcb226a..d9743c9e0026d1f858aacc6a78dc39f1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cf3d1d188cb3a83cf81bf6a5af2640db4c0a2785..56c7b913fb598d40eae8d966acbac66e8bed827d 100644 +index 5540dca552e6a6aa4b3ee2042cc7898adb25eae9..9e909a0a151997c8fd2922f40a858c673bd723b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -155,8 +155,10 @@ public class PurpurWorldConfig { +@@ -151,8 +151,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0106-Add-boat-fall-damage-config.patch b/patches/server/0106-Add-boat-fall-damage-config.patch index 4dad76a17..665fdec61 100644 --- a/patches/server/0106-Add-boat-fall-damage-config.patch +++ b/patches/server/0106-Add-boat-fall-damage-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 855b8920eb5119ea6bf4726a9b77e3149779d0b3..d38a94ad94e09e71200d59e4d6a1d751da020020 100644 +index aca60e21e7a191212d07a03a105fc4fb636359b2..0b57d9a2e2573bdb41c9e163d953130c3a4a1747 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1182,7 +1182,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -27,7 +27,7 @@ index 855b8920eb5119ea6bf4726a9b77e3149779d0b3..d38a94ad94e09e71200d59e4d6a1d751 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56c7b913fb598d40eae8d966acbac66e8bed827d..2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a 100644 +index 9e909a0a151997c8fd2922f40a858c673bd723b8..3ffa21c107a2b815f729d28294c530f64dc75287 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,7 @@ public class PurpurWorldConfig { @@ -38,7 +38,7 @@ index 56c7b913fb598d40eae8d966acbac66e8bed827d..2fe0f5856e6d07a671ae9c59bb3e4e27 public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; -@@ -125,6 +126,7 @@ public class PurpurWorldConfig { +@@ -123,6 +124,7 @@ public class PurpurWorldConfig { private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); diff --git a/patches/server/0107-Snow-Golem-rate-of-fire-config.patch b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch index 011255274..9497a0ab9 100644 --- a/patches/server/0107-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index dc5af0b71ec82a8f22e64b03950e35845110a331..5b910b4168b7f7825916c14e402f7f00 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a..d3f7829ba6059a89cdcd51e1efc99c644a89e87d 100644 +index 3ffa21c107a2b815f729d28294c530f64dc75287..05f206afe40b6924a0354f2b9ffb9b8390e24539 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1723,6 +1723,10 @@ public class PurpurWorldConfig { +@@ -1719,6 +1719,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public double snowGolemScale = 1.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 2fe0f5856e6d07a671ae9c59bb3e4e2723a85d5a..d3f7829ba6059a89cdcd51e1efc99c64 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1736,6 +1740,10 @@ public class PurpurWorldConfig { +@@ -1732,6 +1736,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemScale = Mth.clamp(getDouble("mobs.snow_golem.attributes.scale", snowGolemScale), 0.0625D, 16.0D); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 642c84cd6..63cf0ef08 100644 --- a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d3f7829ba6059a89cdcd51e1efc99c644a89e87d..5a650cca4475e5fd2c130b3c1c5f8370df7d53ad 100644 +index 05f206afe40b6924a0354f2b9ffb9b8390e24539..24ecf0e61ce4957eda46c2a507543ae6c2ac51c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1943,6 +1943,8 @@ public class PurpurWorldConfig { +@@ -1939,6 +1939,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index d3f7829ba6059a89cdcd51e1efc99c644a89e87d..5a650cca4475e5fd2c130b3c1c5f8370 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1958,6 +1960,8 @@ public class PurpurWorldConfig { +@@ -1954,6 +1956,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index d136176e9..001d0223c 100644 --- a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 53b8f46bda60289ec310cb45513a2b729fcbea76..2756319fd1e53eca6a3dfa094d7c6690 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5a650cca4475e5fd2c130b3c1c5f8370df7d53ad..76a4fb37b908a1f8523ae3fa5a56a7ef3726391f 100644 +index 24ecf0e61ce4957eda46c2a507543ae6c2ac51c3..03a74aa5e0b9d51b63722809bbee288e544c5ff5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2209,6 +2209,7 @@ public class PurpurWorldConfig { +@@ -2205,6 +2205,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 5a650cca4475e5fd2c130b3c1c5f8370df7d53ad..76a4fb37b908a1f8523ae3fa5a56a7ef private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2224,5 +2225,6 @@ public class PurpurWorldConfig { +@@ -2220,5 +2221,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch index b2e780d91..ed3617a13 100644 --- a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,10 +182,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76a4fb37b908a1f8523ae3fa5a56a7ef3726391f..c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90 100644 +index 03a74aa5e0b9d51b63722809bbee288e544c5ff5..da84a0bbfeeccc3a6db0f5aa8ae3cdd6c8043ea4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2084,6 +2084,8 @@ public class PurpurWorldConfig { +@@ -2080,6 +2080,8 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -194,7 +194,7 @@ index 76a4fb37b908a1f8523ae3fa5a56a7ef3726391f..c5aa4e74a6a8f796ae3000c970ccc8d5 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -2096,6 +2098,8 @@ public class PurpurWorldConfig { +@@ -2092,6 +2094,8 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0112-Configurable-default-collar-color.patch b/patches/server/0112-Configurable-default-collar-color.patch index 34f0963a0..ffe5ab5bd 100644 --- a/patches/server/0112-Configurable-default-collar-color.patch +++ b/patches/server/0112-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index d159d573d5f87c31cf61baacbaae193d24ab6801..143717d64651ffd75124973ca7a15fc1 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee305471173726 100644 +index da84a0bbfeeccc3a6db0f5aa8ae3cdd6c8043ea4..84989993500837388e1c6cea74f8bce46c131627 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -656,6 +656,7 @@ public class PurpurWorldConfig { +@@ -652,6 +652,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee3054 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -671,6 +672,11 @@ public class PurpurWorldConfig { +@@ -667,6 +668,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee3054 } public boolean caveSpiderRidable = false; -@@ -2084,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -2080,6 +2086,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -74,7 +74,7 @@ index c5aa4e74a6a8f796ae3000c970ccc8d589ca4a90..0d5ad3c193841bdb08853ceadeee3054 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -2098,6 +2105,11 @@ public class PurpurWorldConfig { +@@ -2094,6 +2101,11 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0113-Phantom-flames-on-swoop.patch b/patches/server/0113-Phantom-flames-on-swoop.patch index 22dc1293f..fb14a5a37 100644 --- a/patches/server/0113-Phantom-flames-on-swoop.patch +++ b/patches/server/0113-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d5ad3c193841bdb08853ceadeee305471173726..561398fe6cf4d20a8418582e6d002edfe7060125 100644 +index 84989993500837388e1c6cea74f8bce46c131627..d43f1f2fac56a7590e80639cf2baa9190e348342 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1385,6 +1385,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1381,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 0d5ad3c193841bdb08853ceadeee305471173726..561398fe6cf4d20a8418582e6d002edf private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1418,6 +1419,7 @@ public class PurpurWorldConfig { +@@ -1414,6 +1415,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 38643354f..0d32afc81 100644 --- a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 0b27baf10770cb3077c4e75da55209689d614513..485ea9892f257c6843db23bca43f9fdc return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 561398fe6cf4d20a8418582e6d002edfe7060125..c2d9ec6da2d4c6523a073c8bda10ce8486953574 100644 +index d43f1f2fac56a7590e80639cf2baa9190e348342..fefe3331c6b383288b47fde58dda050f6dbbdb90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -413,6 +413,11 @@ public class PurpurWorldConfig { +@@ -409,6 +409,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0116-Striders-give-saddle-back.patch b/patches/server/0116-Striders-give-saddle-back.patch index 8905acf44..4cc49e8fc 100644 --- a/patches/server/0116-Striders-give-saddle-back.patch +++ b/patches/server/0116-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 8c233a90d07db7959b778a84c4ed0589a6a10dd4..d534eaa9231602f8fa73d0230223f083 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2d9ec6da2d4c6523a073c8bda10ce8486953574..cc5a653f534b4050e2129e3746bf06d28132a252 100644 +index fefe3331c6b383288b47fde58dda050f6dbbdb90..3f605c912f99a41babb61eeebd031ca7f94f51ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1838,6 +1838,7 @@ public class PurpurWorldConfig { +@@ -1834,6 +1834,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index c2d9ec6da2d4c6523a073c8bda10ce8486953574..cc5a653f534b4050e2129e3746bf06d2 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1850,6 +1851,7 @@ public class PurpurWorldConfig { +@@ -1846,6 +1847,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch index 54d492f2d..7302bdd4e 100644 --- a/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index 9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45..33c1b2b387e7412a001841d1bcbb3966 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc5a653f534b4050e2129e3746bf06d28132a252..03380ffce492af4620d613ef8af0a11c3c322cd7 100644 +index 3f605c912f99a41babb61eeebd031ca7f94f51ee..84f96d814d724902d71bd777f37bd2dc0601fb05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -288,6 +288,19 @@ public class PurpurWorldConfig { +@@ -284,6 +284,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch index 6aa5760a2..9b0f53398 100644 --- a/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0119-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5ac53d35538373f81822b1dea7d29c2d3d52cb27..ccfcce1e25e8b94ef805a690cfadafe2f2ab7150 100644 +index cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a..4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1857,7 +1857,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -375,7 +375,7 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56bebf1c5f 100644 +index 84f96d814d724902d71bd777f37bd2dc0601fb05..6c7916d3b9841bd68775389ad4f8f5dfe67ca847 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -116,8 +116,11 @@ public class PurpurWorldConfig { @@ -388,9 +388,9 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 public boolean persistentDroppableEntityDisplayNames = true; + public boolean projectilesBypassMobGriefing = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; -@@ -129,8 +132,11 @@ public class PurpurWorldConfig { + public int raidCooldownSeconds = 0; + public int animalBreedingCooldownSeconds = 0; +@@ -127,8 +130,11 @@ public class PurpurWorldConfig { boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); @@ -400,9 +400,9 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); + projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); -@@ -438,9 +444,11 @@ public class PurpurWorldConfig { + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); +@@ -434,9 +440,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -414,7 +414,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -465,6 +473,11 @@ public class PurpurWorldConfig { +@@ -461,6 +469,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -426,7 +426,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -494,10 +507,12 @@ public class PurpurWorldConfig { +@@ -490,10 +503,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; @@ -439,7 +439,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public int waterInfiniteRequiredSources = 2; -@@ -782,6 +797,7 @@ public class PurpurWorldConfig { +@@ -778,6 +793,7 @@ public class PurpurWorldConfig { public double creeperScale = 1.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -447,7 +447,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -795,6 +811,7 @@ public class PurpurWorldConfig { +@@ -791,6 +807,7 @@ public class PurpurWorldConfig { creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -455,7 +455,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean dolphinRidable = false; -@@ -895,6 +912,7 @@ public class PurpurWorldConfig { +@@ -891,6 +908,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -463,7 +463,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -911,6 +929,7 @@ public class PurpurWorldConfig { +@@ -907,6 +925,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -471,7 +471,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean endermanRidable = false; -@@ -920,6 +939,7 @@ public class PurpurWorldConfig { +@@ -916,6 +935,7 @@ public class PurpurWorldConfig { public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -479,7 +479,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -933,6 +953,7 @@ public class PurpurWorldConfig { +@@ -929,6 +949,7 @@ public class PurpurWorldConfig { endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -487,7 +487,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean endermiteRidable = false; -@@ -958,6 +979,7 @@ public class PurpurWorldConfig { +@@ -954,6 +975,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; @@ -495,7 +495,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -969,6 +991,7 @@ public class PurpurWorldConfig { +@@ -965,6 +987,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); @@ -503,7 +503,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean foxRidable = false; -@@ -978,6 +1001,7 @@ public class PurpurWorldConfig { +@@ -974,6 +997,7 @@ public class PurpurWorldConfig { public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -511,7 +511,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -991,6 +1015,7 @@ public class PurpurWorldConfig { +@@ -987,6 +1011,7 @@ public class PurpurWorldConfig { foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -519,7 +519,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean frogRidable = false; -@@ -1467,6 +1492,7 @@ public class PurpurWorldConfig { +@@ -1463,6 +1488,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; @@ -527,7 +527,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1478,6 +1504,7 @@ public class PurpurWorldConfig { +@@ -1474,6 +1500,7 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); @@ -535,7 +535,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean piglinBruteRidable = false; -@@ -1503,6 +1530,7 @@ public class PurpurWorldConfig { +@@ -1499,6 +1526,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; @@ -543,7 +543,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1514,6 +1542,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1538,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); @@ -551,7 +551,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean polarBearRidable = false; -@@ -1565,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1561,6 +1590,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -559,7 +559,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1579,6 +1609,7 @@ public class PurpurWorldConfig { +@@ -1575,6 +1605,7 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -567,7 +567,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean ravagerRidable = false; -@@ -1586,6 +1617,7 @@ public class PurpurWorldConfig { +@@ -1582,6 +1613,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; @@ -575,7 +575,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1597,6 +1629,7 @@ public class PurpurWorldConfig { +@@ -1593,6 +1625,7 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); @@ -583,7 +583,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean salmonRidable = false; -@@ -1621,6 +1654,7 @@ public class PurpurWorldConfig { +@@ -1617,6 +1650,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; @@ -591,7 +591,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1633,6 +1667,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1663,7 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -599,7 +599,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean shulkerRidable = false; -@@ -1660,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1691,7 @@ public class PurpurWorldConfig { public double silverfishScale = 1.0D; public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; @@ -607,7 +607,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1673,6 +1709,7 @@ public class PurpurWorldConfig { +@@ -1669,6 +1705,7 @@ public class PurpurWorldConfig { silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D); silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); @@ -615,7 +615,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean skeletonRidable = false; -@@ -1753,6 +1790,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1786,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -623,7 +623,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1770,6 +1808,7 @@ public class PurpurWorldConfig { +@@ -1766,6 +1804,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -631,7 +631,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean snifferRidable = false; -@@ -1973,6 +2012,7 @@ public class PurpurWorldConfig { +@@ -1969,6 +2008,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -639,7 +639,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1990,6 +2030,7 @@ public class PurpurWorldConfig { +@@ -1986,6 +2026,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -647,7 +647,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean vindicatorRidable = false; -@@ -2069,6 +2110,7 @@ public class PurpurWorldConfig { +@@ -2065,6 +2106,7 @@ public class PurpurWorldConfig { public double witherScale = 1.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -655,7 +655,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2087,6 +2129,7 @@ public class PurpurWorldConfig { +@@ -2083,6 +2125,7 @@ public class PurpurWorldConfig { witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -663,7 +663,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 } public boolean witherSkeletonRidable = false; -@@ -2165,6 +2208,7 @@ public class PurpurWorldConfig { +@@ -2161,6 +2204,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -671,7 +671,7 @@ index 03380ffce492af4620d613ef8af0a11c3c322cd7..0a6eea1ff455da964acf85e24d2d1e56 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2181,6 +2225,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2221,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch index 23ebd4f13..6cc3a7f6a 100644 --- a/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a6eea1ff455da964acf85e24d2d1e56bebf1c5f..4712bd3d2221bd0b54977cf671cecab6120ab1fa 100644 +index 6c7916d3b9841bd68775389ad4f8f5dfe67ca847..cd7c3762e216e9d6417e7a01fd7f71c23bd8142a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { @@ -33,7 +33,7 @@ index 0a6eea1ff455da964acf85e24d2d1e56bebf1c5f..4712bd3d2221bd0b54977cf671cecab6 public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; -@@ -135,6 +136,7 @@ public class PurpurWorldConfig { +@@ -133,6 +134,7 @@ public class PurpurWorldConfig { entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0121-Add-EntityTeleportHinderedEvent.patch b/patches/server/0121-Add-EntityTeleportHinderedEvent.patch index 0f9e9c63a..7b917e254 100644 --- a/patches/server/0121-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0121-Add-EntityTeleportHinderedEvent.patch @@ -95,7 +95,7 @@ index 82b8fca9ca46f24d71b357ed5eab89c6b27ecd8a..9df9b518f6188a758d9a712def36dadb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4712bd3d2221bd0b54977cf671cecab6120ab1fa..fbe6c149be4b0d46a6092c97f52cf125e5aa2e7b 100644 +index cd7c3762e216e9d6417e7a01fd7f71c23bd8142a..ec3d6553f3ab84078878e6e423b45b944efb299e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,9 @@ public class PurpurWorldConfig { @@ -108,7 +108,7 @@ index 4712bd3d2221bd0b54977cf671cecab6120ab1fa..fbe6c149be4b0d46a6092c97f52cf125 public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; -@@ -135,6 +138,9 @@ public class PurpurWorldConfig { +@@ -133,6 +136,9 @@ public class PurpurWorldConfig { entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); diff --git a/patches/server/0122-Farmland-trampling-changes.patch b/patches/server/0122-Farmland-trampling-changes.patch index 0484fff77..0dc11baee 100644 --- a/patches/server/0122-Farmland-trampling-changes.patch +++ b/patches/server/0122-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fbe6c149be4b0d46a6092c97f52cf125e5aa2e7b..3fba79b4520d7fb3345ba3e9fda6ea015471428e 100644 +index ec3d6553f3ab84078878e6e423b45b944efb299e..4319f30cc1287fa557de5ab281f285d38d311d87 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -455,10 +455,16 @@ public class PurpurWorldConfig { +@@ -451,10 +451,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0123-Movement-options-for-armor-stands.patch b/patches/server/0123-Movement-options-for-armor-stands.patch index 0796e5a52..146d3ba23 100644 --- a/patches/server/0123-Movement-options-for-armor-stands.patch +++ b/patches/server/0123-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 88de6ab4ac4857433c0c96dc4c030e5f4943c1dd..808c533a0092ca659bad32f400d83a869bcf6a64 100644 +index acf10656ea445554ee537dcb2f23164ee77e4d60..b8b38d6b544261038905c97e8c600625f5ce2bda 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1935,7 +1935,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1937,7 +1937,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -66,7 +66,7 @@ index 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fba79b4520d7fb3345ba3e9fda6ea015471428e..59e5f8f9e2a7b782b4e20334515252afaaaf4036 100644 +index 4319f30cc1287fa557de5ab281f285d38d311d87..5ab701eccf0ad74cddc9a37a779dc295fbff1254 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,10 +100,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Fix-stuck-in-portals.patch b/patches/server/0124-Fix-stuck-in-portals.patch index 50100488c..70b3b4c0e 100644 --- a/patches/server/0124-Fix-stuck-in-portals.patch +++ b/patches/server/0124-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 97e05432626ae78b3ac91d41bbe0784c61d3d184..578809e48dc52dcde5866672291d70168a09811c 100644 +index 6100c35a54a9f597bb7e4925bf2c63aa7e0d64d3..d677c1308412e5a12046225ce2449af136b7665f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1424,6 +1424,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -17,10 +17,10 @@ index 97e05432626ae78b3ac91d41bbe0784c61d3d184..578809e48dc52dcde5866672291d7016 this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 808c533a0092ca659bad32f400d83a869bcf6a64..73cac6256baa32b0dbd47f06444adda2fc4e0fc1 100644 +index b8b38d6b544261038905c97e8c600625f5ce2bda..901080dd8431b83b20aa5604e931519dcba82b22 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3272,13 +3272,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3274,13 +3274,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } @@ -38,10 +38,10 @@ index 808c533a0092ca659bad32f400d83a869bcf6a64..73cac6256baa32b0dbd47f06444adda2 this.portalProcess = new PortalProcessor(portal, pos.immutable()); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59e5f8f9e2a7b782b4e20334515252afaaaf4036..e65d5ce9833e4e949290016d0a85eff329dcd2e8 100644 +index 5ab701eccf0ad74cddc9a37a779dc295fbff1254..aeb6171c1fad09e3837c51fb4d2395f958c78103 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -330,6 +330,7 @@ public class PurpurWorldConfig { +@@ -326,6 +326,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -49,7 +49,7 @@ index 59e5f8f9e2a7b782b4e20334515252afaaaf4036..e65d5ce9833e4e949290016d0a85eff3 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -345,6 +346,7 @@ public class PurpurWorldConfig { +@@ -341,6 +342,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch index 4c7d3f885..b6b86af67 100644 --- a/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch @@ -937,7 +937,7 @@ index d7d16e091f25db68d22b0609f5a16360604e8cd7..69d7594a7495cfefdd32a409b2bc71c0 public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater; diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 472c271352aa80c6af497c8b913c034afd2f65a6..dc832c9d3ef797580785b2b61abbb93b629cb80e 100644 +index cf4175e1e0a457e459e1de23417a8c7cec9f285c..9dcc0ecf276bfbe4b6eeecc783c52779d2b93b78 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -74,6 +74,11 @@ public class Spider extends Monster { @@ -1071,7 +1071,7 @@ index 28c400e1d8b56d1dd91d41a30b12543b242eadf9..3c9c32f09b3c60b52cd2e678e3c9e328 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 21e0028ad33f8de0211dd733d98a00af8461684b..e6321e1c5ed453824de4af629feff272e24def01 100644 +index c0adb41e2772ac1204bbdf8e6eee27fbfc82ef12..990daa4f12ed7fb9a1ab40443c7f68bca4534626 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -143,6 +143,11 @@ public class Zombie extends Monster { @@ -1199,10 +1199,10 @@ index 0d5e828a7fb6fd6facc04a27175541ac463c918e..05c63eb6cf8a7067105c58d244c7cc27 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a97e3d4897 100644 +index aeb6171c1fad09e3837c51fb4d2395f958c78103..886203f69ec02774ef82f53d8649fa1f991a8a0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -586,12 +586,14 @@ public class PurpurWorldConfig { +@@ -582,12 +582,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; @@ -1217,7 +1217,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean batRidable = false; -@@ -607,6 +609,7 @@ public class PurpurWorldConfig { +@@ -603,6 +605,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1225,7 +1225,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -626,6 +629,7 @@ public class PurpurWorldConfig { +@@ -622,6 +625,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1233,7 +1233,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean beeRidable = false; -@@ -635,6 +639,7 @@ public class PurpurWorldConfig { +@@ -631,6 +635,7 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; public int beeBreedingTicks = 6000; @@ -1241,7 +1241,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -648,6 +653,7 @@ public class PurpurWorldConfig { +@@ -644,6 +649,7 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1249,7 +1249,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean blazeRidable = false; -@@ -656,6 +662,7 @@ public class PurpurWorldConfig { +@@ -652,6 +658,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; @@ -1257,7 +1257,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -668,6 +675,7 @@ public class PurpurWorldConfig { +@@ -664,6 +671,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D); @@ -1265,7 +1265,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean boggedRidable = false; -@@ -712,6 +720,7 @@ public class PurpurWorldConfig { +@@ -708,6 +716,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1273,7 +1273,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -732,6 +741,7 @@ public class PurpurWorldConfig { +@@ -728,6 +737,7 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1281,7 +1281,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean caveSpiderRidable = false; -@@ -739,6 +749,7 @@ public class PurpurWorldConfig { +@@ -735,6 +745,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; @@ -1289,7 +1289,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -750,6 +761,7 @@ public class PurpurWorldConfig { +@@ -746,6 +757,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D); @@ -1297,7 +1297,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean chickenRidable = false; -@@ -759,6 +771,7 @@ public class PurpurWorldConfig { +@@ -755,6 +767,7 @@ public class PurpurWorldConfig { public double chickenScale = 1.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1305,7 +1305,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -772,12 +785,14 @@ public class PurpurWorldConfig { +@@ -768,12 +781,14 @@ public class PurpurWorldConfig { chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1320,7 +1320,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -788,6 +803,7 @@ public class PurpurWorldConfig { +@@ -784,6 +799,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D); @@ -1328,7 +1328,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean cowRidable = false; -@@ -797,6 +813,7 @@ public class PurpurWorldConfig { +@@ -793,6 +809,7 @@ public class PurpurWorldConfig { public double cowScale = 1.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1336,7 +1336,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -810,6 +827,7 @@ public class PurpurWorldConfig { +@@ -806,6 +823,7 @@ public class PurpurWorldConfig { cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1344,7 +1344,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean creeperRidable = false; -@@ -820,6 +838,7 @@ public class PurpurWorldConfig { +@@ -816,6 +834,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1352,7 +1352,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -834,6 +853,7 @@ public class PurpurWorldConfig { +@@ -830,6 +849,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1360,7 +1360,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean dolphinRidable = false; -@@ -844,6 +864,7 @@ public class PurpurWorldConfig { +@@ -840,6 +860,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1368,7 +1368,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -858,6 +879,7 @@ public class PurpurWorldConfig { +@@ -854,6 +875,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1376,7 +1376,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean donkeyRidableInWater = false; -@@ -868,6 +890,7 @@ public class PurpurWorldConfig { +@@ -864,6 +886,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1384,7 +1384,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -884,6 +907,7 @@ public class PurpurWorldConfig { +@@ -880,6 +903,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1392,7 +1392,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean drownedRidable = false; -@@ -895,6 +919,7 @@ public class PurpurWorldConfig { +@@ -891,6 +915,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1400,7 +1400,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -910,12 +935,14 @@ public class PurpurWorldConfig { +@@ -906,12 +931,14 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1415,7 +1415,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -926,6 +953,7 @@ public class PurpurWorldConfig { +@@ -922,6 +949,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); @@ -1423,7 +1423,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean enderDragonRidable = false; -@@ -935,6 +963,7 @@ public class PurpurWorldConfig { +@@ -931,6 +959,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1431,7 +1431,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -952,6 +981,7 @@ public class PurpurWorldConfig { +@@ -948,6 +977,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1439,7 +1439,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean endermanRidable = false; -@@ -962,6 +992,7 @@ public class PurpurWorldConfig { +@@ -958,6 +988,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1447,7 +1447,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -976,6 +1007,7 @@ public class PurpurWorldConfig { +@@ -972,6 +1003,7 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1455,7 +1455,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean endermiteRidable = false; -@@ -983,6 +1015,7 @@ public class PurpurWorldConfig { +@@ -979,6 +1011,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; @@ -1463,7 +1463,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -994,6 +1027,7 @@ public class PurpurWorldConfig { +@@ -990,6 +1023,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); @@ -1471,7 +1471,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean evokerRidable = false; -@@ -1002,6 +1036,7 @@ public class PurpurWorldConfig { +@@ -998,6 +1032,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; @@ -1479,7 +1479,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1014,6 +1049,7 @@ public class PurpurWorldConfig { +@@ -1010,6 +1045,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1487,7 +1487,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean foxRidable = false; -@@ -1024,6 +1060,7 @@ public class PurpurWorldConfig { +@@ -1020,6 +1056,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1495,7 +1495,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1038,6 +1075,7 @@ public class PurpurWorldConfig { +@@ -1034,6 +1071,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1503,7 +1503,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean frogRidable = false; -@@ -1059,6 +1097,7 @@ public class PurpurWorldConfig { +@@ -1055,6 +1093,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; @@ -1511,7 +1511,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1071,6 +1110,7 @@ public class PurpurWorldConfig { +@@ -1067,6 +1106,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); @@ -1519,7 +1519,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean giantRidable = false; -@@ -1084,6 +1124,7 @@ public class PurpurWorldConfig { +@@ -1080,6 +1120,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1527,7 +1527,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1105,6 +1146,7 @@ public class PurpurWorldConfig { +@@ -1101,6 +1142,7 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1535,7 +1535,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean glowSquidRidable = false; -@@ -1112,12 +1154,14 @@ public class PurpurWorldConfig { +@@ -1108,12 +1150,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; @@ -1550,7 +1550,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean goatRidable = false; -@@ -1126,6 +1170,7 @@ public class PurpurWorldConfig { +@@ -1122,6 +1166,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; public int goatBreedingTicks = 6000; @@ -1558,7 +1558,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1133,12 +1178,14 @@ public class PurpurWorldConfig { +@@ -1129,12 +1174,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); @@ -1573,7 +1573,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1149,6 +1196,7 @@ public class PurpurWorldConfig { +@@ -1145,6 +1192,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); @@ -1581,7 +1581,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean hoglinRidable = false; -@@ -1157,6 +1205,7 @@ public class PurpurWorldConfig { +@@ -1153,6 +1201,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; @@ -1589,7 +1589,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1169,6 +1218,7 @@ public class PurpurWorldConfig { +@@ -1165,6 +1214,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1597,7 +1597,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean horseRidableInWater = false; -@@ -1179,6 +1229,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1225,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1605,7 +1605,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1195,6 +1246,7 @@ public class PurpurWorldConfig { +@@ -1191,6 +1242,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1613,7 +1613,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean huskRidable = false; -@@ -1206,6 +1258,7 @@ public class PurpurWorldConfig { +@@ -1202,6 +1254,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1621,7 +1621,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1221,6 +1274,7 @@ public class PurpurWorldConfig { +@@ -1217,6 +1270,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1629,7 +1629,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean illusionerRidable = false; -@@ -1230,6 +1284,7 @@ public class PurpurWorldConfig { +@@ -1226,6 +1280,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; @@ -1637,7 +1637,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1247,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1298,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); @@ -1645,7 +1645,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean ironGolemRidable = false; -@@ -1255,6 +1311,7 @@ public class PurpurWorldConfig { +@@ -1251,6 +1307,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; @@ -1653,7 +1653,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1267,6 +1324,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1320,7 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); @@ -1661,7 +1661,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean llamaRidable = false; -@@ -1279,6 +1337,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1333,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1669,7 +1669,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1297,6 +1356,7 @@ public class PurpurWorldConfig { +@@ -1293,6 +1352,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1677,7 +1677,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean magmaCubeRidable = false; -@@ -1306,6 +1366,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1362,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1685,7 +1685,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1319,6 +1380,7 @@ public class PurpurWorldConfig { +@@ -1315,6 +1376,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1693,7 +1693,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean mooshroomRidable = false; -@@ -1327,6 +1389,7 @@ public class PurpurWorldConfig { +@@ -1323,6 +1385,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; @@ -1701,7 +1701,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1339,6 +1402,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1398,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1709,7 +1709,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean muleRidableInWater = false; -@@ -1349,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1409,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1717,7 +1717,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1365,6 +1430,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1426,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1725,7 +1725,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean ocelotRidable = false; -@@ -1373,6 +1439,7 @@ public class PurpurWorldConfig { +@@ -1369,6 +1435,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; @@ -1733,7 +1733,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1385,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1448,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1741,7 +1741,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean pandaRidable = false; -@@ -1393,6 +1461,7 @@ public class PurpurWorldConfig { +@@ -1389,6 +1457,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; @@ -1749,7 +1749,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1405,6 +1474,7 @@ public class PurpurWorldConfig { +@@ -1401,6 +1470,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1757,7 +1757,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean parrotRidable = false; -@@ -1413,6 +1483,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1479,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; @@ -1765,7 +1765,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1425,6 +1496,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1492,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); @@ -1773,7 +1773,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean phantomRidable = false; -@@ -1451,6 +1523,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1519,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1781,7 +1781,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1485,6 +1558,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1554,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1789,7 +1789,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean pigRidable = false; -@@ -1494,6 +1568,7 @@ public class PurpurWorldConfig { +@@ -1490,6 +1564,7 @@ public class PurpurWorldConfig { public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1797,7 +1797,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1507,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1503,6 +1578,7 @@ public class PurpurWorldConfig { pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1805,7 +1805,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean piglinRidable = false; -@@ -1515,6 +1591,7 @@ public class PurpurWorldConfig { +@@ -1511,6 +1587,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; @@ -1813,7 +1813,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1527,6 +1604,7 @@ public class PurpurWorldConfig { +@@ -1523,6 +1600,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1821,7 +1821,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean piglinBruteRidable = false; -@@ -1534,6 +1612,7 @@ public class PurpurWorldConfig { +@@ -1530,6 +1608,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; @@ -1829,7 +1829,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1545,6 +1624,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1620,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); @@ -1837,7 +1837,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean pillagerRidable = false; -@@ -1553,6 +1633,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1629,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; @@ -1845,7 +1845,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1565,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1561,6 +1642,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1853,7 +1853,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean polarBearRidable = false; -@@ -1575,6 +1657,7 @@ public class PurpurWorldConfig { +@@ -1571,6 +1653,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1861,7 +1861,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1590,12 +1673,14 @@ public class PurpurWorldConfig { +@@ -1586,12 +1669,14 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1876,7 +1876,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1606,6 +1691,7 @@ public class PurpurWorldConfig { +@@ -1602,6 +1687,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); @@ -1884,7 +1884,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean rabbitRidable = false; -@@ -1617,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1613,6 +1699,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1892,7 +1892,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1632,6 +1719,7 @@ public class PurpurWorldConfig { +@@ -1628,6 +1715,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1900,7 +1900,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean ravagerRidable = false; -@@ -1640,6 +1728,7 @@ public class PurpurWorldConfig { +@@ -1636,6 +1724,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; @@ -1908,7 +1908,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1652,12 +1741,14 @@ public class PurpurWorldConfig { +@@ -1648,12 +1737,14 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1923,7 +1923,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1668,6 +1759,7 @@ public class PurpurWorldConfig { +@@ -1664,6 +1755,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); @@ -1931,7 +1931,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean sheepRidable = false; -@@ -1677,6 +1769,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1765,7 @@ public class PurpurWorldConfig { public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1939,7 +1939,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1690,6 +1783,7 @@ public class PurpurWorldConfig { +@@ -1686,6 +1779,7 @@ public class PurpurWorldConfig { sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1947,7 +1947,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean shulkerRidable = false; -@@ -1697,6 +1791,7 @@ public class PurpurWorldConfig { +@@ -1693,6 +1787,7 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; @@ -1955,7 +1955,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1708,6 +1803,7 @@ public class PurpurWorldConfig { +@@ -1704,6 +1799,7 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); @@ -1963,7 +1963,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean silverfishRidable = false; -@@ -1718,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1714,6 +1810,7 @@ public class PurpurWorldConfig { public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; @@ -1971,7 +1971,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1732,6 +1829,7 @@ public class PurpurWorldConfig { +@@ -1728,6 +1825,7 @@ public class PurpurWorldConfig { silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1979,7 +1979,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean skeletonRidable = false; -@@ -1739,6 +1837,7 @@ public class PurpurWorldConfig { +@@ -1735,6 +1833,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; @@ -1987,7 +1987,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1750,6 +1849,7 @@ public class PurpurWorldConfig { +@@ -1746,6 +1845,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); @@ -1995,7 +1995,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean skeletonHorseRidable = false; -@@ -1761,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1757,6 +1857,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -2003,7 +2003,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1777,6 +1878,7 @@ public class PurpurWorldConfig { +@@ -1773,6 +1874,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -2011,7 +2011,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean slimeRidable = false; -@@ -1786,6 +1888,7 @@ public class PurpurWorldConfig { +@@ -1782,6 +1884,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2019,7 +2019,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1799,6 +1902,7 @@ public class PurpurWorldConfig { +@@ -1795,6 +1898,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2027,7 +2027,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean snowGolemRidable = false; -@@ -1813,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1809,6 +1913,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2035,7 +2035,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1831,6 +1936,7 @@ public class PurpurWorldConfig { +@@ -1827,6 +1932,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2043,7 +2043,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean snifferRidable = false; -@@ -1855,6 +1961,7 @@ public class PurpurWorldConfig { +@@ -1851,6 +1957,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2051,7 +2051,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1868,6 +1975,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1971,7 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2059,7 +2059,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean spiderRidable = false; -@@ -1875,6 +1983,7 @@ public class PurpurWorldConfig { +@@ -1871,6 +1979,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; @@ -2067,7 +2067,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1886,6 +1995,7 @@ public class PurpurWorldConfig { +@@ -1882,6 +1991,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); @@ -2075,7 +2075,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean strayRidable = false; -@@ -1893,6 +2003,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +1999,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; @@ -2083,7 +2083,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1904,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1900,6 +2011,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); @@ -2091,7 +2091,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean striderRidable = false; -@@ -1913,6 +2025,7 @@ public class PurpurWorldConfig { +@@ -1909,6 +2021,7 @@ public class PurpurWorldConfig { public double striderScale = 1.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2099,7 +2099,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1926,6 +2039,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +2035,7 @@ public class PurpurWorldConfig { striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2107,7 +2107,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean tadpoleRidable = false; -@@ -1947,6 +2061,7 @@ public class PurpurWorldConfig { +@@ -1943,6 +2057,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2115,7 +2115,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1965,12 +2080,14 @@ public class PurpurWorldConfig { +@@ -1961,12 +2076,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2130,7 +2130,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1981,6 +2098,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2094,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); @@ -2138,7 +2138,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean turtleRidable = false; -@@ -1989,6 +2107,7 @@ public class PurpurWorldConfig { +@@ -1985,6 +2103,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; @@ -2146,7 +2146,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2001,6 +2120,7 @@ public class PurpurWorldConfig { +@@ -1997,6 +2116,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2154,7 +2154,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean vexRidable = false; -@@ -2009,6 +2129,7 @@ public class PurpurWorldConfig { +@@ -2005,6 +2125,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; @@ -2162,7 +2162,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2021,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2017,6 +2138,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); @@ -2170,7 +2170,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean villagerRidable = false; -@@ -2035,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2153,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2178,7 +2178,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2053,6 +2176,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2172,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2186,7 +2186,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean vindicatorRidable = false; -@@ -2061,6 +2185,7 @@ public class PurpurWorldConfig { +@@ -2057,6 +2181,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2194,7 +2194,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2073,6 +2198,7 @@ public class PurpurWorldConfig { +@@ -2069,6 +2194,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2202,7 +2202,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean wanderingTraderRidable = false; -@@ -2082,6 +2208,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2204,7 @@ public class PurpurWorldConfig { public double wanderingTraderScale = 1.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2210,7 +2210,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2095,6 +2222,7 @@ public class PurpurWorldConfig { +@@ -2091,6 +2218,7 @@ public class PurpurWorldConfig { wanderingTraderScale = Mth.clamp(getDouble("mobs.wandering_trader.attributes.scale", wanderingTraderScale), 0.0625D, 16.0D); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2218,7 +2218,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean wardenRidable = false; -@@ -2111,6 +2239,7 @@ public class PurpurWorldConfig { +@@ -2107,6 +2235,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; @@ -2226,7 +2226,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2122,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2118,6 +2247,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); @@ -2234,7 +2234,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean witherRidable = false; -@@ -2133,6 +2263,7 @@ public class PurpurWorldConfig { +@@ -2129,6 +2259,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2242,7 +2242,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2152,6 +2283,7 @@ public class PurpurWorldConfig { +@@ -2148,6 +2279,7 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2250,7 +2250,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean witherSkeletonRidable = false; -@@ -2159,6 +2291,7 @@ public class PurpurWorldConfig { +@@ -2155,6 +2287,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; @@ -2258,7 +2258,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2170,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2166,6 +2299,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); @@ -2266,7 +2266,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean wolfRidable = false; -@@ -2181,6 +2315,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2311,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2274,7 +2274,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2200,6 +2335,7 @@ public class PurpurWorldConfig { +@@ -2196,6 +2331,7 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2282,7 +2282,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean zoglinRidable = false; -@@ -2207,6 +2343,7 @@ public class PurpurWorldConfig { +@@ -2203,6 +2339,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; @@ -2290,7 +2290,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2218,6 +2355,7 @@ public class PurpurWorldConfig { +@@ -2214,6 +2351,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); @@ -2298,7 +2298,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean zombieRidable = false; -@@ -2231,6 +2369,7 @@ public class PurpurWorldConfig { +@@ -2227,6 +2365,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2306,7 +2306,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2248,6 +2387,7 @@ public class PurpurWorldConfig { +@@ -2244,6 +2383,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2314,7 +2314,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean zombieHorseRidable = false; -@@ -2260,6 +2400,7 @@ public class PurpurWorldConfig { +@@ -2256,6 +2396,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2322,7 +2322,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2277,6 +2418,7 @@ public class PurpurWorldConfig { +@@ -2273,6 +2414,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2330,7 +2330,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean zombieVillagerRidable = false; -@@ -2288,6 +2430,7 @@ public class PurpurWorldConfig { +@@ -2284,6 +2426,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2338,7 +2338,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2303,6 +2446,7 @@ public class PurpurWorldConfig { +@@ -2299,6 +2442,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2346,7 +2346,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 } public boolean zombifiedPiglinRidable = false; -@@ -2315,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2311,6 +2455,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2354,7 +2354,7 @@ index e65d5ce9833e4e949290016d0a85eff329dcd2e8..a4402d7f5385a3f3db6b7e6d928db4a9 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2331,5 +2476,6 @@ public class PurpurWorldConfig { +@@ -2327,5 +2472,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0126-Config-to-always-tame-in-Creative.patch b/patches/server/0126-Config-to-always-tame-in-Creative.patch index 8456aa5e1..7309873b6 100644 --- a/patches/server/0126-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0126-Config-to-always-tame-in-Creative.patch @@ -59,7 +59,7 @@ index b6602362b7b450749ae1768572658b756c4e7840..2949adfbe7c71d552a4afb6aca1c166a this.navigation.stop(); this.setTarget((LivingEntity) null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4402d7f5385a3f3db6b7e6d928db4a97e3d4897..8cab49bd3c087afddeec1c90e03ca8df51c7d04c 100644 +index 886203f69ec02774ef82f53d8649fa1f991a8a0f..6af8eb71bf32431ba33b206adaece0bcb4dceb80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { @@ -70,7 +70,7 @@ index a4402d7f5385a3f3db6b7e6d928db4a97e3d4897..8cab49bd3c087afddeec1c90e03ca8df public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; -@@ -138,6 +139,7 @@ public class PurpurWorldConfig { +@@ -136,6 +137,7 @@ public class PurpurWorldConfig { public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0127-End-crystal-explosion-options.patch b/patches/server/0127-End-crystal-explosion-options.patch index 6c119fb04..9d9aa1d90 100644 --- a/patches/server/0127-End-crystal-explosion-options.patch +++ b/patches/server/0127-End-crystal-explosion-options.patch @@ -53,10 +53,10 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8cab49bd3c087afddeec1c90e03ca8df51c7d04c..7ffe7d46a8c7956bad8c0135c61bec3560060488 100644 +index 6af8eb71bf32431ba33b206adaece0bcb4dceb80..5690cf9b5219076c907b70b2788a7ff9cc68682b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -462,6 +462,43 @@ public class PurpurWorldConfig { +@@ -458,6 +458,43 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index bd8d87582..bb22f59f3 100644 --- a/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 6fedac6f92193d7031b6265f897d9688fd2c8780..8809b88dec7beffa569de6832f5b4581 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583949b4f69 100644 +index 5690cf9b5219076c907b70b2788a7ff9cc68682b..abd4e0b1b81c6071cba1d057732f594d53c184f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1003,6 +1003,7 @@ public class PurpurWorldConfig { +@@ -999,6 +999,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -1021,6 +1022,7 @@ public class PurpurWorldConfig { +@@ -1017,6 +1018,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583 } public boolean endermanRidable = false; -@@ -2303,6 +2305,7 @@ public class PurpurWorldConfig { +@@ -2299,6 +2301,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 7ffe7d46a8c7956bad8c0135c61bec3560060488..084298bf0c45f22e7d0ebe0ee15b8583 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2323,6 +2326,7 @@ public class PurpurWorldConfig { +@@ -2319,6 +2322,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0129-Dont-run-with-scissors.patch b/patches/server/0129-Dont-run-with-scissors.patch index 1fff19117..5331cd93b 100644 --- a/patches/server/0129-Dont-run-with-scissors.patch +++ b/patches/server/0129-Dont-run-with-scissors.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Dont run with scissors! inspired by https://modrinth.com/mod/dont-run-with-scissors diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 11044fe9adb311c423e570af50cb02aa43990106..747da684de2611e56c58617c2cf42547796c9660 100644 +index bbec4b963ca4b0804bce0c4cde49e1e88c0ae9f0..b7f8499cabbd28c0679d0c775b009c9cdf53b5f8 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1654,6 +1654,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -124,7 +124,7 @@ index e34584e4780f343d6c946af5377088d53818e88e..da790aac3bd8981f351b7e241015ff42 return this.inFire; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e74bd0239 100644 +index fb9f03ec90e5e5ed17886dc4e6443bd7b7d1fe32..50e8d2d54ce383f8c569ff2688c65b2a2db9f896 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -185,6 +185,7 @@ public class PurpurConfig { @@ -149,10 +149,10 @@ index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 084298bf0c45f22e7d0ebe0ee15b8583949b4f69..018a87f5435fa47b617a1df319450e3e0802df00 100644 +index abd4e0b1b81c6071cba1d057732f594d53c184f3..8679ba225faac9f332907256c2dee8fb25b13f60 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -194,6 +194,10 @@ public class PurpurWorldConfig { +@@ -190,6 +190,10 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -163,7 +163,7 @@ index 084298bf0c45f22e7d0ebe0ee15b8583949b4f69..018a87f5435fa47b617a1df319450e3e private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -231,6 +235,10 @@ public class PurpurWorldConfig { +@@ -227,6 +231,10 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0130-One-Punch-Man.patch b/patches/server/0130-One-Punch-Man.patch index 213903a50..7554f5863 100644 --- a/patches/server/0130-One-Punch-Man.patch +++ b/patches/server/0130-One-Punch-Man.patch @@ -6,7 +6,7 @@ Subject: [PATCH] One Punch Man! inspired by https://modrinth.com/mod/creative-one-punch diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6c25dabd8a70b788bc2709c272988cadc9e0b089..1cd5def5b2c976ddb63e0b323be9920232ea016f 100644 +index 4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57..7a99319d6ac85fd794fef361dd6f8092b847c744 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1441,6 +1441,24 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -35,10 +35,10 @@ index 6c25dabd8a70b788bc2709c272988cadc9e0b089..1cd5def5b2c976ddb63e0b323be99202 float f1 = amount; final float originalAmount = f1; // Paper - revert to vanilla #hurt - OBFHELPER boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 018a87f5435fa47b617a1df319450e3e0802df00..bed992248d7ab9753c661ae0e0ac3041609361bd 100644 +index 8679ba225faac9f332907256c2dee8fb25b13f60..cbd0064a469c1d4add4bde06358f8e16ba33dfcf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -341,6 +341,7 @@ public class PurpurWorldConfig { +@@ -337,6 +337,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index 018a87f5435fa47b617a1df319450e3e0802df00..bed992248d7ab9753c661ae0e0ac3041 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -357,6 +358,7 @@ public class PurpurWorldConfig { +@@ -353,6 +354,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 9766f381b..c698afa1a 100644 --- a/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff // Paper end - PlayerLaunchProjectileEvent if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bed992248d7ab9753c661ae0e0ac3041609361bd..7417fcbc7bf1b9da029e674564e2923a3ea3ab62 100644 +index cbd0064a469c1d4add4bde06358f8e16ba33dfcf..85c866dc2e82126c854e609e810a92e2dccbbb16 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -198,6 +198,10 @@ public class PurpurWorldConfig { +@@ -194,6 +194,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index bed992248d7ab9753c661ae0e0ac3041609361bd..7417fcbc7bf1b9da029e674564e2923a private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -239,6 +243,10 @@ public class PurpurWorldConfig { +@@ -235,6 +239,10 @@ public class PurpurWorldConfig { ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater); ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch index 42741c643..ec67c1237 100644 --- a/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 578809e48dc52dcde5866672291d70168a09811c..750f5304a9210ce56ec42a2e0d311717bd15d394 100644 +index d677c1308412e5a12046225ce2449af136b7665f..513ab3d7d3ff4fe0a5c9c609ca752357b2d8055a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1529,7 +1529,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -18,10 +18,10 @@ index 578809e48dc52dcde5866672291d70168a09811c..750f5304a9210ce56ec42a2e0d311717 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7417fcbc7bf1b9da029e674564e2923a3ea3ab62..4eaaa65b907ac6747f5299c5e4979bae6e8b9d06 100644 +index 85c866dc2e82126c854e609e810a92e2dccbbb16..7b86ec71e8cf59561b494864b4c5eea34a1954ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -350,6 +350,7 @@ public class PurpurWorldConfig { +@@ -346,6 +346,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 7417fcbc7bf1b9da029e674564e2923a3ea3ab62..4eaaa65b907ac6747f5299c5e4979bae private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -367,6 +368,7 @@ public class PurpurWorldConfig { +@@ -363,6 +364,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch index 0e66a2e51..73bc464e0 100644 --- a/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index d4360a62cc2514dafc02749e49674213db65cc85..22583cdb173862b021c9701d26171ca3 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4eaaa65b907ac6747f5299c5e4979bae6e8b9d06..fadcd9822e4a19b4e0e4884805ec3ee793318e05 100644 +index 7b86ec71e8cf59561b494864b4c5eea34a1954ad..96ff0103788c002ff8a0e58cb85ca382e6c0ad57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1054,6 +1054,8 @@ public class PurpurWorldConfig { +@@ -1050,6 +1050,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 4eaaa65b907ac6747f5299c5e4979bae6e8b9d06..fadcd9822e4a19b4e0e4884805ec3ee7 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1063,12 +1065,18 @@ public class PurpurWorldConfig { +@@ -1059,12 +1061,18 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 8637e6d6c..6dd8cf0e7 100644 --- a/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index 22583cdb173862b021c9701d26171ca337796557..65c7bf88071dda62034d71b6a83caedd } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fadcd9822e4a19b4e0e4884805ec3ee793318e05..8eb86d2ae656f28bb0976218c53af40b14e0dbdd 100644 +index 96ff0103788c002ff8a0e58cb85ca382e6c0ad57..715ee6cfd559a0c1ce58b81cfa686b3057f05924 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1056,6 +1056,8 @@ public class PurpurWorldConfig { +@@ -1052,6 +1052,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index fadcd9822e4a19b4e0e4884805ec3ee793318e05..8eb86d2ae656f28bb0976218c53af40b private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1077,6 +1079,8 @@ public class PurpurWorldConfig { +@@ -1073,6 +1075,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0136-Tick-fluids-config.patch b/patches/server/0136-Tick-fluids-config.patch index cd2548b0a..79425181e 100644 --- a/patches/server/0136-Tick-fluids-config.patch +++ b/patches/server/0136-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8eb86d2ae656f28bb0976218c53af40b14e0dbdd..167edac3a00fc097b55ac2e6b8e43b47d2593891 100644 +index 715ee6cfd559a0c1ce58b81cfa686b3057f05924..7aa0a24044e552565954dfa964686f69f924caf1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -132,6 +132,7 @@ public class PurpurWorldConfig { @@ -45,13 +45,13 @@ index 8eb86d2ae656f28bb0976218c53af40b14e0dbdd..167edac3a00fc097b55ac2e6b8e43b47 public boolean projectilesBypassMobGriefing = false; + public boolean tickFluids = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; -@@ -153,6 +154,7 @@ public class PurpurWorldConfig { + public int raidCooldownSeconds = 0; + public int animalBreedingCooldownSeconds = 0; +@@ -151,6 +152,7 @@ public class PurpurWorldConfig { noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); + tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0137-Config-to-disable-Llama-caravans.patch b/patches/server/0137-Config-to-disable-Llama-caravans.patch index ef35019fd..a1265e399 100644 --- a/patches/server/0137-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0137-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 167edac3a00fc097b55ac2e6b8e43b47d2593891..46a52af0755263bba845fee1e251423efbc7d2ae 100644 +index 7aa0a24044e552565954dfa964686f69f924caf1..98b7e8b378a4f881b0389e24ba92d72e35b273f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1409,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 167edac3a00fc097b55ac2e6b8e43b47d2593891..46a52af0755263bba845fee1e251423e private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1432,6 +1433,7 @@ public class PurpurWorldConfig { +@@ -1428,6 +1429,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch index e454ba052..d99468a1a 100644 --- a/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0138-Config-to-make-Creepers-explode-on-death.patch @@ -52,10 +52,10 @@ index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb63894 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46a52af0755263bba845fee1e251423efbc7d2ae..b4d5bf7483366df8515ecd7dbb27415ba8325b45 100644 +index 98b7e8b378a4f881b0389e24ba92d72e35b273f0..83d3bff6e0804f1270798227839af93696de1c55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -900,6 +900,7 @@ public class PurpurWorldConfig { +@@ -896,6 +896,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -63,7 +63,7 @@ index 46a52af0755263bba845fee1e251423efbc7d2ae..b4d5bf7483366df8515ecd7dbb27415b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -915,6 +916,7 @@ public class PurpurWorldConfig { +@@ -911,6 +912,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch index d34493766..c71420acf 100644 --- a/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b4d5bf7483366df8515ecd7dbb27415ba8325b45..34011e65a7bcb8e6a57cdb8776293389ea662b39 100644 +index 83d3bff6e0804f1270798227839af93696de1c55..919c30991d510f95007c18b569cb6cb2c657027b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1808,6 +1808,7 @@ public class PurpurWorldConfig { +@@ -1804,6 +1804,7 @@ public class PurpurWorldConfig { public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index b4d5bf7483366df8515ecd7dbb27415ba8325b45..34011e65a7bcb8e6a57cdb8776293389 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1821,6 +1822,23 @@ public class PurpurWorldConfig { +@@ -1817,6 +1818,23 @@ public class PurpurWorldConfig { ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0140-Sneak-to-bulk-process-composter.patch b/patches/server/0140-Sneak-to-bulk-process-composter.patch index d0e6f587e..11f1e369c 100644 --- a/patches/server/0140-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0140-Sneak-to-bulk-process-composter.patch @@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34011e65a7bcb8e6a57cdb8776293389ea662b39..d1f5a8e74af76ee10c70598a45ff7b7aeab5139f 100644 +index 919c30991d510f95007c18b569cb6cb2c657027b..05ef6e0f31d6a37a9e8cea2f228ae101d7350bb2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -477,6 +477,11 @@ public class PurpurWorldConfig { +@@ -473,6 +473,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0141-Config-for-skipping-night.patch b/patches/server/0141-Config-for-skipping-night.patch index 64a06d47d..62aa8439b 100644 --- a/patches/server/0141-Config-for-skipping-night.patch +++ b/patches/server/0141-Config-for-skipping-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a13ad5fd51e6c5643955b228c2411d60ff24d02b..9937cdc35114e5e23d57425267c956c50b843446 100644 +index e077c6cb1880ee19e696d2430b07d1101e330919..40a5107d37e908d13bd0307fc41d9a6e3faf1217 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -661,7 +661,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -18,10 +18,10 @@ index a13ad5fd51e6c5643955b228c2411d60ff24d02b..9937cdc35114e5e23d57425267c956c5 j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1f5a8e74af76ee10c70598a45ff7b7aeab5139f..9db6f638cf9d8f41dcbe956108c02081b4380c6c 100644 +index 05ef6e0f31d6a37a9e8cea2f228ae101d7350bb2..2b316fddbed11ee439a9ca47d9915c76422426b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -353,6 +353,7 @@ public class PurpurWorldConfig { +@@ -349,6 +349,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index d1f5a8e74af76ee10c70598a45ff7b7aeab5139f..9db6f638cf9d8f41dcbe956108c02081 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -371,6 +372,7 @@ public class PurpurWorldConfig { +@@ -367,6 +368,7 @@ public class PurpurWorldConfig { playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/server/0142-Add-config-for-villager-trading.patch b/patches/server/0142-Add-config-for-villager-trading.patch index e37ca29c7..298ab84c1 100644 --- a/patches/server/0142-Add-config-for-villager-trading.patch +++ b/patches/server/0142-Add-config-for-villager-trading.patch @@ -32,10 +32,10 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247 return InteractionResult.sidedSuccess(this.level().isClientSide); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aaefcaddfd6 100644 +index 2b316fddbed11ee439a9ca47d9915c76422426b7..e321173b116c1228e56b70445402d4c87f40412c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2262,6 +2262,7 @@ public class PurpurWorldConfig { +@@ -2258,6 +2258,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aae private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2281,6 +2282,7 @@ public class PurpurWorldConfig { +@@ -2277,6 +2278,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -51,7 +51,7 @@ index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aae } public boolean vindicatorRidable = false; -@@ -2313,6 +2315,7 @@ public class PurpurWorldConfig { +@@ -2309,6 +2311,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 9db6f638cf9d8f41dcbe956108c02081b4380c6c..fad95eb77677ff644a3dcf76dcf02aae private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2327,6 +2330,7 @@ public class PurpurWorldConfig { +@@ -2323,6 +2326,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0143-Drowning-Settings.patch b/patches/server/0143-Drowning-Settings.patch index 49cf59169..67fb530ee 100644 --- a/patches/server/0143-Drowning-Settings.patch +++ b/patches/server/0143-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 73cac6256baa32b0dbd47f06444adda2fc4e0fc1..cc4bb21903a44a7a06176274bfdaddd3626f78c7 100644 +index 901080dd8431b83b20aa5604e931519dcba82b22..657980c6c82b6a50ee9874f4aeb483b40dc24247 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3491,7 +3491,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3493,7 +3493,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index 73cac6256baa32b0dbd47f06444adda2fc4e0fc1..cc4bb21903a44a7a06176274bfdaddd3 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1cd5def5b2c976ddb63e0b323be9920232ea016f..0302585bd2d024aef9414b7b99c70831336194c5 100644 +index 7a99319d6ac85fd794fef361dd6f8092b847c744..d4ba4752b04ad3d1a8133c56144800af756f4aa6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -473,7 +473,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -40,10 +40,10 @@ index 1cd5def5b2c976ddb63e0b323be9920232ea016f..0302585bd2d024aef9414b7b99c70831 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fad95eb77677ff644a3dcf76dcf02aaefcaddfd6..d54bb97b4402cfa6fc8a1af58693dc37d73101d1 100644 +index e321173b116c1228e56b70445402d4c87f40412c..88f7a1fd41c25946110a3b4216da07ff7e81a540 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -169,6 +169,15 @@ public class PurpurWorldConfig { +@@ -165,6 +165,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0144-Break-individual-slabs-when-sneaking.patch b/patches/server/0144-Break-individual-slabs-when-sneaking.patch index e21e7cdeb..1fb9571b3 100644 --- a/patches/server/0144-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0144-Break-individual-slabs-when-sneaking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 9c035bfd8c75561886d5ff63f1df4acca6f71595..fe734df8b4521101c3e55c042957a531b3bdf945 100644 +index 09ab1904ea9c587f365513150dafe434a0b56ccf..d3c49951c0bd7db4352326d3113f0ca9da393fab 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -405,6 +405,7 @@ public class ServerPlayerGameMode { @@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d54bb97b4402cfa6fc8a1af58693dc37d73101d1..2e52cee2fb2c4e0d01e47d1cc485a72e027f0dd2 100644 +index 88f7a1fd41c25946110a3b4216da07ff7e81a540..747b53ea090bc4576e56b730716e505b584533c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -598,6 +598,11 @@ public class PurpurWorldConfig { +@@ -594,6 +594,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch index cfacda790..d5e93b3c7 100644 --- a/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index e7bfce0534c7ef3a1480a1082ae8514caf78778b..6511b8c737a57fbc72122dd04e2b5449 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e52cee2fb2c4e0d01e47d1cc485a72e027f0dd2..b5abcab534811be6dde85b41bbfc9a6dc09c9d3b 100644 +index 747b53ea090bc4576e56b730716e505b584533c6..f1709961989bbf75b3cca233d6304015e82e215b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -563,6 +563,13 @@ public class PurpurWorldConfig { +@@ -559,6 +559,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0147-Option-to-make-doors-require-redstone.patch b/patches/server/0147-Option-to-make-doors-require-redstone.patch index 227a1dcce..887f6ac43 100644 --- a/patches/server/0147-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0147-Option-to-make-doors-require-redstone.patch @@ -82,10 +82,10 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38fa2e38d3b83a95c0d8b9cd1cd37df9127dd1f8..7e3ba83828654d33603869ea9fce1473ab87cc4a 100644 +index 81569ed7250e2b4183727ee503f554d07eaaf4aa..c9ab556b3789866e4ec85fe785ad0d73abfb273e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -502,6 +502,16 @@ public class PurpurWorldConfig { +@@ -498,6 +498,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0149-Configurable-sponge-absorption.patch b/patches/server/0149-Configurable-sponge-absorption.patch index 8820d6a57..7bdca04e4 100644 --- a/patches/server/0149-Configurable-sponge-absorption.patch +++ b/patches/server/0149-Configurable-sponge-absorption.patch @@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e3ba83828654d33603869ea9fce1473ab87cc4a..7f492cd27bd3e4031aef82bb0c20dfcc2a433dfc 100644 +index c9ab556b3789866e4ec85fe785ad0d73abfb273e..35a9b154f5e66cc6ec3298130a5e619056bae59d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -627,6 +627,13 @@ public class PurpurWorldConfig { +@@ -623,6 +623,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0150-Projectile-offset-config.patch b/patches/server/0150-Projectile-offset-config.patch index 75a6a8080..3ec43ddc4 100644 --- a/patches/server/0150-Projectile-offset-config.patch +++ b/patches/server/0150-Projectile-offset-config.patch @@ -18,7 +18,7 @@ index 4db2032178471860baddc6b669c9a4f8cffd084b..fc534b1f214663eb8e4fe479fed12b1d world.playSound( diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index c39fa953accd6cf35672f452052cca42fe6f29d0..dbdd1cd9486d91142e1c6b8a34aafba46c3988d3 100644 +index 1467e6f2df302e0b7992dcb6c136cb626ade3d2b..4e60c2102e3e838c68e4b9db41c8bca365d22923 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java @@ -69,7 +69,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -96,10 +96,10 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f492cd27bd3e4031aef82bb0c20dfcc2a433dfc..98847a1b630faf901eed10e5e7143d8af4f66533 100644 +index 35a9b154f5e66cc6ec3298130a5e619056bae59d..937cc90c18d42c51f709c138f0429ad4823e2141 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -452,6 +452,23 @@ public class PurpurWorldConfig { +@@ -448,6 +448,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0151-Config-for-powered-rail-activation-distance.patch b/patches/server/0151-Config-for-powered-rail-activation-distance.patch index ac67390f2..ce269a20a 100644 --- a/patches/server/0151-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0151-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98847a1b630faf901eed10e5e7143d8af4f66533..ef748ba2004601399fc47239e2fe093d89491c4f 100644 +index 937cc90c18d42c51f709c138f0429ad4823e2141..88578ee2664867594084551d6e2e937bd6dbbfcf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -613,6 +613,11 @@ public class PurpurWorldConfig { +@@ -609,6 +609,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0152-Piglin-portal-spawn-modifier.patch b/patches/server/0152-Piglin-portal-spawn-modifier.patch index 088d7c9c9..c53641f4a 100644 --- a/patches/server/0152-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0152-Piglin-portal-spawn-modifier.patch @@ -18,7 +18,7 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index e170176497b833e9addbdc652edcc074e598d26a..c3f37df133250e1a948f3b58d432fbee83a3c2e3 100644 +index e8cccf3d89ecef13c0523c2357ef4b07e30a25b4..971dd866fe5d6fcef573cb52582ccb7faf01b2f1 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -77,7 +77,7 @@ public class NetherPortalBlock extends Block implements Portal { @@ -31,10 +31,10 @@ index e170176497b833e9addbdc652edcc074e598d26a..c3f37df133250e1a948f3b58d432fbee pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef748ba2004601399fc47239e2fe093d89491c4f..99a0b3d9f0ca86112bdfd727a72a2facbf60b3da 100644 +index 88578ee2664867594084551d6e2e937bd6dbbfcf..b7a69af173d0dafabcde6f5267c6312fedbe0d4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1740,6 +1740,7 @@ public class PurpurWorldConfig { +@@ -1736,6 +1736,7 @@ public class PurpurWorldConfig { public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index ef748ba2004601399fc47239e2fe093d89491c4f..99a0b3d9f0ca86112bdfd727a72a2fac private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1753,6 +1754,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1750,7 @@ public class PurpurWorldConfig { piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0154-Config-for-wither-explosion-radius.patch b/patches/server/0154-Config-for-wither-explosion-radius.patch index 72550a2b9..11bde59ac 100644 --- a/patches/server/0154-Config-for-wither-explosion-radius.patch +++ b/patches/server/0154-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index e472df057d087fe46bd40b798c050ed6e38a283c..999453409c19abf7f5b5c2dc39969985 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 99a0b3d9f0ca86112bdfd727a72a2facbf60b3da..a38c503ba822dee75720d021c17c4a7651bac2c7 100644 +index b7a69af173d0dafabcde6f5267c6312fedbe0d4b..9506f919b600472cef27532b2b11839abc39a14e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2437,6 +2437,7 @@ public class PurpurWorldConfig { +@@ -2433,6 +2433,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 99a0b3d9f0ca86112bdfd727a72a2facbf60b3da..a38c503ba822dee75720d021c17c4a76 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2458,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2454,6 +2455,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0156-Configurable-piston-push-limit.patch b/patches/server/0156-Configurable-piston-push-limit.patch index 8226de57c..f1a76ae8d 100644 --- a/patches/server/0156-Configurable-piston-push-limit.patch +++ b/patches/server/0156-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a38c503ba822dee75720d021c17c4a7651bac2c7..1ceec45b0ba2bdb20817ec4a57b58023751dc90f 100644 +index 9506f919b600472cef27532b2b11839abc39a14e..1e8212ef70684ebac8a96a48e6424ba0fe40aaf7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -608,6 +608,11 @@ public class PurpurWorldConfig { +@@ -604,6 +604,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0158-Configurable-mob-blindness.patch b/patches/server/0158-Configurable-mob-blindness.patch index 9c07e0b58..a75486b02 100644 --- a/patches/server/0158-Configurable-mob-blindness.patch +++ b/patches/server/0158-Configurable-mob-blindness.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0302585bd2d024aef9414b7b99c70831336194c5..0b488f45c7f259ced70004909077bc5a15191580 100644 +index d4ba4752b04ad3d1a8133c56144800af756f4aa6..b0d9f432eb9ebaf88196de4f1329ef530b422ca0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1042,6 +1042,17 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,7 +28,7 @@ index 0302585bd2d024aef9414b7b99c70831336194c5..0b488f45c7f259ced70004909077bc5a return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ceec45b0ba2bdb20817ec4a57b58023751dc90f..126476ae43733e86b0825ea3fef2620954a10720 100644 +index 1e8212ef70684ebac8a96a48e6424ba0fe40aaf7..631829589cd84d545e911e92c5f845da3e6266e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -135,6 +135,7 @@ public class PurpurWorldConfig { @@ -37,13 +37,13 @@ index 1ceec45b0ba2bdb20817ec4a57b58023751dc90f..126476ae43733e86b0825ea3fef26209 public boolean tickFluids = true; + public double mobsBlindnessMultiplier = 1; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; -@@ -157,6 +158,7 @@ public class PurpurWorldConfig { + public int raidCooldownSeconds = 0; + public int animalBreedingCooldownSeconds = 0; +@@ -155,6 +156,7 @@ public class PurpurWorldConfig { persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); + mobsBlindnessMultiplier = getDouble("gameplay-mechanics.entity-blindness-multiplier", mobsBlindnessMultiplier); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch index 5168d551d..d8c96fe1b 100644 --- a/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 902191001a7302872ff661564fb6389457abaa9c..1769c1d31bb68904be426e1069266cec // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 126476ae43733e86b0825ea3fef2620954a10720..b760d2ecda916e9797422d2be96dd433d2bc711b 100644 +index 631829589cd84d545e911e92c5f845da3e6266e3..a864602ce60b06bcaa388d7d141f20290becb1ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -977,6 +977,7 @@ public class PurpurWorldConfig { +@@ -973,6 +973,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 126476ae43733e86b0825ea3fef2620954a10720..b760d2ecda916e9797422d2be96dd433 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -993,6 +994,7 @@ public class PurpurWorldConfig { +@@ -989,6 +990,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0161-Iron-golem-calm-anger-options.patch b/patches/server/0161-Iron-golem-calm-anger-options.patch index 68bea615a..da0f0575e 100644 --- a/patches/server/0161-Iron-golem-calm-anger-options.patch +++ b/patches/server/0161-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 0cf985cac3279c0cb6255f02b76a5012027cae99..446a2795aa8f2ddf472f8b379534978f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b760d2ecda916e9797422d2be96dd433d2bc711b..8217119bee2fc38567dd583b3c2c6c15d2a67893 100644 +index a864602ce60b06bcaa388d7d141f20290becb1ad..46f84f77582a8976499444acd1b4d6e5d3ff847e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1467,6 +1467,8 @@ public class PurpurWorldConfig { +@@ -1463,6 +1463,8 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index b760d2ecda916e9797422d2be96dd433d2bc711b..8217119bee2fc38567dd583b3c2c6c15 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1480,6 +1482,8 @@ public class PurpurWorldConfig { +@@ -1476,6 +1478,8 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0162-Breedable-parrots.patch b/patches/server/0162-Breedable-parrots.patch index c02b0cc79..139feeb86 100644 --- a/patches/server/0162-Breedable-parrots.patch +++ b/patches/server/0162-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 884fc114ef70d49fd0d64fcea46fb277950962a1..4fa32a6406e3158369064d39160e4850 @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8217119bee2fc38567dd583b3c2c6c15d2a67893..43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5 100644 +index 46f84f77582a8976499444acd1b4d6e5d3ff847e..ba21f6e268d33c51387a47ecc6ccd59bdad1da4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1645,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1641,6 +1641,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 8217119bee2fc38567dd583b3c2c6c15d2a67893..43a7cc0a29b1dfa29b5d54a2d5e459a8 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1658,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1654,6 +1655,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0163-Configurable-powered-rail-boost-modifier.patch b/patches/server/0163-Configurable-powered-rail-boost-modifier.patch index 44d588654..785eaa24f 100644 --- a/patches/server/0163-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0163-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index d7bcfca8c79cc172bb7e4aaeee76ff393d1d2bea..8b1c00062a5272d1020bc85491d8627c Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5..d275a24a3017335f147f08b4f71cdcd71435d4bd 100644 +index ba21f6e268d33c51387a47ecc6ccd59bdad1da4d..9805e85c10f6b92e3c7e109b9e7a3b0a2240b746 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -272,6 +272,7 @@ public class PurpurWorldConfig { +@@ -268,6 +268,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index 43a7cc0a29b1dfa29b5d54a2d5e459a8354cf3a5..d275a24a3017335f147f08b4f71cdcd7 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -324,6 +325,7 @@ public class PurpurWorldConfig { +@@ -320,6 +321,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch index b4eae6ad9..0635e1648 100644 --- a/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 33c1b2b387e7412a001841d1bcbb3966c188c1a3..40cf2eb78b02adc15e44189021005f14 float f3 = f + f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d275a24a3017335f147f08b4f71cdcd71435d4bd..dfb38ec06614a8ef5a5a3b26f61bd68aeaec9519 100644 +index 9805e85c10f6b92e3c7e109b9e7a3b0a2240b746..5a7a7e184789ea29c56fa36735b06c41be04650e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -369,6 +369,7 @@ public class PurpurWorldConfig { +@@ -365,6 +365,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index d275a24a3017335f147f08b4f71cdcd71435d4bd..dfb38ec06614a8ef5a5a3b26f61bd68a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -388,6 +389,7 @@ public class PurpurWorldConfig { +@@ -384,6 +385,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch index 003d4cd02..fe39aab5e 100644 --- a/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dfb38ec06614a8ef5a5a3b26f61bd68aeaec9519..957307bb75b7dbc3b47bb24b8f4c720ecb9f004c 100644 +index 5a7a7e184789ea29c56fa36735b06c41be04650e..f79011b7b1a6113a01ff73418c9cf1ebdb0f194e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -535,6 +535,11 @@ public class PurpurWorldConfig { +@@ -531,6 +531,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch index cb8d61ccd..99d740bab 100644 --- a/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index fb84af3b1709101fa572d11a1c27970a316f2eab..5e982bab268746a05b97f5b9f7142254 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 957307bb75b7dbc3b47bb24b8f4c720ecb9f004c..9ab97792c94db16dfff6606ec33fd1c4db83180a 100644 +index f79011b7b1a6113a01ff73418c9cf1ebdb0f194e..514a56bdcb31c0bb0772bb003bb48a4fd8eabb50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -786,6 +786,8 @@ public class PurpurWorldConfig { +@@ -782,6 +782,8 @@ public class PurpurWorldConfig { public double beeScale = 1.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 957307bb75b7dbc3b47bb24b8f4c720ecb9f004c..9ab97792c94db16dfff6606ec33fd1c4 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -800,6 +802,8 @@ public class PurpurWorldConfig { +@@ -796,6 +798,8 @@ public class PurpurWorldConfig { beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0170-Config-MobEffect-by-world.patch b/patches/server/0170-Config-MobEffect-by-world.patch index 99265fa2d..fb0237fbf 100644 --- a/patches/server/0170-Config-MobEffect-by-world.patch +++ b/patches/server/0170-Config-MobEffect-by-world.patch @@ -72,10 +72,10 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9ab97792c94db16dfff6606ec33fd1c4db83180a..370a9911b16d7b37ebd4269b114a51c65a3aaf4b 100644 +index 514a56bdcb31c0bb0772bb003bb48a4fd8eabb50..a006f0be6f04ba77322c265ca976cdad9acf4a47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -328,6 +328,21 @@ public class PurpurWorldConfig { +@@ -324,6 +324,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0171-Beacon-Activation-Range-Configurable.patch b/patches/server/0171-Beacon-Activation-Range-Configurable.patch index f53021126..3f015c6f5 100644 --- a/patches/server/0171-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0171-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 814e70f558d7a6186233da0ff86c94c95d390e09..d1fb77d83d48183a9a37dbeec7bb0fda } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 370a9911b16d7b37ebd4269b114a51c65a3aaf4b..acaa994f3678dde7e6febc6061a2c23974dc7f11 100644 +index a006f0be6f04ba77322c265ca976cdad9acf4a47..1d7dad18adef4aa62192730869555cd6a70d4879 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -502,6 +502,17 @@ public class PurpurWorldConfig { +@@ -498,6 +498,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index dfadd0900..ddbbd0581 100644 --- a/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -55,10 +55,10 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..b702b7270fae8fafc39588fbc39b4e00 public void eat(int food, float saturationModifier) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index acaa994f3678dde7e6febc6061a2c23974dc7f11..900d1e7f87327d869516a3feac2d47e07bf62ca7 100644 +index 1d7dad18adef4aa62192730869555cd6a70d4879..f9204b2189f4dd635e18c2620e94552f2752fd1b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -385,6 +385,8 @@ public class PurpurWorldConfig { +@@ -381,6 +381,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -67,7 +67,7 @@ index acaa994f3678dde7e6febc6061a2c23974dc7f11..900d1e7f87327d869516a3feac2d47e0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -405,6 +407,8 @@ public class PurpurWorldConfig { +@@ -401,6 +403,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0176-Shulker-spawn-from-bullet-options.patch b/patches/server/0176-Shulker-spawn-from-bullet-options.patch index 39d287920..1f2baa6ab 100644 --- a/patches/server/0176-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0176-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 0d04a0107bd1a8a2b9aeb4be55025cd554e8fb79..a050d76233e179a1456b83ccc02bb9a5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 900d1e7f87327d869516a3feac2d47e07bf62ca7..674699477cbe2f1aa491488bbb95d819ba665707 100644 +index f9204b2189f4dd635e18c2620e94552f2752fd1b..d4c8cd37a40e90e071d1b5ebe51dab89a0c8de1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2018,6 +2018,11 @@ public class PurpurWorldConfig { +@@ -2014,6 +2014,11 @@ public class PurpurWorldConfig { public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 900d1e7f87327d869516a3feac2d47e07bf62ca7..674699477cbe2f1aa491488bbb95d819 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2030,6 +2035,11 @@ public class PurpurWorldConfig { +@@ -2026,6 +2031,11 @@ public class PurpurWorldConfig { shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch index bbaa2bf7e..4333493c1 100644 --- a/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 4eef61323ba54f513e6f251ef7c804b2c91ff477..6b2235281dca67a80cb651e9f8e9bf25 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 674699477cbe2f1aa491488bbb95d819ba665707..7ed6199800ae40e0f9af05e93e611ebb66c884e0 100644 +index d4c8cd37a40e90e071d1b5ebe51dab89a0c8de1e..0c44a9aeca00a4bf50f681beff60976be8ceddee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -217,6 +217,7 @@ public class PurpurWorldConfig { +@@ -213,6 +213,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 674699477cbe2f1aa491488bbb95d819ba665707..7ed6199800ae40e0f9af05e93e611ebb private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -262,6 +263,7 @@ public class PurpurWorldConfig { +@@ -258,6 +259,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0178-Option-to-make-drowned-break-doors.patch b/patches/server/0178-Option-to-make-drowned-break-doors.patch index b1a2a802c..61cbec969 100644 --- a/patches/server/0178-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0178-Option-to-make-drowned-break-doors.patch @@ -26,10 +26,10 @@ index 370f1b76c002f7cecf596767db717da51b2990f8..994dee36ce3aad3a0ef6a06bcaf555bd @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ed6199800ae40e0f9af05e93e611ebb66c884e0..9c93682cf57f7c90762775c564eabb6eadd25dc8 100644 +index 0c44a9aeca00a4bf50f681beff60976be8ceddee..f3b1f853890f04ff38c300d16dc74c9b5522b1f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1106,6 +1106,7 @@ public class PurpurWorldConfig { +@@ -1102,6 +1102,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 7ed6199800ae40e0f9af05e93e611ebb66c884e0..9c93682cf57f7c90762775c564eabb6e private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1122,6 +1123,7 @@ public class PurpurWorldConfig { +@@ -1118,6 +1119,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0179-Configurable-hunger-starvation-damage.patch b/patches/server/0179-Configurable-hunger-starvation-damage.patch index 8fbb2f869..52b90f72e 100644 --- a/patches/server/0179-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0179-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index b702b7270fae8fafc39588fbc39b4e0014809047..842a908051bdf6c5f0ef8ce3ac84a7ce this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c93682cf57f7c90762775c564eabb6eadd25dc8..58319128d7a22bc97bdb0cfbcfb8b9c4bb23a0db 100644 +index f3b1f853890f04ff38c300d16dc74c9b5522b1f8..8640e95511f576a46c21ca140eeaf8f11a6a6e26 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2726,4 +2726,9 @@ public class PurpurWorldConfig { +@@ -2722,4 +2722,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0182-Tool-actionable-options.patch b/patches/server/0182-Tool-actionable-options.patch index 701e3eccb..4217456f7 100644 --- a/patches/server/0182-Tool-actionable-options.patch +++ b/patches/server/0182-Tool-actionable-options.patch @@ -157,10 +157,10 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 58319128d7a22bc97bdb0cfbcfb8b9c4bb23a0db..f8625595d4a4b40bdf8207fbe67da8abff61f8a1 100644 +index 8640e95511f576a46c21ca140eeaf8f11a6a6e26..e9cbac796582e1a51a19658fd8a389ad5defa747 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -501,6 +501,280 @@ public class PurpurWorldConfig { +@@ -497,6 +497,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch index 78d2067d3..0c726a611 100644 --- a/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,10 +18,10 @@ index 3253361d91e2a2e68d354eaf3dd3e3cd486e191d..2649188930653610b8aaaeb18797c808 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8625595d4a4b40bdf8207fbe67da8abff61f8a1..a1ae495db2a382a3e546cc7ccbe203d08562aeb5 100644 +index e9cbac796582e1a51a19658fd8a389ad5defa747..dd5d45e3b8e9acf1231df71a812a3ba2c7fe6465 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -218,6 +218,7 @@ public class PurpurWorldConfig { +@@ -214,6 +214,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -29,7 +29,7 @@ index f8625595d4a4b40bdf8207fbe67da8abff61f8a1..a1ae495db2a382a3e546cc7ccbe203d0 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -264,6 +265,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0187-Big-dripleaf-tilt-delay.patch b/patches/server/0187-Big-dripleaf-tilt-delay.patch index dd09e49dc..80ccfd52b 100644 --- a/patches/server/0187-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0187-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1ae495db2a382a3e546cc7ccbe203d08562aeb5..5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea 100644 +index dd5d45e3b8e9acf1231df71a812a3ba2c7fe6465..85c96a67bf4c36b2e10cef1664e773ae2ea404b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -816,6 +816,22 @@ public class PurpurWorldConfig { +@@ -812,6 +812,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0188-Player-ridable-in-water-option.patch b/patches/server/0188-Player-ridable-in-water-option.patch index c27f2bfd0..d44b0416b 100644 --- a/patches/server/0188-Player-ridable-in-water-option.patch +++ b/patches/server/0188-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 09e1faae9c22c1062e3de5257c82b2d156e65b4f..05ed7bfd75a1e30d74b12a068303a786 if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea..3f94e8f226322710af2d169d5cb55afb0bc0926c 100644 +index 85c96a67bf4c36b2e10cef1664e773ae2ea404b7..9fbd76b73aa22b9bb6533ca5de5d54e9a51e70ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -391,6 +391,7 @@ public class PurpurWorldConfig { +@@ -387,6 +387,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index 5585f4b43a527aa3be74fb276c4e7cd1a90dc8ea..3f94e8f226322710af2d169d5cb55afb private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -413,6 +414,7 @@ public class PurpurWorldConfig { +@@ -409,6 +410,7 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 69ef30ba7..acbcbb773 100644 --- a/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index 65c7bf88071dda62034d71b6a83caedd49d0902a..ecd117f7e3b2136fcf49384819626fe7 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f94e8f226322710af2d169d5cb55afb0bc0926c..52771830dfc03dd48467d57bcdb07ee3b85ca9be 100644 +index 9fbd76b73aa22b9bb6533ca5de5d54e9a51e70ef..e92056e046ef3b428d933bcba39be37019c338a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1481,6 +1481,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1477,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 3f94e8f226322710af2d169d5cb55afb0bc0926c..52771830dfc03dd48467d57bcdb07ee3 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1504,6 +1505,7 @@ public class PurpurWorldConfig { +@@ -1500,6 +1501,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0190-Add-compass-command.patch b/patches/server/0190-Add-compass-command.patch index 8b3d8ba30..2b32a43b1 100644 --- a/patches/server/0190-Add-compass-command.patch +++ b/patches/server/0190-Add-compass-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 9f86a0397c0b64cb31dad245e2dc84d0fadd42d7..a66e2d78722847dec4e9d4aba8e6968ef009fcf4 100644 +index af5246b966f2322febb804a85e167ff580d2ab25..929835b74d539bb0af1bb99f23b50b79f457594e 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -255,6 +255,7 @@ public class Commands { @@ -59,7 +59,7 @@ index d1d1ceabdf6b0bd254fefd64e2504f0865e0c9b2..996bfac666762096fe322e54c2134bab // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7a6c920f2 100644 +index 76f1a2b5311f46cee6ce14cdf21eb98bc5d23e7b..b8683407a2c55eefb0d20bb71401e262885e7b9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -257,6 +257,11 @@ public class PurpurConfig { @@ -89,10 +89,10 @@ index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52771830dfc03dd48467d57bcdb07ee3b85ca9be..577aa009781c05e836feb7dbecb7b7aac44168e3 100644 +index e92056e046ef3b428d933bcba39be37019c338a1..67e8bd4ea24490fc5bf7c5b1a90baa44288a0095 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -219,6 +219,7 @@ public class PurpurWorldConfig { +@@ -215,6 +215,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 52771830dfc03dd48467d57bcdb07ee3b85ca9be..577aa009781c05e836feb7dbecb7b7aa private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -266,6 +267,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0191-Toggle-for-kinetic-damage.patch b/patches/server/0191-Toggle-for-kinetic-damage.patch index 9bc80fe42..12bfc88df 100644 --- a/patches/server/0191-Toggle-for-kinetic-damage.patch +++ b/patches/server/0191-Toggle-for-kinetic-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 19dc529bef0cf9a9accb8a8615f5eeb22663d605..ad8b1ff4ea483b18cfb2f79cfe094655dec4d032 100644 +index c8e5162e3494f221ebbf538d7416c8508358546d..863bfe33d980f1988111669c6a6ae53bee9c4887 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3064,6 +3064,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -17,10 +17,10 @@ index 19dc529bef0cf9a9accb8a8615f5eeb22663d605..ad8b1ff4ea483b18cfb2f79cfe094655 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 577aa009781c05e836feb7dbecb7b7aac44168e3..aef08a0513932723edd38a029a4aef81b1f8dd5b 100644 +index 67e8bd4ea24490fc5bf7c5b1a90baa44288a0095..fcf8c6737247cfa7a207e7cfd893c4107d6c7ee8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -186,11 +186,13 @@ public class PurpurWorldConfig { +@@ -182,11 +182,13 @@ public class PurpurWorldConfig { public double elytraDamageMultiplyBySpeed = 0; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0192-Add-Option-for-disable-observer-clocks.patch b/patches/server/0192-Add-Option-for-disable-observer-clocks.patch index 6f35811d4..e227bb83e 100644 --- a/patches/server/0192-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0192-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aef08a0513932723edd38a029a4aef81b1f8dd5b..54de76044ba0b9fad821382165af89453ea28019 100644 +index fcf8c6737247cfa7a207e7cfd893c4107d6c7ee8..f498dbe3ff66723bc68ff3b8b2003ff062d96e05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -366,6 +366,11 @@ public class PurpurWorldConfig { +@@ -362,6 +362,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch index 68ea97023..d59278eef 100644 --- a/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 3c4cff3f095cdf2dd74df7bf4bb8f3d5600b342d..9bb75b49ea2d0bd8aafbe537b65f86eb return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54de76044ba0b9fad821382165af89453ea28019..425f9ae808fa5abbce51fe39c026b5108765ed34 100644 +index f498dbe3ff66723bc68ff3b8b2003ff062d96e05..91d40596ad0d52066a2ec81392443a3e0d661fe7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2984,6 +2984,8 @@ public class PurpurWorldConfig { +@@ -2980,6 +2980,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 54de76044ba0b9fad821382165af89453ea28019..425f9ae808fa5abbce51fe39c026b510 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3000,6 +3002,8 @@ public class PurpurWorldConfig { +@@ -2996,6 +2998,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch index 518ce25ed..3b2de1e47 100644 --- a/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 425f9ae808fa5abbce51fe39c026b5108765ed34..5223da9ee6ec5f80246e2e1aa0319ab793fd1da6 100644 +index 91d40596ad0d52066a2ec81392443a3e0d661fe7..69f412e1dfaa1f44a02073f98fb7543d77b90d74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1002,9 +1002,13 @@ public class PurpurWorldConfig { +@@ -998,9 +998,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch index 5d5126b71..a13e984ce 100644 --- a/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index c0d5fc670ff428a4293e8965068f52449a5c8b47..8d9154fc197e8604a5b07efe6b2aa76d // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5223da9ee6ec5f80246e2e1aa0319ab793fd1da6..36ebc5ea1c84d470372e9a8596084c0b9960efb7 100644 +index 69f412e1dfaa1f44a02073f98fb7543d77b90d74..bceb28015c843555fe5a63ecff34078d81f9df47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2819,6 +2819,7 @@ public class PurpurWorldConfig { +@@ -2815,6 +2815,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 5223da9ee6ec5f80246e2e1aa0319ab793fd1da6..36ebc5ea1c84d470372e9a8596084c0b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2841,6 +2842,7 @@ public class PurpurWorldConfig { +@@ -2837,6 +2838,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch index 253c2e8d1..6d2529bab 100644 --- a/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36ebc5ea1c84d470372e9a8596084c0b9960efb7..d54414dcb95fe37f76c5abb8ee992e06d81c451b 100644 +index bceb28015c843555fe5a63ecff34078d81f9df47..be92f65edf53b8862a196b1b97ed7720f4bb8c34 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -843,6 +843,11 @@ public class PurpurWorldConfig { +@@ -839,6 +839,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch index 92b48a568..baebfabee 100644 --- a/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,10 +18,10 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d54414dcb95fe37f76c5abb8ee992e06d81c451b..027ae0f906363eaa86102c2f23eb03f2c6bcd3aa 100644 +index be92f65edf53b8862a196b1b97ed7720f4bb8c34..4188889a54c2a18b10c6cc27cf32e0bb81c05c12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -401,6 +401,7 @@ public class PurpurWorldConfig { +@@ -397,6 +397,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index d54414dcb95fe37f76c5abb8ee992e06d81c451b..027ae0f906363eaa86102c2f23eb03f2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -424,6 +425,7 @@ public class PurpurWorldConfig { +@@ -420,6 +421,7 @@ public class PurpurWorldConfig { playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0198-Conduit-behavior-configuration.patch b/patches/server/0198-Conduit-behavior-configuration.patch index 338b4eb0d..8c0d17f3a 100644 --- a/patches/server/0198-Conduit-behavior-configuration.patch +++ b/patches/server/0198-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 027ae0f906363eaa86102c2f23eb03f2c6bcd3aa..106b6563e6ab69d729b8cd20ae1122cc86137afb 100644 +index 4188889a54c2a18b10c6cc27cf32e0bb81c05c12..32aacbcc5398d6d22471e7c61b617daa61995f28 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3053,4 +3053,27 @@ public class PurpurWorldConfig { +@@ -3049,4 +3049,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0199-Cauldron-fill-chances.patch b/patches/server/0199-Cauldron-fill-chances.patch index fe21e0825..51d33b20c 100644 --- a/patches/server/0199-Cauldron-fill-chances.patch +++ b/patches/server/0199-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 106b6563e6ab69d729b8cd20ae1122cc86137afb..791a2a91be714844d699e0c6cd15f71c31201c59 100644 +index 32aacbcc5398d6d22471e7c61b617daa61995f28..2d4bc3018d5f892276327d8f923e58dfb1d1fd6c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3076,4 +3076,15 @@ public class PurpurWorldConfig { +@@ -3072,4 +3072,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch index c026d6ead..06c6c3e6c 100644 --- a/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,19 +18,19 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 791a2a91be714844d699e0c6cd15f71c31201c59..a8fa9bd998f24bdb420225b426addce5b005f8ad 100644 +index 2d4bc3018d5f892276327d8f923e58dfb1d1fd6c..b7dcce01b812f1b67656ca1fb3d5b7b087d50c86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,7 @@ public class PurpurWorldConfig { - public double voidDamageDealt = 4.0D; +@@ -139,6 +139,7 @@ public class PurpurWorldConfig { + public double tridentLoyaltyVoidReturnHeight = 0.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; + public boolean mobsIgnoreRails = false; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -164,6 +165,7 @@ public class PurpurWorldConfig { - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -160,6 +161,7 @@ public class PurpurWorldConfig { + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); + mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0201-Shulker-change-color-with-dye.patch b/patches/server/0201-Shulker-change-color-with-dye.patch index 3262819aa..ef44d020f 100644 --- a/patches/server/0201-Shulker-change-color-with-dye.patch +++ b/patches/server/0201-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index 6f1deb4d26c851ca99fbadf1eb5b7847eadbf25b..099d6ce14d9c2fa0af1e9bf96c09cd3d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a8fa9bd998f24bdb420225b426addce5b005f8ad..82f64caa2a68db0229fa5489c1bfdbda932ef0f8 100644 +index b7dcce01b812f1b67656ca1fb3d5b7b087d50c86..1fe3e9ca519d339a2a8258e69e6bf18aa75e8b1b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2345,6 +2345,7 @@ public class PurpurWorldConfig { +@@ -2341,6 +2341,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -40,7 +40,7 @@ index a8fa9bd998f24bdb420225b426addce5b005f8ad..82f64caa2a68db0229fa5489c1bfdbda private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2362,6 +2363,7 @@ public class PurpurWorldConfig { +@@ -2358,6 +2359,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 91cfa38bb..17c765ef0 100644 --- a/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 76a1875253af0e3c343b471f886946fa61e880de..7ee54bc8b1ce7524c4c61c8e3261380205f2c268 100644 +index c31fd59a311e3e131c8a5fee9f66619f1761ab06..4cae0fbd061b76b7bf9e42fa8c6560721fd4b19c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1230,6 +1230,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -25,10 +25,10 @@ index 76a1875253af0e3c343b471f886946fa61e880de..7ee54bc8b1ce7524c4c61c8e32613802 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82f64caa2a68db0229fa5489c1bfdbda932ef0f8..5e7ae30b6238b744e31719ddf0d7c2df3785b901 100644 +index 1fe3e9ca519d339a2a8258e69e6bf18aa75e8b1b..d6e4b8272636388a68f747ace52233cc12e8b5af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -142,6 +142,8 @@ public class PurpurWorldConfig { +@@ -140,6 +140,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 82f64caa2a68db0229fa5489c1bfdbda932ef0f8..5e7ae30b6238b744e31719ddf0d7c2df private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -166,6 +168,8 @@ public class PurpurWorldConfig { +@@ -162,6 +164,8 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index bd068566f..c93d7474a 100644 --- a/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 223259e7a09ada681b6181c898f6857888594f85..7d58a95f7ae8983b466b275f4f82597d .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e7ae30b6238b744e31719ddf0d7c2df3785b901..42961c10933dc7f1f56aa33a865ff260addb79d7 100644 +index d6e4b8272636388a68f747ace52233cc12e8b5af..bb904fb021864b9544bf89907879b4af81638d96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -803,6 +803,11 @@ public class PurpurWorldConfig { +@@ -799,6 +799,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 5e7ae30b6238b744e31719ddf0d7c2df3785b901..42961c10933dc7f1f56aa33a865ff260 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -940,6 +945,11 @@ public class PurpurWorldConfig { +@@ -936,6 +941,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch index d9bfbd8bb..3b62f4c92 100644 --- a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index d3c49951c0bd7db4352326d3113f0ca9da393fab..28731f0c5b0ba63fa8d5ce3ee580bf31 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d806f43e76d15da500c1c04392aad483ddcd8a9a..636c9a47585890d6c6c609e491f0d17be4bf52c7 100644 +index b7f8499cabbd28c0679d0c775b009c9cdf53b5f8..cdb5062d4d6325ada90dec3d4de6c0fd7546e8ab 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2075,6 +2075,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -48,10 +48,10 @@ index d806f43e76d15da500c1c04392aad483ddcd8a9a..636c9a47585890d6c6c609e491f0d17b cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 42961c10933dc7f1f56aa33a865ff260addb79d7..31b014854c6e6bf64e8ccfc0dab5677850ad746e 100644 +index bb904fb021864b9544bf89907879b4af81638d96..7919535ad59a5acaaf6a3c63f9c44b4351364b1b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -408,6 +408,7 @@ public class PurpurWorldConfig { +@@ -404,6 +404,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 42961c10933dc7f1f56aa33a865ff260addb79d7..31b014854c6e6bf64e8ccfc0dab56778 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -432,6 +433,7 @@ public class PurpurWorldConfig { +@@ -428,6 +429,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch index 4c33069cc..38bc28cc0 100644 --- a/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index c7bc9e0152419aa44fd2a4dcf2ce1f0b972e432e..ffc29ab9105b20aba15a0ce12d5ec7fa public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 31b014854c6e6bf64e8ccfc0dab5677850ad746e..291e9bf78caf6b19ff800b520ccdd25bf86c0ba0 100644 +index 7919535ad59a5acaaf6a3c63f9c44b4351364b1b..6bfd6d4046170025670c13acea0661614cbf85c0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1383,6 +1383,7 @@ public class PurpurWorldConfig { +@@ -1379,6 +1379,7 @@ public class PurpurWorldConfig { public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 31b014854c6e6bf64e8ccfc0dab5677850ad746e..291e9bf78caf6b19ff800b520ccdd25b private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1398,6 +1399,7 @@ public class PurpurWorldConfig { +@@ -1394,6 +1395,7 @@ public class PurpurWorldConfig { dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch index 95cbd4e1f..b0df3561e 100644 --- a/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch @@ -61,10 +61,10 @@ index 2b1b1243fa1e60985ab6fcd0dda9f71db7e3352c..a9820dda0ddf1863080f4169d70eff9c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 291e9bf78caf6b19ff800b520ccdd25bf86c0ba0..15f6ec51cbfe4aae5523749f71d10361fdf0744d 100644 +index 6bfd6d4046170025670c13acea0661614cbf85c0..df8cdde975785ef6578964b53f26125aff2b897e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1328,7 +1328,14 @@ public class PurpurWorldConfig { +@@ -1324,7 +1324,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index 291e9bf78caf6b19ff800b520ccdd25bf86c0ba0..15f6ec51cbfe4aae5523749f71d10361 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1342,6 +1349,8 @@ public class PurpurWorldConfig { +@@ -1338,6 +1345,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch index 3f20e2b78..0b91bb1f8 100644 --- a/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 671d1dafbfe2f8ba24096f78e2661014d00a5e09..cef163bc12629d538582d7735ed47bd3 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15f6ec51cbfe4aae5523749f71d10361fdf0744d..218fd4a054f70f33f4e3f6d65f43815edfe8c7ae 100644 +index df8cdde975785ef6578964b53f26125aff2b897e..15dfbe7cf0647c2e9b9b8991076de418276fe209 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -822,6 +822,7 @@ public class PurpurWorldConfig { +@@ -818,6 +818,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 15f6ec51cbfe4aae5523749f71d10361fdf0744d..218fd4a054f70f33f4e3f6d65f43815e public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -832,6 +833,7 @@ public class PurpurWorldConfig { +@@ -828,6 +829,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0210-Halloween-options-and-optimizations.patch b/patches/server/0210-Halloween-options-and-optimizations.patch index 56b2e27c8..d046c5ab9 100644 --- a/patches/server/0210-Halloween-options-and-optimizations.patch +++ b/patches/server/0210-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 4e7b67e5d6b26d1d0523dfed7f0d029b363fb0ef..b9439e7f261cd130648d6397a57156e9 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 218fd4a054f70f33f4e3f6d65f43815edfe8c7ae..e506e6f2a09b2c2f5d9bdbdbd7634e0fdc399d64 100644 +index 15dfbe7cf0647c2e9b9b8991076de418276fe209..5eb00f9c8e37d84f9ff4825a6fa60f8f1fe7d4b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1748,6 +1748,13 @@ public class PurpurWorldConfig { +@@ -1744,6 +1744,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0213-Campfire-option-for-lit-when-placed.patch b/patches/server/0213-Campfire-option-for-lit-when-placed.patch index ad34eb450..c5242e724 100644 --- a/patches/server/0213-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0213-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 7f6058f4def83867971121751acd51c398583651..5a49daf7b6bf9e0ec3d50494287a620d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e506e6f2a09b2c2f5d9bdbdbd7634e0fdc399d64..34ac5e517a50e166df1da796f2a2dcc7326f5d79 100644 +index 5eb00f9c8e37d84f9ff4825a6fa60f8f1fe7d4b4..03c968aae2d8f3867e8be002bbfafd3b592b8ceb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -865,6 +865,11 @@ public class PurpurWorldConfig { +@@ -861,6 +861,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch index fff27b685..0278f2790 100644 --- a/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34ac5e517a50e166df1da796f2a2dcc7326f5d79..d595c6eb65ef7da06c015684ea54525f128ae5c6 100644 +index 03c968aae2d8f3867e8be002bbfafd3b592b8ceb..5e5dc620e231858b20f308a2e3f15ca01b87fb48 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -228,6 +228,9 @@ public class PurpurWorldConfig { +@@ -224,6 +224,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 34ac5e517a50e166df1da796f2a2dcc7326f5d79..d595c6eb65ef7da06c015684ea54525f private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -276,6 +279,9 @@ public class PurpurWorldConfig { +@@ -272,6 +275,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch index 380342ee3..494d5b499 100644 --- a/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 9bb75b49ea2d0bd8aafbe537b65f86eb04f6cfe2..612907fe87e46b5b13ed80635f203fa9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d595c6eb65ef7da06c015684ea54525f128ae5c6..9eb7872725366fc759fc59509ebae65e7dfb303f 100644 +index 5e5dc620e231858b20f308a2e3f15ca01b87fb48..154a75f2418abdab1da4dd752594296589d90534 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3050,6 +3050,7 @@ public class PurpurWorldConfig { +@@ -3046,6 +3046,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index d595c6eb65ef7da06c015684ea54525f128ae5c6..9eb7872725366fc759fc59509ebae65e private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3068,6 +3069,7 @@ public class PurpurWorldConfig { +@@ -3064,6 +3065,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch index 536928504..5d94239ea 100644 --- a/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -135,7 +135,7 @@ index 7dfabb11d3c8112f6daef35d204a2e324f4ddb5e..a7b6c20afd9ec3fe61d2bdf42f96398c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9eb7872725366fc759fc59509ebae65e7dfb303f..5cb9f035f2de41d486f456bf3003019eb64725c7 100644 +index 154a75f2418abdab1da4dd752594296589d90534..3ad8b463f21b196a9c23bc91dfc4384a31f8fb21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -133,6 +133,8 @@ public class PurpurWorldConfig { @@ -147,7 +147,7 @@ index 9eb7872725366fc759fc59509ebae65e7dfb303f..5cb9f035f2de41d486f456bf3003019e public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -158,6 +160,14 @@ public class PurpurWorldConfig { +@@ -156,6 +158,14 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0217-Signs-allow-color-codes.patch b/patches/server/0217-Signs-allow-color-codes.patch index 7a1fde82a..9b8f53bf6 100644 --- a/patches/server/0217-Signs-allow-color-codes.patch +++ b/patches/server/0217-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 552c4baba3d4562afdc1b253f6949371b654edac..6482e1985654afea2e6d89fe0a9c2b6b7b3407fa 100644 +index 996bfac666762096fe322e54c2134bab0c08c950..6f6b9dbfa8bf4d67a9157ec870a4f14a8002ac01 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1707,6 +1707,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -17,7 +17,7 @@ index 552c4baba3d4562afdc1b253f6949371b654edac..6482e1985654afea2e6d89fe0a9c2b6b this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c1503ebebd51 100644 +index 3070cd2b588f5a69fd8c0d3551e16251680d8c27..c9a1c071780351b584ad8e071ddc26f9a27e5964 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java @@ -201,16 +201,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -84,10 +84,10 @@ index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c150 public ClientboundBlockEntityDataPacket getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5cb9f035f2de41d486f456bf3003019eb64725c7..e83dd08d7a74773c4069e076416cbbdc1135e9fa 100644 +index 3ad8b463f21b196a9c23bc91dfc4384a31f8fb21..facbd1fe9ef8bc0320f84035effe130d9b222d49 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1038,6 +1038,11 @@ public class PurpurWorldConfig { +@@ -1034,6 +1034,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0219-Mobs-always-drop-experience.patch b/patches/server/0219-Mobs-always-drop-experience.patch index 030a3ccd7..daae02575 100644 --- a/patches/server/0219-Mobs-always-drop-experience.patch +++ b/patches/server/0219-Mobs-always-drop-experience.patch @@ -901,7 +901,7 @@ index 69d7594a7495cfefdd32a409b2bc71c0958556d0..40c00f73502be66f2a0f3cdb36b963fb public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater; diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index dc832c9d3ef797580785b2b61abbb93b629cb80e..44fc01ef40ae4cf7a5c884a9e8c6d6431247a496 100644 +index 9dcc0ecf276bfbe4b6eeecc783c52779d2b93b78..5f1e8817f959cc39f7df75df2b5bae7014dc35d1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -79,6 +79,11 @@ public class Spider extends Monster { @@ -1029,7 +1029,7 @@ index 3c9c32f09b3c60b52cd2e678e3c9e328156d44d0..6817f88c422480f201552300ae780533 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 29cbb9ae004f657ff3aa6db379716472dc0bbf2f..30964cba8c9c071554c2b5e7a7d9ad20324f92ec 100644 +index b9439e7f261cd130648d6397a57156e9ed7677d3..479232d8dfaabdb3da5b825969d377aa437ea7d3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -149,6 +149,11 @@ public class Zombie extends Monster { @@ -1157,10 +1157,10 @@ index 6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba..d342752271c76b447bb8cde50d574072 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99827a9a2d 100644 +index facbd1fe9ef8bc0320f84035effe130d9b222d49..1e34756123f18b27b3328c409b22c11737dad035 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1125,6 +1125,7 @@ public class PurpurWorldConfig { +@@ -1121,6 +1121,7 @@ public class PurpurWorldConfig { public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1168,7 +1168,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void axolotlSettings() { axolotlRidable = getBoolean("mobs.axolotl.ridable", axolotlRidable); axolotlControllable = getBoolean("mobs.axolotl.controllable", axolotlControllable); -@@ -1132,6 +1133,7 @@ public class PurpurWorldConfig { +@@ -1128,6 +1129,7 @@ public class PurpurWorldConfig { axolotlScale = Mth.clamp(getDouble("mobs.axolotl.attributes.scale", axolotlScale), 0.0625D, 16.0D); axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks); axolotlTakeDamageFromWater = getBoolean("mobs.axolotl.takes-damage-from-water", axolotlTakeDamageFromWater); @@ -1176,7 +1176,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean batRidable = false; -@@ -1148,6 +1150,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1146,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1184,7 +1184,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1168,6 +1171,7 @@ public class PurpurWorldConfig { +@@ -1164,6 +1167,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1192,7 +1192,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean beeRidable = false; -@@ -1180,6 +1184,7 @@ public class PurpurWorldConfig { +@@ -1176,6 +1180,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1200,7 +1200,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1196,6 +1201,7 @@ public class PurpurWorldConfig { +@@ -1192,6 +1197,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1208,7 +1208,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean blazeRidable = false; -@@ -1205,6 +1211,7 @@ public class PurpurWorldConfig { +@@ -1201,6 +1207,7 @@ public class PurpurWorldConfig { public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; public boolean blazeTakeDamageFromWater = true; @@ -1216,7 +1216,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1218,6 +1225,7 @@ public class PurpurWorldConfig { +@@ -1214,6 +1221,7 @@ public class PurpurWorldConfig { blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1224,7 +1224,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean boggedRidable = false; -@@ -1263,6 +1271,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1267,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1232,7 +1232,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1284,6 +1293,7 @@ public class PurpurWorldConfig { +@@ -1280,6 +1289,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1240,7 +1240,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean caveSpiderRidable = false; -@@ -1292,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1288,6 +1298,7 @@ public class PurpurWorldConfig { public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1248,7 +1248,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1304,6 +1315,7 @@ public class PurpurWorldConfig { +@@ -1300,6 +1311,7 @@ public class PurpurWorldConfig { caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1256,7 +1256,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean chickenRidable = false; -@@ -1314,6 +1326,7 @@ public class PurpurWorldConfig { +@@ -1310,6 +1322,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1264,7 +1264,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1328,6 +1341,7 @@ public class PurpurWorldConfig { +@@ -1324,6 +1337,7 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1272,7 +1272,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean codRidable = false; -@@ -1335,6 +1349,7 @@ public class PurpurWorldConfig { +@@ -1331,6 +1345,7 @@ public class PurpurWorldConfig { public double codMaxHealth = 3.0D; public double codScale = 1.0D; public boolean codTakeDamageFromWater = false; @@ -1280,7 +1280,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1346,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1342,6 +1357,7 @@ public class PurpurWorldConfig { codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1288,7 +1288,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean cowRidable = false; -@@ -1358,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1370,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1296,7 +1296,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1379,6 +1396,7 @@ public class PurpurWorldConfig { +@@ -1375,6 +1392,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1304,7 +1304,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean creeperRidable = false; -@@ -1392,6 +1410,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1406,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1312,7 +1312,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1409,6 +1428,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1424,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1320,7 +1320,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean dolphinRidable = false; -@@ -1421,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1437,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1328,7 +1328,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1437,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1454,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1336,7 +1336,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean donkeyRidableInWater = false; -@@ -1448,6 +1470,7 @@ public class PurpurWorldConfig { +@@ -1444,6 +1466,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1344,7 +1344,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1465,6 +1488,7 @@ public class PurpurWorldConfig { +@@ -1461,6 +1484,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1352,7 +1352,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean drownedRidable = false; -@@ -1478,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1474,6 +1498,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1360,7 +1360,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1495,6 +1520,7 @@ public class PurpurWorldConfig { +@@ -1491,6 +1516,7 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1368,7 +1368,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean elderGuardianRidable = false; -@@ -1502,6 +1528,7 @@ public class PurpurWorldConfig { +@@ -1498,6 +1524,7 @@ public class PurpurWorldConfig { public double elderGuardianMaxHealth = 80.0D; public double elderGuardianScale = 1.0D; public boolean elderGuardianTakeDamageFromWater = false; @@ -1376,7 +1376,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1513,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1509,6 +1536,7 @@ public class PurpurWorldConfig { elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1384,7 +1384,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean enderDragonRidable = false; -@@ -1559,6 +1587,7 @@ public class PurpurWorldConfig { +@@ -1555,6 +1583,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1392,7 +1392,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1583,6 +1612,7 @@ public class PurpurWorldConfig { +@@ -1579,6 +1608,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1400,7 +1400,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean endermiteRidable = false; -@@ -1591,6 +1621,7 @@ public class PurpurWorldConfig { +@@ -1587,6 +1617,7 @@ public class PurpurWorldConfig { public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1408,7 +1408,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1603,6 +1634,7 @@ public class PurpurWorldConfig { +@@ -1599,6 +1630,7 @@ public class PurpurWorldConfig { endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1416,7 +1416,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean evokerRidable = false; -@@ -1612,6 +1644,7 @@ public class PurpurWorldConfig { +@@ -1608,6 +1640,7 @@ public class PurpurWorldConfig { public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1424,7 +1424,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1625,6 +1658,7 @@ public class PurpurWorldConfig { +@@ -1621,6 +1654,7 @@ public class PurpurWorldConfig { evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1432,7 +1432,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean foxRidable = false; -@@ -1636,6 +1670,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1666,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1440,7 +1440,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1651,6 +1686,7 @@ public class PurpurWorldConfig { +@@ -1647,6 +1682,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1448,7 +1448,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean frogRidable = false; -@@ -1673,6 +1709,7 @@ public class PurpurWorldConfig { +@@ -1669,6 +1705,7 @@ public class PurpurWorldConfig { public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; public boolean ghastTakeDamageFromWater = false; @@ -1456,7 +1456,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1686,6 +1723,7 @@ public class PurpurWorldConfig { +@@ -1682,6 +1719,7 @@ public class PurpurWorldConfig { ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1464,7 +1464,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean giantRidable = false; -@@ -1700,6 +1738,7 @@ public class PurpurWorldConfig { +@@ -1696,6 +1734,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1472,7 +1472,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1722,6 +1761,7 @@ public class PurpurWorldConfig { +@@ -1718,6 +1757,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1480,7 +1480,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean glowSquidRidable = false; -@@ -1730,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1766,7 @@ public class PurpurWorldConfig { public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1488,7 +1488,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1737,6 +1778,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1774,7 @@ public class PurpurWorldConfig { glowSquidScale = Mth.clamp(getDouble("mobs.glow_squid.attributes.scale", glowSquidScale), 0.0625D, 16.0D); glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); @@ -1496,7 +1496,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean goatRidable = false; -@@ -1746,6 +1788,7 @@ public class PurpurWorldConfig { +@@ -1742,6 +1784,7 @@ public class PurpurWorldConfig { public double goatScale = 1.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1504,7 +1504,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1754,6 +1797,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1793,7 @@ public class PurpurWorldConfig { goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1512,7 +1512,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean guardianRidable = false; -@@ -1761,6 +1805,7 @@ public class PurpurWorldConfig { +@@ -1757,6 +1801,7 @@ public class PurpurWorldConfig { public double guardianMaxHealth = 30.0D; public double guardianScale = 1.0D; public boolean guardianTakeDamageFromWater = false; @@ -1520,7 +1520,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1772,6 +1817,7 @@ public class PurpurWorldConfig { +@@ -1768,6 +1813,7 @@ public class PurpurWorldConfig { guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1528,7 +1528,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean forceHalloweenSeason = false; -@@ -1788,6 +1834,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1830,7 @@ public class PurpurWorldConfig { public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1536,7 +1536,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1801,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1844,7 @@ public class PurpurWorldConfig { hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1544,7 +1544,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean horseRidableInWater = false; -@@ -1812,6 +1860,7 @@ public class PurpurWorldConfig { +@@ -1808,6 +1856,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1552,7 +1552,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1829,6 +1878,7 @@ public class PurpurWorldConfig { +@@ -1825,6 +1874,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1560,7 +1560,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean huskRidable = false; -@@ -1841,6 +1891,7 @@ public class PurpurWorldConfig { +@@ -1837,6 +1887,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1568,7 +1568,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1857,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1853,6 +1904,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1576,7 +1576,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean illusionerRidable = false; -@@ -1867,6 +1919,7 @@ public class PurpurWorldConfig { +@@ -1863,6 +1915,7 @@ public class PurpurWorldConfig { public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1584,7 +1584,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1885,6 +1938,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +1934,7 @@ public class PurpurWorldConfig { illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1592,7 +1592,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean ironGolemRidable = false; -@@ -1896,6 +1950,7 @@ public class PurpurWorldConfig { +@@ -1892,6 +1946,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1600,7 +1600,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1911,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1907,6 +1962,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1608,7 +1608,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean llamaRidable = false; -@@ -1925,6 +1981,7 @@ public class PurpurWorldConfig { +@@ -1921,6 +1977,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1616,7 +1616,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1945,6 +2002,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +1998,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1624,7 +1624,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean magmaCubeRidable = false; -@@ -1955,6 +2013,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2009,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1632,7 +1632,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1969,6 +2028,7 @@ public class PurpurWorldConfig { +@@ -1965,6 +2024,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1640,7 +1640,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean mooshroomRidable = false; -@@ -1978,6 +2038,7 @@ public class PurpurWorldConfig { +@@ -1974,6 +2034,7 @@ public class PurpurWorldConfig { public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1648,7 +1648,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1991,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -1987,6 +2048,7 @@ public class PurpurWorldConfig { mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1656,7 +1656,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean muleRidableInWater = false; -@@ -2002,6 +2064,7 @@ public class PurpurWorldConfig { +@@ -1998,6 +2060,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1664,7 +1664,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -2019,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -2015,6 +2078,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1672,7 +1672,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean ocelotRidable = false; -@@ -2028,6 +2092,7 @@ public class PurpurWorldConfig { +@@ -2024,6 +2088,7 @@ public class PurpurWorldConfig { public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1680,7 +1680,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2041,6 +2106,7 @@ public class PurpurWorldConfig { +@@ -2037,6 +2102,7 @@ public class PurpurWorldConfig { ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1688,7 +1688,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean pandaRidable = false; -@@ -2050,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2046,6 +2112,7 @@ public class PurpurWorldConfig { public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1696,7 +1696,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -2063,6 +2130,7 @@ public class PurpurWorldConfig { +@@ -2059,6 +2126,7 @@ public class PurpurWorldConfig { pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1704,7 +1704,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean parrotRidable = false; -@@ -2073,6 +2141,7 @@ public class PurpurWorldConfig { +@@ -2069,6 +2137,7 @@ public class PurpurWorldConfig { public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1712,7 +1712,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2087,6 +2156,7 @@ public class PurpurWorldConfig { +@@ -2083,6 +2152,7 @@ public class PurpurWorldConfig { parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1720,7 +1720,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean phantomRidable = false; -@@ -2114,6 +2184,7 @@ public class PurpurWorldConfig { +@@ -2110,6 +2180,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1728,7 +1728,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2149,6 +2220,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2216,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1736,7 +1736,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean pigRidable = false; -@@ -2159,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2155,6 +2227,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1744,7 +1744,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2173,6 +2246,7 @@ public class PurpurWorldConfig { +@@ -2169,6 +2242,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1752,7 +1752,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean piglinRidable = false; -@@ -2183,6 +2257,7 @@ public class PurpurWorldConfig { +@@ -2179,6 +2253,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1760,7 +1760,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2197,6 +2272,7 @@ public class PurpurWorldConfig { +@@ -2193,6 +2268,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1768,7 +1768,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean piglinBruteRidable = false; -@@ -2205,6 +2281,7 @@ public class PurpurWorldConfig { +@@ -2201,6 +2277,7 @@ public class PurpurWorldConfig { public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2217,6 +2294,7 @@ public class PurpurWorldConfig { +@@ -2213,6 +2290,7 @@ public class PurpurWorldConfig { piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean pillagerRidable = false; -@@ -2226,6 +2304,7 @@ public class PurpurWorldConfig { +@@ -2222,6 +2300,7 @@ public class PurpurWorldConfig { public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2239,6 +2318,7 @@ public class PurpurWorldConfig { +@@ -2235,6 +2314,7 @@ public class PurpurWorldConfig { pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1800,7 +1800,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean polarBearRidable = false; -@@ -2250,6 +2330,7 @@ public class PurpurWorldConfig { +@@ -2246,6 +2326,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1808,7 +1808,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2266,6 +2347,7 @@ public class PurpurWorldConfig { +@@ -2262,6 +2343,7 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1816,7 +1816,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean pufferfishRidable = false; -@@ -2273,6 +2355,7 @@ public class PurpurWorldConfig { +@@ -2269,6 +2351,7 @@ public class PurpurWorldConfig { public double pufferfishMaxHealth = 3.0D; public double pufferfishScale = 1.0D; public boolean pufferfishTakeDamageFromWater = false; @@ -1824,7 +1824,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2284,6 +2367,7 @@ public class PurpurWorldConfig { +@@ -2280,6 +2363,7 @@ public class PurpurWorldConfig { pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1832,7 +1832,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean rabbitRidable = false; -@@ -2296,6 +2380,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2376,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1840,7 +1840,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2312,6 +2397,7 @@ public class PurpurWorldConfig { +@@ -2308,6 +2393,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1848,7 +1848,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean ravagerRidable = false; -@@ -2322,6 +2408,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2404,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1856,7 +1856,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2352,6 +2439,7 @@ public class PurpurWorldConfig { +@@ -2348,6 +2435,7 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1864,7 +1864,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean salmonRidable = false; -@@ -2359,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2355,6 +2443,7 @@ public class PurpurWorldConfig { public double salmonMaxHealth = 3.0D; public double salmonScale = 1.0D; public boolean salmonTakeDamageFromWater = false; @@ -1872,7 +1872,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2370,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2366,6 +2455,7 @@ public class PurpurWorldConfig { salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1880,7 +1880,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean sheepRidable = false; -@@ -2380,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2376,6 +2466,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1888,7 +1888,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2394,6 +2485,7 @@ public class PurpurWorldConfig { +@@ -2390,6 +2481,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1896,7 +1896,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean shulkerRidable = false; -@@ -2408,6 +2500,7 @@ public class PurpurWorldConfig { +@@ -2404,6 +2496,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1904,7 +1904,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2426,6 +2519,7 @@ public class PurpurWorldConfig { +@@ -2422,6 +2515,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1912,7 +1912,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean silverfishRidable = false; -@@ -2437,6 +2531,7 @@ public class PurpurWorldConfig { +@@ -2433,6 +2527,7 @@ public class PurpurWorldConfig { public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1920,7 +1920,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2452,6 +2547,7 @@ public class PurpurWorldConfig { +@@ -2448,6 +2543,7 @@ public class PurpurWorldConfig { silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1928,7 +1928,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean skeletonRidable = false; -@@ -2460,6 +2556,7 @@ public class PurpurWorldConfig { +@@ -2456,6 +2552,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1936,7 +1936,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2472,6 +2569,7 @@ public class PurpurWorldConfig { +@@ -2468,6 +2565,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1944,7 +1944,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean skeletonHorseRidable = false; -@@ -2484,6 +2582,7 @@ public class PurpurWorldConfig { +@@ -2480,6 +2578,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1952,7 +1952,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2501,6 +2600,7 @@ public class PurpurWorldConfig { +@@ -2497,6 +2596,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1960,7 +1960,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean slimeRidable = false; -@@ -2511,6 +2611,7 @@ public class PurpurWorldConfig { +@@ -2507,6 +2607,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1968,7 +1968,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2525,6 +2626,7 @@ public class PurpurWorldConfig { +@@ -2521,6 +2622,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1976,7 +1976,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean snowGolemRidable = false; -@@ -2540,6 +2642,7 @@ public class PurpurWorldConfig { +@@ -2536,6 +2638,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1984,7 +1984,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2559,6 +2662,7 @@ public class PurpurWorldConfig { +@@ -2555,6 +2658,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1992,7 +1992,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean snifferRidable = false; -@@ -2584,6 +2688,7 @@ public class PurpurWorldConfig { +@@ -2580,6 +2684,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -2000,7 +2000,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2598,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2594,6 +2699,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2008,7 +2008,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean spiderRidable = false; -@@ -2606,6 +2712,7 @@ public class PurpurWorldConfig { +@@ -2602,6 +2708,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; public boolean spiderTakeDamageFromWater = false; @@ -2016,7 +2016,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2618,6 +2725,7 @@ public class PurpurWorldConfig { +@@ -2614,6 +2721,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2024,7 +2024,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean strayRidable = false; -@@ -2626,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2622,6 +2730,7 @@ public class PurpurWorldConfig { public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; public boolean strayTakeDamageFromWater = false; @@ -2032,7 +2032,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2638,6 +2747,7 @@ public class PurpurWorldConfig { +@@ -2634,6 +2743,7 @@ public class PurpurWorldConfig { strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2040,7 +2040,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean striderRidable = false; -@@ -2648,6 +2758,7 @@ public class PurpurWorldConfig { +@@ -2644,6 +2754,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2048,7 +2048,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2662,6 +2773,7 @@ public class PurpurWorldConfig { +@@ -2658,6 +2769,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2056,7 +2056,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean tadpoleRidable = false; -@@ -2684,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2680,6 +2792,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2064,7 +2064,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2703,6 +2816,7 @@ public class PurpurWorldConfig { +@@ -2699,6 +2812,7 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean tropicalFishRidable = false; -@@ -2710,6 +2824,7 @@ public class PurpurWorldConfig { +@@ -2706,6 +2820,7 @@ public class PurpurWorldConfig { public double tropicalFishMaxHealth = 3.0D; public double tropicalFishScale = 1.0D; public boolean tropicalFishTakeDamageFromWater = false; @@ -2080,7 +2080,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2721,6 +2836,7 @@ public class PurpurWorldConfig { +@@ -2717,6 +2832,7 @@ public class PurpurWorldConfig { tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2088,7 +2088,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean turtleRidable = false; -@@ -2730,6 +2846,7 @@ public class PurpurWorldConfig { +@@ -2726,6 +2842,7 @@ public class PurpurWorldConfig { public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2096,7 +2096,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2743,6 +2860,7 @@ public class PurpurWorldConfig { +@@ -2739,6 +2856,7 @@ public class PurpurWorldConfig { turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2104,7 +2104,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean vexRidable = false; -@@ -2752,6 +2870,7 @@ public class PurpurWorldConfig { +@@ -2748,6 +2866,7 @@ public class PurpurWorldConfig { public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; public boolean vexTakeDamageFromWater = false; @@ -2112,7 +2112,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2765,6 +2884,7 @@ public class PurpurWorldConfig { +@@ -2761,6 +2880,7 @@ public class PurpurWorldConfig { vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2120,7 +2120,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean villagerRidable = false; -@@ -2781,6 +2901,7 @@ public class PurpurWorldConfig { +@@ -2777,6 +2897,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2128,7 +2128,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2801,6 +2922,7 @@ public class PurpurWorldConfig { +@@ -2797,6 +2918,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2136,7 +2136,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean vindicatorRidable = false; -@@ -2810,6 +2932,7 @@ public class PurpurWorldConfig { +@@ -2806,6 +2928,7 @@ public class PurpurWorldConfig { public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2144,7 +2144,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2823,6 +2946,7 @@ public class PurpurWorldConfig { +@@ -2819,6 +2942,7 @@ public class PurpurWorldConfig { vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2152,7 +2152,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean wanderingTraderRidable = false; -@@ -2834,6 +2958,7 @@ public class PurpurWorldConfig { +@@ -2830,6 +2954,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2160,7 +2160,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2849,6 +2974,7 @@ public class PurpurWorldConfig { +@@ -2845,6 +2970,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2168,7 +2168,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean wardenRidable = false; -@@ -2866,6 +2992,7 @@ public class PurpurWorldConfig { +@@ -2862,6 +2988,7 @@ public class PurpurWorldConfig { public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; public boolean witchTakeDamageFromWater = false; @@ -2176,7 +2176,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2878,6 +3005,7 @@ public class PurpurWorldConfig { +@@ -2874,6 +3001,7 @@ public class PurpurWorldConfig { witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2184,7 +2184,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean witherRidable = false; -@@ -2893,6 +3021,7 @@ public class PurpurWorldConfig { +@@ -2889,6 +3017,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2192,7 +2192,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2916,6 +3045,7 @@ public class PurpurWorldConfig { +@@ -2912,6 +3041,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2200,7 +2200,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean witherSkeletonRidable = false; -@@ -2924,6 +3054,7 @@ public class PurpurWorldConfig { +@@ -2920,6 +3050,7 @@ public class PurpurWorldConfig { public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2208,7 +2208,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2936,6 +3067,7 @@ public class PurpurWorldConfig { +@@ -2932,6 +3063,7 @@ public class PurpurWorldConfig { witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2216,7 +2216,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean wolfRidable = false; -@@ -2948,6 +3080,7 @@ public class PurpurWorldConfig { +@@ -2944,6 +3076,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2224,7 +2224,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2968,6 +3101,7 @@ public class PurpurWorldConfig { +@@ -2964,6 +3097,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2232,7 +2232,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean zoglinRidable = false; -@@ -2976,6 +3110,7 @@ public class PurpurWorldConfig { +@@ -2972,6 +3106,7 @@ public class PurpurWorldConfig { public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2240,7 +2240,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2988,6 +3123,7 @@ public class PurpurWorldConfig { +@@ -2984,6 +3119,7 @@ public class PurpurWorldConfig { zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2248,7 +2248,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean zombieRidable = false; -@@ -3002,6 +3138,7 @@ public class PurpurWorldConfig { +@@ -2998,6 +3134,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2256,7 +2256,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3020,6 +3157,7 @@ public class PurpurWorldConfig { +@@ -3016,6 +3153,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2264,7 +2264,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean zombieHorseRidable = false; -@@ -3033,6 +3171,7 @@ public class PurpurWorldConfig { +@@ -3029,6 +3167,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2272,7 +2272,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -3051,6 +3190,7 @@ public class PurpurWorldConfig { +@@ -3047,6 +3186,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2280,7 +2280,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean zombieVillagerRidable = false; -@@ -3066,6 +3206,7 @@ public class PurpurWorldConfig { +@@ -3062,6 +3202,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2288,7 +2288,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3085,6 +3226,7 @@ public class PurpurWorldConfig { +@@ -3081,6 +3222,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2296,7 +2296,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 } public boolean zombifiedPiglinRidable = false; -@@ -3098,6 +3240,7 @@ public class PurpurWorldConfig { +@@ -3094,6 +3236,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2304,7 +2304,7 @@ index e83dd08d7a74773c4069e076416cbbdc1135e9fa..76c94c6332a447a95e91cd04f321af99 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3115,6 +3258,7 @@ public class PurpurWorldConfig { +@@ -3111,6 +3254,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 1c9637b4c..7d41d5e69 100644 --- a/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0221-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76c94c6332a447a95e91cd04f321af99827a9a2d..61121ec15d2ecb6cc46d4bcd07e35905dc67d827 100644 +index 1e34756123f18b27b3328c409b22c11737dad035..6a562966878f9305e44fe966621fe591e4f1f0e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -545,6 +545,8 @@ public class PurpurWorldConfig { +@@ -541,6 +541,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 76c94c6332a447a95e91cd04f321af99827a9a2d..61121ec15d2ecb6cc46d4bcd07e35905 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -812,6 +814,8 @@ public class PurpurWorldConfig { +@@ -808,6 +810,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch index c127f7730..e3bcd2b17 100644 --- a/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0222-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61121ec15d2ecb6cc46d4bcd07e35905dc67d827..f1d37e0fee049b8c91c09309b4df4d1f072c0ad5 100644 +index 6a562966878f9305e44fe966621fe591e4f1f0e7..2436fb55fca809f1c709a1539762e3e11b76637f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1072,11 +1072,13 @@ public class PurpurWorldConfig { +@@ -1068,11 +1068,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0223-Mob-head-visibility-percent.patch b/patches/server/0223-Mob-head-visibility-percent.patch index 1fa1a9c15..c98069bc2 100644 --- a/patches/server/0223-Mob-head-visibility-percent.patch +++ b/patches/server/0223-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ad8b1ff4ea483b18cfb2f79cfe094655dec4d032..391625ad3fd69f7ab4052afe2ea4d566dd1ac5a5 100644 +index 863bfe33d980f1988111669c6a6ae53bee9c4887..cb9ae94b4fff8406cdbc40a1d5d38f0272a4a212 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1046,9 +1046,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index ad8b1ff4ea483b18cfb2f79cfe094655dec4d032..391625ad3fd69f7ab4052afe2ea4d566 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974471fa772 100644 +index 2436fb55fca809f1c709a1539762e3e11b76637f..19fa5f9e986f5acff4b4893ec33f7c29d5a59b09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1417,6 +1417,7 @@ public class PurpurWorldConfig { +@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1435,6 +1436,7 @@ public class PurpurWorldConfig { +@@ -1431,6 +1432,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 } public boolean dolphinRidable = false; -@@ -2264,6 +2266,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2262,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2279,6 +2282,7 @@ public class PurpurWorldConfig { +@@ -2275,6 +2278,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 } public boolean piglinBruteRidable = false; -@@ -2563,6 +2567,7 @@ public class PurpurWorldConfig { +@@ -2559,6 +2563,7 @@ public class PurpurWorldConfig { public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2576,6 +2581,7 @@ public class PurpurWorldConfig { +@@ -2572,6 +2577,7 @@ public class PurpurWorldConfig { skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 } public boolean skeletonHorseRidable = false; -@@ -3145,6 +3151,7 @@ public class PurpurWorldConfig { +@@ -3141,6 +3147,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index f1d37e0fee049b8c91c09309b4df4d1f072c0ad5..2d7f4b05e2720bb64f429ec9d0c06974 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3164,6 +3171,7 @@ public class PurpurWorldConfig { +@@ -3160,6 +3167,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0226-Stop-bees-from-dying-after-stinging.patch b/patches/server/0226-Stop-bees-from-dying-after-stinging.patch index 6b488eded..f0b6b8df1 100644 --- a/patches/server/0226-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0226-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 0a0f3d21234dbf567ce7439833c84293fac2dc0f..46d55f60cb91fc32b505582c8eecb393 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2d7f4b05e2720bb64f429ec9d0c06974471fa772..e9e50100613b7e0814ba6687ea092a3545836a4d 100644 +index 19fa5f9e986f5acff4b4893ec33f7c29d5a59b09..df3d06fc19b9696fbce4bedc221fc327ec533515 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1191,6 +1191,7 @@ public class PurpurWorldConfig { +@@ -1187,6 +1187,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 2d7f4b05e2720bb64f429ec9d0c06974471fa772..e9e50100613b7e0814ba6687ea092a35 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1208,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1204,6 +1205,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0228-Configurable-farmland-trample-height.patch b/patches/server/0228-Configurable-farmland-trample-height.patch index df882c464..d9c19d6e9 100644 --- a/patches/server/0228-Configurable-farmland-trample-height.patch +++ b/patches/server/0228-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9e50100613b7e0814ba6687ea092a3545836a4d..df517e667e64e34582a02b3f12bee5ae1c5b5886 100644 +index df3d06fc19b9696fbce4bedc221fc327ec533515..9e42e6fd795ff8e83cd5d3a163b46ea803571b00 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -965,6 +965,7 @@ public class PurpurWorldConfig { +@@ -961,6 +961,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index e9e50100613b7e0814ba6687ea092a3545836a4d..df517e667e64e34582a02b3f12bee5ae private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -972,6 +973,7 @@ public class PurpurWorldConfig { +@@ -968,6 +969,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0229-Configurable-player-pickup-exp-delay.patch b/patches/server/0229-Configurable-player-pickup-exp-delay.patch index 9706cf3a5..74634d1fe 100644 --- a/patches/server/0229-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0229-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index 05ed7bfd75a1e30d74b12a068303a786222a2649..330b21946564e6a7b463a258c02fee3f } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df517e667e64e34582a02b3f12bee5ae1c5b5886..f47984ce8f1405bd8cb82636ffa6b3f3978368ee 100644 +index 9e42e6fd795ff8e83cd5d3a163b46ea803571b00..f8210f996ee4e6a7cbe0200d956d11afd99da160 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -425,6 +425,7 @@ public class PurpurWorldConfig { +@@ -421,6 +421,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index df517e667e64e34582a02b3f12bee5ae1c5b5886..f47984ce8f1405bd8cb82636ffa6b3f3 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -450,6 +451,7 @@ public class PurpurWorldConfig { +@@ -446,6 +447,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0230-Allow-void-trading.patch b/patches/server/0230-Allow-void-trading.patch index 456bf8453..2bcf48f21 100644 --- a/patches/server/0230-Allow-void-trading.patch +++ b/patches/server/0230-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 4cae0fbd061b76b7bf9e42fa8c6560721fd4b19c..bfc36c239dab4df5130cbde190d51365 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f47984ce8f1405bd8cb82636ffa6b3f3978368ee..a9e9316bfbde71d82d46258346c259052f2c7e2c 100644 +index f8210f996ee4e6a7cbe0200d956d11afd99da160..bfccba06e4ac08d9620ff003672e808c84eb2125 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -426,6 +426,7 @@ public class PurpurWorldConfig { +@@ -422,6 +422,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index f47984ce8f1405bd8cb82636ffa6b3f3978368ee..a9e9316bfbde71d82d46258346c25905 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -452,6 +453,7 @@ public class PurpurWorldConfig { +@@ -448,6 +449,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0231-Configurable-phantom-size.patch b/patches/server/0231-Configurable-phantom-size.patch index d21a39cea..50281d477 100644 --- a/patches/server/0231-Configurable-phantom-size.patch +++ b/patches/server/0231-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 718311ba402fbc5b05fd480395d29578d1f3fd71..493e9ee0585ae419caffaa163f4975ab } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a9e9316bfbde71d82d46258346c259052f2c7e2c..cd159fcbf82baff184fceca54bc8bcaf60fd470e 100644 +index bfccba06e4ac08d9620ff003672e808c84eb2125..5f61191fe61a0dae7a991e5df98ed4c1217dcbd4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2201,6 +2201,8 @@ public class PurpurWorldConfig { +@@ -2197,6 +2197,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index a9e9316bfbde71d82d46258346c259052f2c7e2c..cd159fcbf82baff184fceca54bc8bcaf private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2237,6 +2239,13 @@ public class PurpurWorldConfig { +@@ -2233,6 +2235,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0233-Configurable-minimum-demand-for-trades.patch b/patches/server/0233-Configurable-minimum-demand-for-trades.patch index 70d17d8f0..64dc7a66b 100644 --- a/patches/server/0233-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0233-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd159fcbf82baff184fceca54bc8bcaf60fd470e..67ada375ab78d5dafa7a10b1cd30986031b3ac1f 100644 +index 5f61191fe61a0dae7a991e5df98ed4c1217dcbd4..70faadcef5ea8b93d7c69ef1c8db30f7695057f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2931,6 +2931,7 @@ public class PurpurWorldConfig { +@@ -2927,6 +2927,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index cd159fcbf82baff184fceca54bc8bcaf60fd470e..67ada375ab78d5dafa7a10b1cd309860 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2952,6 +2953,7 @@ public class PurpurWorldConfig { +@@ -2948,6 +2949,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0234-Lobotomize-stuck-villagers.patch b/patches/server/0234-Lobotomize-stuck-villagers.patch index 1c71127e9..870e9f12b 100644 --- a/patches/server/0234-Lobotomize-stuck-villagers.patch +++ b/patches/server/0234-Lobotomize-stuck-villagers.patch @@ -107,10 +107,10 @@ index bd2987fa1fb194a581567134ed980e8fc043f435..bdd345595ed71a8018349e184afe8582 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 67ada375ab78d5dafa7a10b1cd30986031b3ac1f..f3c7fa2896f440be4da45ba23830f3271043a927 100644 +index 70faadcef5ea8b93d7c69ef1c8db30f7695057f3..0d8a5e8c06f9c64b6f1eff0c0660c66692b59b29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2932,6 +2932,9 @@ public class PurpurWorldConfig { +@@ -2928,6 +2928,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -120,7 +120,7 @@ index 67ada375ab78d5dafa7a10b1cd30986031b3ac1f..f3c7fa2896f440be4da45ba23830f327 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2954,6 +2957,18 @@ public class PurpurWorldConfig { +@@ -2950,6 +2953,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0235-Option-for-villager-display-trade-item.patch b/patches/server/0235-Option-for-villager-display-trade-item.patch index 823ae3457..03e7b0a42 100644 --- a/patches/server/0235-Option-for-villager-display-trade-item.patch +++ b/patches/server/0235-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f3c7fa2896f440be4da45ba23830f3271043a927..132cef6e9191acdac437d3a3d85d96006aab9669 100644 +index 0d8a5e8c06f9c64b6f1eff0c0660c66692b59b29..343050a9abf451dfcd4092d6764e0a6f5f808c0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2935,6 +2935,7 @@ public class PurpurWorldConfig { +@@ -2931,6 +2931,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index f3c7fa2896f440be4da45ba23830f3271043a927..132cef6e9191acdac437d3a3d85d9600 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2969,6 +2970,7 @@ public class PurpurWorldConfig { +@@ -2965,6 +2966,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 7bc046299..7ce0a9f6a 100644 --- a/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0236-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index c9cabb061ebc9172647304431cc3fb2593dd47ba..565408c03849fb3011fb708478a99ec6 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 132cef6e9191acdac437d3a3d85d96006aab9669..8ed558043704a51ef5e932696aba1fb9ffb4da46 100644 +index 343050a9abf451dfcd4092d6764e0a6f5f808c0a..7bde682844a6789154d8b08f81fbcf8ae6eb9316 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1059,8 +1059,10 @@ public class PurpurWorldConfig { +@@ -1055,8 +1055,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch index 2a9be54c9..9281fe42c 100644 --- a/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0237-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 391625ad3fd69f7ab4052afe2ea4d566dd1ac5a5..2ff8d9a0d4095aebeec7dff76fd0280b29762c3d 100644 +index cb9ae94b4fff8406cdbc40a1d5d38f0272a4a212..409d5c775b3187f2d3b58879e3c945d16a690299 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1579,13 +1579,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -25,7 +25,7 @@ index 391625ad3fd69f7ab4052afe2ea4d566dd1ac5a5..2ff8d9a0d4095aebeec7dff76fd0280b if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 572587db064c87ac86add6d9eece5ac94374c7b9..9add2ba364e80815ec9c530b984e1619b6607bb8 100644 +index 0a3da3d35cd6b41003692d968b77384e7460ca97..b21cd824587f7bed53255f7d0fc7bedefd45f9a4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -513,7 +513,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -38,10 +38,10 @@ index 572587db064c87ac86add6d9eece5ac94374c7b9..9add2ba364e80815ec9c530b984e1619 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ed558043704a51ef5e932696aba1fb9ffb4da46..09c681d1be0ac834df3e5f1af95d1e16c080f60a 100644 +index 7bde682844a6789154d8b08f81fbcf8ae6eb9316..951883a41b2aa2ad37eb32c2c843f5d8d313dd7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -146,6 +146,7 @@ public class PurpurWorldConfig { +@@ -144,6 +144,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index 8ed558043704a51ef5e932696aba1fb9ffb4da46..09c681d1be0ac834df3e5f1af95d1e16 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -180,6 +181,7 @@ public class PurpurWorldConfig { +@@ -176,6 +177,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0238-Anvil-repair-damage-options.patch b/patches/server/0238-Anvil-repair-damage-options.patch index fd6bb4603..ac1e89b9d 100644 --- a/patches/server/0238-Anvil-repair-damage-options.patch +++ b/patches/server/0238-Anvil-repair-damage-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil repair/damage options diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a9257519e 100644 +index c77d4adbba79ec39ab78c2a6bac1e8f94ba7fd68..97f75aa767c90a244a094367b408e6899224c7b9 100644 --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java @@ -59,6 +59,53 @@ public class AnvilBlock extends FallingBlock { @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09c681d1be0ac834df3e5f1af95d1e16c080f60a..d67353c9c3a35f8b8961a8bd840374511b64e2f5 100644 +index 951883a41b2aa2ad37eb32c2c843f5d8d313dd7a..50e310a86c367340ce4d73e31b2648e315c43113 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -826,9 +826,13 @@ public class PurpurWorldConfig { +@@ -822,9 +822,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 6fb4385b2..2dcc49e14 100644 --- a/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0239-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d67353c9c3a35f8b8961a8bd840374511b64e2f5..7d00d2204fbba657d16693b89de5645bf0b64b04 100644 +index 50e310a86c367340ce4d73e31b2648e315c43113..f9d927dccb7ba682c38adc734bc4999277a5c915 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1087,12 +1087,14 @@ public class PurpurWorldConfig { +@@ -1083,12 +1083,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch index 79a9c1423..28c031d1a 100644 --- a/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0242-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 3d93d548b8c68cc0ee7c52dd0f92664c47077b6d..4af1857c4fbc18067b2fa0ae43501ce5 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d00d2204fbba657d16693b89de5645bf0b64b04..00d2295aed2ef04f5dab922012710d9ade7c0afa 100644 +index f9d927dccb7ba682c38adc734bc4999277a5c915..b6b2dde78249f6fd922bfbcdcbee2ee4e734f6e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2946,6 +2946,8 @@ public class PurpurWorldConfig { +@@ -2942,6 +2942,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 7d00d2204fbba657d16693b89de5645bf0b64b04..00d2295aed2ef04f5dab922012710d9a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2981,6 +2983,8 @@ public class PurpurWorldConfig { +@@ -2977,6 +2979,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0243-Stonecutter-damage.patch b/patches/server/0243-Stonecutter-damage.patch index a78b08cc5..d155f94aa 100644 --- a/patches/server/0243-Stonecutter-damage.patch +++ b/patches/server/0243-Stonecutter-damage.patch @@ -115,7 +115,7 @@ index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f } else if (blockState.is(Blocks.HONEY_BLOCK)) { return PathType.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 220e663d7b1e134845e8d9b52ae104b77fb29c46..3c533df90cf8b1a69b190ffee06c9254e4e4d764 100644 +index df37da354b5ffffc484a8660949c8969a5b3acc1..858c6c860d9b8aaa1d3f9f77a9e410726239d7cc 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1142,7 +1142,7 @@ public class CraftEventFactory { @@ -128,7 +128,7 @@ index 220e663d7b1e134845e8d9b52ae104b77fb29c46..3c533df90cf8b1a69b190ffee06c9254 } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c880563d9 100644 +index 11dc88158bb78db1c27cbdfc02d95807b919f723..73ddd6210778e323786900813fc70d1f3a2cf5f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -211,8 +211,10 @@ public class PurpurConfig { @@ -143,10 +143,10 @@ index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00d2295aed2ef04f5dab922012710d9ade7c0afa..bfe8e51c895030637d2ca1744c9797f099b0cb7a 100644 +index b6b2dde78249f6fd922bfbcdcbee2ee4e734f6e7..4517c7a6f0bce6e6c4a4ce9a935e0deeb47d9c50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1082,6 +1082,11 @@ public class PurpurWorldConfig { +@@ -1078,6 +1078,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch index 37b0ac2f4..6f32a6c53 100644 --- a/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0244-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bfe8e51c895030637d2ca1744c9797f099b0cb7a..f6b57116973fbe100df5c07b887787d23e13e2af 100644 +index 4517c7a6f0bce6e6c4a4ce9a935e0deeb47d9c50..c8899c4823fbce311df88f047ddfcc7a2b91ffc2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { +@@ -1019,6 +1019,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0245-Add-config-for-snow-on-blue-ice.patch b/patches/server/0245-Add-config-for-snow-on-blue-ice.patch index 3b7c2cf94..d24f9ed29 100644 --- a/patches/server/0245-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0245-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6b57116973fbe100df5c07b887787d23e13e2af..0ce69521310715fc7cb1e5492c3767522d272170 100644 +index c8899c4823fbce311df88f047ddfcc7a2b91ffc2..5293d9f43025b282e7c7c5fd908ca1ddeb3fa840 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1004,9 +1004,11 @@ public class PurpurWorldConfig { +@@ -1000,9 +1000,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0246-Skeletons-eat-wither-roses.patch b/patches/server/0246-Skeletons-eat-wither-roses.patch index 0a7662fef..bf46269a9 100644 --- a/patches/server/0246-Skeletons-eat-wither-roses.patch +++ b/patches/server/0246-Skeletons-eat-wither-roses.patch @@ -90,10 +90,10 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..cb714f78ad73f709967d7449c411c5b1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ce69521310715fc7cb1e5492c3767522d272170..5d63c4d4e79513ceba95910abc99144547cc39b6 100644 +index 5293d9f43025b282e7c7c5fd908ca1ddeb3fa840..1aa38cbc1d35424d9d4f37fc37dbb99545986891 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2607,6 +2607,7 @@ public class PurpurWorldConfig { +@@ -2603,6 +2603,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index 0ce69521310715fc7cb1e5492c3767522d272170..5d63c4d4e79513ceba95910abc991445 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2621,6 +2622,7 @@ public class PurpurWorldConfig { +@@ -2617,6 +2618,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0247-Enchantment-Table-Persists-Lapis.patch b/patches/server/0247-Enchantment-Table-Persists-Lapis.patch index 2dff1c2ad..bb74044bc 100644 --- a/patches/server/0247-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0247-Enchantment-Table-Persists-Lapis.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 1ef014b29645ed09ccffb898f1819428c3dc6259..859deb56915dba0e9189103708060cafd196c58e 100644 +index 9bc9b4218ffd966f43097c9e009b2926af58c810..e59a38d051179753fa9b29e8d746e25e162cac3e 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java @@ -42,6 +42,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5d63c4d4e79513ceba95910abc99144547cc39b6..79ab738db9ab21efc10342350c30be976059af57 100644 +index 1aa38cbc1d35424d9d4f37fc37dbb99545986891..9e3e3780e463275403276dc01a547a867456fe55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1581,6 +1581,11 @@ public class PurpurWorldConfig { +@@ -1577,6 +1577,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch index 094842eaf..c39f47a6b 100644 --- a/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0249-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 79ab738db9ab21efc10342350c30be976059af57..cf1c3da820858af68f26258802c596134d609012 100644 +index 9e3e3780e463275403276dc01a547a867456fe55..2754857fd911e7516c0aba65c14ce3e88a94828d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1061,6 +1061,11 @@ public class PurpurWorldConfig { +@@ -1057,6 +1057,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0250-Config-to-not-let-coral-die.patch b/patches/server/0250-Config-to-not-let-coral-die.patch index ef63c5caa..87b50e1fc 100644 --- a/patches/server/0250-Config-to-not-let-coral-die.patch +++ b/patches/server/0250-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cf1c3da820858af68f26258802c596134d609012..d0bfa10a1ae1bb6b75b832e2e984a7c7d807e797 100644 +index 2754857fd911e7516c0aba65c14ce3e88a94828d..1165b39c25291b096a8735086e4b43b7065910bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -910,6 +910,11 @@ public class PurpurWorldConfig { +@@ -906,6 +906,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0251-Add-local-difficulty-api.patch b/patches/server/0251-Add-local-difficulty-api.patch index c4d44eb6d..20eae83c7 100644 --- a/patches/server/0251-Add-local-difficulty-api.patch +++ b/patches/server/0251-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 38b046da5acac8633db8618a2957187d291f5e73..f48232e3309cb07ce7b11676b24c62982e3c65a3 100644 +index 33e4818ba5a90d78d69baad9f6b1be1b1382e9f3..02dca1188af7b235610d4f432cae47bcd624d5b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2345,6 +2345,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2386,6 +2386,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0252-Add-toggle-for-RNG-manipulation.patch b/patches/server/0252-Add-toggle-for-RNG-manipulation.patch index 1d9d0f30a..72a1f871f 100644 --- a/patches/server/0252-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0252-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 543fc2aeee9fa16a5493b947e49d37ff678935df..74c5b87a2a382e37db7e4c12470badcf9e07cf54 100644 +index 338c2afa277178b3d4d667142799f015c7b97cd0..7e7d13424ea1328ca37b1201a74ac0d4f933a8c3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -582,7 +582,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -33,10 +33,10 @@ index ea474ba1d37a594177ada2fd93302f874ed5dc73..3ca9a7f289d8c3f0b0df8f1cd4a5ca12 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0bfa10a1ae1bb6b75b832e2e984a7c7d807e797..2c4f8c06d85d456ccc6ad069b9bccbc44146b983 100644 +index 1165b39c25291b096a8735086e4b43b7065910bb..076988e405137c52baa84408bcec9fa9c80f76a0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -215,9 +215,11 @@ public class PurpurWorldConfig { +@@ -211,9 +211,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0253-Remove-Timings.patch b/patches/server/0253-Remove-Timings.patch index aabd87193..2df116d04 100644 --- a/patches/server/0253-Remove-Timings.patch +++ b/patches/server/0253-Remove-Timings.patch @@ -42,10 +42,10 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..01efbc507b3d58f13f78ee286f93df40 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index bf6620d9041ea63bc09d361e205c685de0542437..43b2902bb015001de5939da801979194af7bf501 100644 +index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949edba80c373 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1605,15 +1605,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -97,7 +97,7 @@ index bf6620d9041ea63bc09d361e205c685de0542437..43b2902bb015001de5939da801979194 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1766,21 +1766,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { // Paper - Ensure main @@ -522,7 +522,7 @@ index f0198fbdc39732075b647e6ca99a6ded99d37efc..6f4e471c45195996a1cdd93c7dfb64e6 int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1248,7 +1248,7 @@ public abstract class PlayerList { +@@ -1249,7 +1249,7 @@ public abstract class PlayerList { } // Paper end - Incremental chunk and player saving } @@ -581,7 +581,7 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 442c77fb3ac421ae6a90b5b96e1d00d4d65eeade..e7642c30833d1efd159cd15429e1247022cfd511 100644 +index 7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac..ccc6204141298deea56d996fab24254d25857da5 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1415,15 +1415,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0254-Remove-Mojang-Profiler.patch b/patches/server/0254-Remove-Mojang-Profiler.patch index 40611b8c8..7672e7097 100644 --- a/patches/server/0254-Remove-Mojang-Profiler.patch +++ b/patches/server/0254-Remove-Mojang-Profiler.patch @@ -83,7 +83,7 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 43b2902bb015001de5939da801979194af7bf501..cef8a7eae708a47dc50c8392ab0e1a35882bfcfa 100644 +index 73d6c71c6e38dcfff9f09fd2f54949edba80c373..96902343e202617413672ddb609e4b91713e5b94 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -422,13 +422,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return false; } : this::haveTime); -@@ -1330,7 +1330,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1647,7 +1647,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -246,7 +246,7 @@ index 43b2902bb015001de5939da801979194af7bf501..cef8a7eae708a47dc50c8392ab0e1a35 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1838,17 +1838,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2860,40 +2860,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1176,7 +1176,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1178,7 +1178,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1112,7 +1112,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 return; } // Paper end -@@ -1197,8 +1197,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1199,8 +1199,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1123,7 +1123,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1217,7 +1217,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1219,7 +1219,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1132,7 +1132,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1320,7 +1320,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1322,7 +1322,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1141,7 +1141,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 } } // Paper start - detailed watchdog information -@@ -3312,7 +3312,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3314,7 +3314,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.processPortalCooldown(); if (this.portalProcess != null) { if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) { @@ -1150,7 +1150,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 this.setPortalCooldown(); DimensionTransition dimensiontransition = this.portalProcess.getPortalDestination(worldserver, this); -@@ -3324,7 +3324,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3326,7 +3326,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1159,7 +1159,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 } else if (this.portalProcess.hasExpired()) { this.portalProcess = null; } -@@ -3827,7 +3827,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3829,7 +3829,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1168,7 +1168,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 Entity entity2 = worldserver1.dimension() == worldserver.dimension() ? this : this.getType().create(worldserver1); if (entity2 != null) { -@@ -3863,7 +3863,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3865,7 +3865,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess teleportTarget.postDimensionTransition().onTransition(entity2); } @@ -1178,7 +1178,7 @@ index 6aeedfc6f2c98e7d05f5f01dcc905cc13de9afbd..1ed8cbed1c98053d868b242ee23012f8 } } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b6b23819deeb8a439de37c291f82a4aa8c30ffc5..8f06ae8d6657665a76d7b4fff5b517b9a25a3085 100644 +index 409d5c775b3187f2d3b58879e3c945d16a690299..7e00f1f875c7761cfbc1964a3d76da08c36c60f1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -444,7 +444,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0257-Debug-Marker-API.patch b/patches/server/0257-Debug-Marker-API.patch index 2d8a1d5c2..a25fcc86c 100644 --- a/patches/server/0257-Debug-Marker-API.patch +++ b/patches/server/0257-Debug-Marker-API.patch @@ -52,10 +52,10 @@ index ad71ba70b24481120e303e174ab07c7a31a068c6..300c8a94771d56e6bb6da692092882c3 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index f48232e3309cb07ce7b11676b24c62982e3c65a3..ab16b5a8381fcd5f0890e0fc0801a6e88ce8a740 100644 +index 02dca1188af7b235610d4f432cae47bcd624d5b8..ad74d80f620d0e481a9613fcb29d3ab114154a4e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2349,6 +2349,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2390,6 +2390,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } diff --git a/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch index 46c64a1e2..758c970ec 100644 --- a/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0258-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 4dc060bc677984d91a30a88155c576d5e187aa1b..061706ee732f9809d6b73305c1487125 if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c4f8c06d85d456ccc6ad069b9bccbc44146b983..a849b947f1f2c06571687d35bebf73e0f7635b10 100644 +index 076988e405137c52baa84408bcec9fa9c80f76a0..c5b3ab8b87cae756149b98580a24766e67dc5bc6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -382,6 +382,7 @@ public class PurpurWorldConfig { +@@ -378,6 +378,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index 2c4f8c06d85d456ccc6ad069b9bccbc44146b983..a849b947f1f2c06571687d35bebf73e0 private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -390,6 +391,7 @@ public class PurpurWorldConfig { +@@ -386,6 +387,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0259-Add-skeleton-bow-accuracy-option.patch b/patches/server/0259-Add-skeleton-bow-accuracy-option.patch index 6ab7078ac..1b58fdef8 100644 --- a/patches/server/0259-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0259-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 4aeb23de31e826d5cf27f8c91bd60c911f769a17..f9532a45419699585d1f20d27d5857a3 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a849b947f1f2c06571687d35bebf73e0f7635b10..605f08428ef8e9f784313a9f50b7483ff1ebb347 100644 +index c5b3ab8b87cae756149b98580a24766e67dc5bc6..b507f67106e5096ebb75fd50b470916feeec6504 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2627,6 +2627,8 @@ public class PurpurWorldConfig { +@@ -2623,6 +2623,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index a849b947f1f2c06571687d35bebf73e0f7635b10..605f08428ef8e9f784313a9f50b7483f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2642,6 +2644,18 @@ public class PurpurWorldConfig { +@@ -2638,6 +2640,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0261-Make-pufferfish-config-relocatable.patch b/patches/server/0261-Make-pufferfish-config-relocatable.patch index aa6c6c0f7..6df9e6105 100644 --- a/patches/server/0261-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0261-Make-pufferfish-config-relocatable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 92685ae1288fa509301c696bd7e49fcdab8062af..2acb11790036827fb6335b5a5337d367a0ba0854 100644 +index bcaf4932c82b0e6702450e2feb09828edf58cbf0..8f1645573780d12bf29d441d31eab1b76cd9e70f 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { @@ -26,19 +26,19 @@ index 92685ae1288fa509301c696bd7e49fcdab8062af..2acb11790036827fb6335b5a5337d367 if (configFile.exists()) { try { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index a3433ed1e8a15ec6336f99842bc80c62e81be792..dbfdb4bb7dd7ba139550e1ec4889d452507be511 100644 +index 430418990e218bca55fd7c817086bf7a6866fa1a..4bd75f2a4f932fc63efd4e4d884aa834184250fa 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -248,6 +248,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - org.purpurmc.purpur.PurpurConfig.registerCommands(); - // Purpur end + this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark + com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now + gg.pufferfish.pufferfish.PufferfishConfig.pufferfishFile = (java.io.File) options.valueOf("pufferfish-settings"); // Purpur gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 260f79affee997adbe8d08f2a2cb3aa68083f497..4e58fd710ff9edfb4c1981c3e6e5417619e1e9c0 100644 +index 316c5e1460ccf3386c4c8623eabb7f087df8c4b9..e35a562eec4b65335723c50180fe1471f858ae60 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -182,6 +182,12 @@ public class Main { diff --git a/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch index 8ee836d70..df690be07 100644 --- a/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0266-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7e3ed2cdd5898ebc33e392a3b4324021e6eba13d..3c8c5ef45306c80a59501adf5fd8bb36191ccc89 100644 +index 7e00f1f875c7761cfbc1964a3d76da08c36c60f1..f714e2dc212a3b70977e93c55e94f8b272c5b02d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1129,6 +1129,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,7 +30,7 @@ index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09b this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 605f08428ef8e9f784313a9f50b7483ff1ebb347..d24f489d4a55fba13cb2a95a6111c3d5654747c1 100644 +index b507f67106e5096ebb75fd50b470916feeec6504..a4df0673c452cb4762db4a32d51492c04a849add 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -131,6 +131,7 @@ public class PurpurWorldConfig { @@ -41,7 +41,7 @@ index 605f08428ef8e9f784313a9f50b7483ff1ebb347..d24f489d4a55fba13cb2a95a6111c3d5 public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean persistentTileEntityLore = false; -@@ -160,6 +161,7 @@ public class PurpurWorldConfig { +@@ -158,6 +159,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals); imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch index af38920ac..c2a9c770a 100644 --- a/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d24f489d4a55fba13cb2a95a6111c3d5654747c1..3ac6dff639e56cfd0f2411f02f34991f18f9b8d6 100644 +index a4df0673c452cb4762db4a32d51492c04a849add..805cc5383c31784ea05ed2916215d91eb2f18f50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1464,6 +1464,7 @@ public class PurpurWorldConfig { +@@ -1460,6 +1460,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index d24f489d4a55fba13cb2a95a6111c3d5654747c1..3ac6dff639e56cfd0f2411f02f34991f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1483,6 +1484,7 @@ public class PurpurWorldConfig { +@@ -1479,6 +1480,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0271-Fire-Immunity-API.patch b/patches/server/0271-Fire-Immunity-API.patch index bde452c20..e45ebe28d 100644 --- a/patches/server/0271-Fire-Immunity-API.patch +++ b/patches/server/0271-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b869227612f04b461 100644 +index 95885f71825cbf1e46001d60f81dc88049ec6e22..0e3494fc7a073eb6cde1a2e62303b1238d59b156 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -433,6 +433,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1878,7 +1879,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1880,7 +1881,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2587,6 +2588,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2589,6 +2590,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2734,6 +2740,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2736,6 +2742,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,7 +50,7 @@ index 9911d937ddaa456157aeacfe3178ab7d10fa5a3b..d383a8c3c9d3ba5fc191826b86922761 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 33469665998543f45e68eb50e7dc3f3c6af7b0c4..bec40e26e17ba6fdefb68c79e2fa7a9593b0f4fe 100644 +index 7b7a58039eb1a288262228444712c84d6e2aef24..770606c4462d85d116f6d0bf91192dc49f438d0f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -87,6 +87,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index b4a12e3f2..c8dcda443 100644 --- a/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d383a8c3c9d3ba5fc191826b869227612f04b461..e3e71558d9d99fa878511f051d1d8592f8684ac0 100644 +index 0e3494fc7a073eb6cde1a2e62303b1238d59b156..7aadcaa1785c6560eb1ce2f1179225facca47d84 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -968,6 +968,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -970,6 +970,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -17,10 +17,10 @@ index d383a8c3c9d3ba5fc191826b869227612f04b461..e3e71558d9d99fa878511f051d1d8592 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3ac6dff639e56cfd0f2411f02f34991f18f9b8d6..664929350ede4ab649ea3e5fbc188bd985043945 100644 +index 805cc5383c31784ea05ed2916215d91eb2f18f50..85bf63343593424977ea4f79e4d16002f60cdd89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -422,6 +422,7 @@ public class PurpurWorldConfig { +@@ -418,6 +418,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 3ac6dff639e56cfd0f2411f02f34991f18f9b8d6..664929350ede4ab649ea3e5fbc188bd9 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -449,6 +450,7 @@ public class PurpurWorldConfig { +@@ -445,6 +446,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0275-End-Crystal-Cramming.patch b/patches/server/0275-End-Crystal-Cramming.patch index 9c5e57486..5262d6725 100644 --- a/patches/server/0275-End-Crystal-Cramming.patch +++ b/patches/server/0275-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 664929350ede4ab649ea3e5fbc188bd985043945..bb4ba53f6cb9de9356f918881cbdad5a23dbcdc9 100644 +index 85bf63343593424977ea4f79e4d16002f60cdd89..af8a2ac0e0e089362f0b1be6e48cf57e49a67ad7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -953,6 +953,7 @@ public class PurpurWorldConfig { +@@ -949,6 +949,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 664929350ede4ab649ea3e5fbc188bd985043945..bb4ba53f6cb9de9356f918881cbdad5a private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -980,6 +981,7 @@ public class PurpurWorldConfig { +@@ -976,6 +977,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 121b93b5f..6c4491172 100644 --- a/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bb4ba53f6cb9de9356f918881cbdad5a23dbcdc9..a27129bdc292623a8ecf0d98c265f91df9d694c9 100644 +index af8a2ac0e0e089362f0b1be6e48cf57e49a67ad7..3a004e2cf42c90f453f768b245e10c59fceeb3db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -852,11 +852,13 @@ public class PurpurWorldConfig { +@@ -848,11 +848,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch index 1b4fe3eec..110605051 100644 --- a/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0278-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index 6395bd2ffd734ca73af17b003d1505971ea31a48..261613d254edef33431794d5e1f7802c } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a27129bdc292623a8ecf0d98c265f91df9d694c9..c2a62fdd982121cd2b8d57992730d82d913d9cae 100644 +index 3a004e2cf42c90f453f768b245e10c59fceeb3db..51bc35683234e0dab67aa079b323671755e9c3c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -229,6 +229,11 @@ public class PurpurWorldConfig { +@@ -225,6 +225,11 @@ public class PurpurWorldConfig { infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } diff --git a/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch index 4f919f620..2f0667919 100644 --- a/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2a62fdd982121cd2b8d57992730d82d913d9cae..993784f096ed3bc0a878e9f5b0c9a5e3f9a7f7a7 100644 +index 51bc35683234e0dab67aa079b323671755e9c3c2..f2e930f43ca30dde37ea8bb8bd5012cac9e61fac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -906,8 +906,20 @@ public class PurpurWorldConfig { +@@ -902,8 +902,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0284-Shears-can-defuse-TNT.patch b/patches/server/0284-Shears-can-defuse-TNT.patch index db465f837..d1a15e82f 100644 --- a/patches/server/0284-Shears-can-defuse-TNT.patch +++ b/patches/server/0284-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 993784f096ed3bc0a878e9f5b0c9a5e3f9a7f7a7..602dc0e0dd27580fe30aac979998edbca64842f4 100644 +index f2e930f43ca30dde37ea8bb8bd5012cac9e61fac..bf8570b28103b0d7448acef4d0cab96855d8ef23 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3437,4 +3437,11 @@ public class PurpurWorldConfig { +@@ -3433,4 +3433,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch index ab4a63c0f..5b3e48822 100644 --- a/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0286-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 92b71f76c7518068b4b5d19b5f41f2d1c796ac47..82ba970f265142e2fe7c8c5152f5004a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 602dc0e0dd27580fe30aac979998edbca64842f4..c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2 100644 +index bf8570b28103b0d7448acef4d0cab96855d8ef23..c5a99b5e996b68e9026fb828587544a1fbccac9a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2177,6 +2177,7 @@ public class PurpurWorldConfig { +@@ -2173,6 +2173,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 602dc0e0dd27580fe30aac979998edbca64842f4..c0e2bfe21e601996d6f2f8677e6eefc2 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2191,6 +2192,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2188,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 6b5af40ef..d8d237ce3 100644 --- a/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0287-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,7 +5,7 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6896fc2fe 100644 +index b9810a1f6ac91ae9631dd1ebc225f009d91b7845..d6cac5ed7916040104f2a79ed38eb8b453ea3db6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java @@ -606,11 +606,18 @@ public class PiglinAi { @@ -29,10 +29,10 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2..d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8 100644 +index c5a99b5e996b68e9026fb828587544a1fbccac9a..68ecd4d262a156d8916e1450673e4c30a70ae458 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2354,6 +2354,7 @@ public class PurpurWorldConfig { +@@ -2350,6 +2350,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index c0e2bfe21e601996d6f2f8677e6eefc2ed921fe2..d85f95b6ee7c44b3c25dea57d15c7dbb private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2370,6 +2371,7 @@ public class PurpurWorldConfig { +@@ -2366,6 +2367,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0289-place-end-crystal-on-any-block.patch b/patches/server/0289-place-end-crystal-on-any-block.patch index 14bdd4bb7..64377cb88 100644 --- a/patches/server/0289-place-end-crystal-on-any-block.patch +++ b/patches/server/0289-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index cc1e5882bee94864ad189d7f01ce78223411e51d..4c827c26656ac487cc8c66eeb67e4f38 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8..26e1b0c813885634b4bd3b9913e8fe0b4e3187e0 100644 +index 68ecd4d262a156d8916e1450673e4c30a70ae458..38d95e773a23eedc4815e9e1d2eb7590af9e0512 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -973,6 +973,7 @@ public class PurpurWorldConfig { +@@ -969,6 +969,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index d85f95b6ee7c44b3c25dea57d15c7dbb645c9cc8..26e1b0c813885634b4bd3b9913e8fe0b private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -1001,6 +1002,7 @@ public class PurpurWorldConfig { +@@ -997,6 +998,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch index e3a69ddc9..01b315cbc 100644 --- a/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0290-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26e1b0c813885634b4bd3b9913e8fe0b4e3187e0..7513b625274fe0a50ea4ac7b91cdca9121d68a3c 100644 +index 38d95e773a23eedc4815e9e1d2eb7590af9e0512..6a732c191416d23988fb9a85f1bcd3929d41cb4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -148,6 +148,7 @@ public class PurpurWorldConfig { +@@ -146,6 +146,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 26e1b0c813885634b4bd3b9913e8fe0b4e3187e0..7513b625274fe0a50ea4ac7b91cdca91 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -184,6 +185,7 @@ public class PurpurWorldConfig { +@@ -180,6 +181,7 @@ public class PurpurWorldConfig { rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/server/0292-Configurable-villager-search-radius.patch b/patches/server/0292-Configurable-villager-search-radius.patch index c89adcef4..bf84c3f1a 100644 --- a/patches/server/0292-Configurable-villager-search-radius.patch +++ b/patches/server/0292-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7513b625274fe0a50ea4ac7b91cdca9121d68a3c..9d0fd2a3dc305441e43e556d4d593758dcd92ac0 100644 +index 6a732c191416d23988fb9a85f1bcd3929d41cb4e..644715e93c568067c20d5eb3ab464ef3706174a5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3030,6 +3030,8 @@ public class PurpurWorldConfig { +@@ -3026,6 +3026,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 7513b625274fe0a50ea4ac7b91cdca9121d68a3c..9d0fd2a3dc305441e43e556d4d593758 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -3067,6 +3069,8 @@ public class PurpurWorldConfig { +@@ -3063,6 +3065,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch index c84b7766f..9a27a8205 100644 --- a/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0293-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,10 +18,10 @@ index 963df673d7f63e2aea25d4dce28edef06899eabe..4f10d4686f12a81a77f5fc103139aa03 this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9d0fd2a3dc305441e43e556d4d593758dcd92ac0..b291c770e1a5a7b56e592c62a2ac17dbad3268e9 100644 +index 644715e93c568067c20d5eb3ab464ef3706174a5..2215add76c72e0d5d15b78849634542873765235 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2512,6 +2512,7 @@ public class PurpurWorldConfig { +@@ -2508,6 +2508,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 9d0fd2a3dc305441e43e556d4d593758dcd92ac0..b291c770e1a5a7b56e592c62a2ac17db private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2543,6 +2544,7 @@ public class PurpurWorldConfig { +@@ -2539,6 +2540,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp); diff --git a/patches/server/0294-config-for-startup-commands.patch b/patches/server/0294-config-for-startup-commands.patch index f81f10e89..a3e7921e1 100644 --- a/patches/server/0294-config-for-startup-commands.patch +++ b/patches/server/0294-config-for-startup-commands.patch @@ -5,13 +5,14 @@ Subject: [PATCH] config for startup commands diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cef8a7eae708a47dc50c8392ab0e1a35882bfcfa..4bcb20cd6cd971f25327ec1322bb172f036a54a4 100644 +index 96902343e202617413672ddb609e4b91713e5b94..d78cb68c3a53b277aa26186062efc716c8f80f36 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1264,6 +1264,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop