From 1c9c6b910ac1a350bc307f78c8261b9fbf9c5fa5 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Fri, 31 Dec 2021 09:45:42 -0600 Subject: [PATCH] [ci-skip] Reorder configs --- patches/server/0003-Purpur-config-files.patch | 18 +- patches/server/0006-Ridables.patch | 4 +- ...-Configurable-entity-base-attributes.patch | 12 +- patches/server/0011-AFK-API.patch | 4 +- .../0018-Player-invulnerabilities.patch | 6 +- ...20-Configurable-villager-brain-ticks.patch | 8 +- patches/server/0022-Silk-touch-spawners.patch | 4 +- ...772-Fix-Add-turtle-egg-block-options.patch | 12 +- patches/server/0027-Giants-AI-settings.patch | 6 +- .../0028-Zombie-horse-naturally-spawn.patch | 6 +- ...0029-Charged-creeper-naturally-spawn.patch | 6 +- ...bit-naturally-spawn-toast-and-killer.patch | 6 +- .../server/0032-Tulips-change-fox-type.patch | 6 +- .../server/0033-Breedable-Polar-Bears.patch | 6 +- .../server/0034-Chickens-can-retaliate.patch | 6 +- ...option-to-set-armorstand-step-height.patch | 6 +- .../server/0036-Cat-spawning-options.patch | 6 +- patches/server/0038-Cows-eat-mushrooms.patch | 6 +- .../server/0040-Pigs-give-saddle-back.patch | 6 +- ...41-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...42-Ender-dragon-always-drop-full-exp.patch | 6 +- .../0043-Signs-editable-on-right-click.patch | 10 +- ...moisten-from-water-directly-under-it.patch | 4 +- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...able-loot-drops-on-death-by-cramming.patch | 12 +- ...ption-to-toggle-milk-curing-bad-omen.patch | 6 +- ...low-loyalty-on-tridents-to-work-in-t.patch | 6 +- ...derman-and-creeper-griefing-controls.patch | 10 +- ...0055-Villagers-follow-emerald-blocks.patch | 10 +- .../0056-Allow-leashing-villagers.patch | 10 +- ...urable-search-radius-for-villagers-t.patch | 6 +- .../0058-Implement-infinite-liquids.patch | 17 +- ...59-Make-lava-flow-speed-configurable.patch | 6 +- ...Add-player-death-exp-control-options.patch | 6 +- ...urable-void-damage-height-and-damage.patch | 6 +- ...ispenser-curse-of-binding-protection.patch | 6 +- ...n-for-boats-to-eject-players-on-land.patch | 6 +- ...g-mends-most-damages-equipment-first.patch | 8 +- .../0067-Implement-elytra-settings.patch | 6 +- .../server/0068-Item-entity-immunities.patch | 4 +- .../0072-Configurable-jockey-options.patch | 20 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- .../0074-Add-phantom-spawning-options.patch | 6 +- ...0075-Implement-bed-explosion-options.patch | 6 +- ...ent-respawn-anchor-explosion-options.patch | 6 +- patches/server/0079-Entity-lifespan.patch | 4 +- ...leport-to-spawn-if-outside-world-bor.patch | 6 +- patches/server/0081-Squid-EAR-immunity.patch | 6 +- .../server/0082-Phantoms-burn-in-light.patch | 6 +- .../0083-Configurable-villager-breeding.patch | 6 +- .../0084-Redstone-deactivates-spawners.patch | 10 +- .../0085-Totems-work-in-inventory.patch | 6 +- ...6-Add-vindicator-johnny-spawn-chance.patch | 6 +- .../0088-Dispensers-place-anvils-option.patch | 4 +- patches/server/0089-Allow-anvil-colors.patch | 6 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...tities-can-use-portals-configuration.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 6 +- .../server/0098-Raid-cooldown-setting.patch | 8 +- ...e-config-options-per-projectile-type.patch | 4 +- ...sable-zombie-aggressiveness-towards-.patch | 6 +- patches/server/0102-Flying-squids-Oh-my.patch | 8 +- .../server/0103-Infinity-bow-settings.patch | 4 +- patches/server/0104-Stonecutter-damage.patch | 10 +- .../0105-Configurable-daylight-cycle.patch | 6 +- ...07-Furnace-uses-lava-from-underneath.patch | 4 +- ...re-add-farmland-mechanics-from-Alpha.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 12 +- ...e-entity-breeding-times-configurable.patch | 90 +++---- ...mes-from-item-forms-of-entities-to-e.patch | 10 +- ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 6 +- ...llowing-Endermen-to-despawn-even-whi.patch | 6 +- ...115-Add-configurable-snowball-damage.patch | 4 +- ...16-Changeable-Mob-Left-Handed-Chance.patch | 4 +- .../0117-Add-boat-fall-damage-config.patch | 6 +- .../0118-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 +- ...24-Configurable-default-collar-color.patch | 10 +- .../server/0125-Phantom-flames-on-swoop.patch | 6 +- ...s-to-open-even-with-a-solid-block-on.patch | 4 +- .../0128-Striders-give-saddle-back.patch | 6 +- ...therite-armor-grants-fire-resistance.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 96 +++---- ...allow-Note-Block-sounds-when-blocked.patch | 6 +- ...0134-Add-EntityTeleportHinderedEvent.patch | 6 +- .../0135-Farmland-trampling-changes.patch | 4 +- ...36-Movement-options-for-armor-stands.patch | 6 +- .../server/0137-Fix-stuck-in-portals.patch | 6 +- ...oggle-for-water-sensitive-mob-damage.patch | 218 +++++++-------- ...39-Config-to-always-tame-in-Creative.patch | 6 +- .../0140-End-crystal-explosion-options.patch | 4 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 10 +- .../server/0142-Dont-run-with-scissors.patch | 6 +- patches/server/0143-One-Punch-Man.patch | 6 +- ...0144-Add-config-for-snow-on-blue-ice.patch | 4 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 6 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 6 +- patches/server/0150-Tick-fluids-config.patch | 6 +- ...151-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0154-Sneak-to-bulk-process-composter.patch | 4 +- .../0155-Config-for-skipping-night.patch | 6 +- ...0156-Add-config-for-villager-trading.patch | 10 +- patches/server/0158-Drowning-Settings.patch | 4 +- ...Break-individual-slabs-when-sneaking.patch | 4 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 4 +- ...ig-to-show-Armor-Stand-arms-on-spawn.patch | 8 +- ...ption-to-make-doors-require-redstone.patch | 4 +- .../0164-Configurable-sponge-absorption.patch | 4 +- .../0165-Projectile-offset-config.patch | 4 +- ...for-powered-rail-activation-distance.patch | 12 +- .../0167-Piglin-portal-spawn-modifier.patch | 6 +- ...ble-damage-settings-for-magma-blocks.patch | 6 +- ...0-Config-for-wither-explosion-radius.patch | 6 +- ...ing-the-blocks-that-turn-into-dirt-p.patch | 4 +- .../0173-Configurable-piston-push-limit.patch | 4 +- .../0175-Configurable-mob-blindness.patch | 6 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0178-Iron-golem-poppy-calms-anger.patch | 6 +- patches/server/0179-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 +- ...85-ShulkerBox-allow-oversized-stacks.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 6 +- .../0188-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 4 +- .../0190-Add-toggle-for-sand-duping-fix.patch | 4 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...ing-food-fills-hunger-bar-completely.patch | 6 +- ...97-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...9-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../0202-Armor-click-equip-options.patch | 6 +- .../server/0205-Tool-actionable-options.patch | 10 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- ...0210-Silk-touchable-budding-amethyst.patch | 6 +- .../server/0211-Big-dripleaf-tilt-delay.patch | 4 +- .../0212-Player-ridable-in-water-option.patch | 6 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0214-Add-compass-command.patch | 6 +- ...ent-horses-from-standing-with-riders.patch | 6 +- .../0216-Toggle-for-kinetic-damage.patch | 4 +- ...d-Option-for-disable-observer-clocks.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...9-Option-for-sponges-to-work-on-lava.patch | 4 +- ...0220-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 6 +- .../0223-Conduit-behavior-configuration.patch | 4 +- .../server/0224-Cauldron-fill-chances.patch | 4 +- ...to-allow-mobs-to-pathfind-over-rails.patch | 8 +- .../0226-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 | 4 +- ...-Halloween-options-and-optimizations.patch | 4 +- ...-Campfire-option-for-lit-when-placed.patch | 12 +- ...xtinguish-fire-blocks-with-snowballs.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 6 +- .../server/0242-Signs-allow-color-codes.patch | 6 +- ...-twisting-vines-configurable-max-gro.patch | 31 ++- .../0244-Mobs-always-drop-experience.patch | 250 +++++++++--------- ...t-spiders-from-climbing-world-border.patch | 6 +- ...248-Ability-for-hoe-to-replant-crops.patch | 8 +- ...aring-jeb-produces-random-color-wool.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 25 +- .../0251-Mob-head-visibility-percent.patch | 14 +- 180 files changed, 906 insertions(+), 903 deletions(-) diff --git a/patches/server/0003-Purpur-config-files.patch b/patches/server/0003-Purpur-config-files.patch index fe29beb95..2d864f790 100644 --- a/patches/server/0003-Purpur-config-files.patch +++ b/patches/server/0003-Purpur-config-files.patch @@ -30,7 +30,7 @@ index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..7bc497bcae6a6a752e3c432178cb1e3c metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index cb0045fc4ddd738c45dee89d57b213a633b9a136..6e8111ef16439d2b3025ebe2a0418b245420bd88 100644 +index 098182d2426a25cef0bc285356bc346db0af8172..c26435a6b5cdc61ae5d123dacea711a4a9f666d1 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -236,6 +236,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy @@ -85,7 +85,7 @@ index fd3d3e22613511a42f7fc343079b081c72ff3f61..8bf98d8f8e9f0baaf203a9e8d1868323 io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // load mappings for stacktrace deobf and etc. io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 4247dcb003626535dbb997f48ad9f61380bd17e9..03a4c5fa746033825c26a031fbf79f721be6fa84 100644 +index 4247dcb003626535dbb997f48ad9f61380bd17e9..76faf838e27813595850ebb8c9a028f1c68325ad 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -169,6 +169,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -101,7 +101,7 @@ index 4247dcb003626535dbb997f48ad9f61380bd17e9..03a4c5fa746033825c26a031fbf79f72 protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, final DimensionType dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper -+ this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig((ServerLevel) this, ((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur ++ this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit @@ -338,16 +338,14 @@ index 0000000000000000000000000000000000000000..fdfb20170c27711085aa077286687603 +} diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..41e1c1c801f7734d123e7e8fb68b84167d49ff6c +index 0000000000000000000000000000000000000000..ad0c7304f8791b2dca92d9e0c5412354e174d5be --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,96 @@ +@@ -0,0 +1,90 @@ +package org.purpurmc.purpur; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; -+import net.minecraft.server.level.ServerLevel; -+import net.minecraft.world.Difficulty; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; @@ -366,10 +364,8 @@ index 0000000000000000000000000000000000000000..41e1c1c801f7734d123e7e8fb68b8416 + +import java.util.ArrayList; +import java.util.HashMap; -+import java.util.HashSet; +import java.util.List; +import java.util.Map; -+import java.util.Set; +import java.util.function.Predicate; +import java.util.logging.Level; +import static org.purpurmc.purpur.PurpurConfig.log; @@ -377,12 +373,10 @@ index 0000000000000000000000000000000000000000..41e1c1c801f7734d123e7e8fb68b8416 +@SuppressWarnings("unused") +public class PurpurWorldConfig { + -+ private final ServerLevel level; + private final String worldName; + private final World.Environment environment; + -+ public PurpurWorldConfig(ServerLevel level, String worldName, World.Environment environment) { -+ this.level = level; ++ public PurpurWorldConfig(String worldName, World.Environment environment) { + this.worldName = worldName; + this.environment = environment; + init(); diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 828256d49..5ec7d18f5 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -4651,10 +4651,10 @@ index fdfb20170c27711085aa0772866876035e0d98c2..5350ffab8477a2da4891132cf8b7a65c + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41e1c1c801f7734d123e7e8fb68b84167d49ff6c..181b5912341612862a85553b2d9b43fc3b236557 100644 +index ad0c7304f8791b2dca92d9e0c5412354e174d5be..b8103294d3963a9bfe7d4f4199be866158f580ec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -93,4 +93,532 @@ public class PurpurWorldConfig { +@@ -87,4 +87,532 @@ public class PurpurWorldConfig { final Map value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index af6131178..ae076664d 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5c1a9dc4eab3ecdf7f8ea35733717a3de501d85a..7af5b443983d557199100c0ab5044e96ebf52d9b 100644 +index 43697061ddbbdf160453d3ab189097a6a56e6246..d1e937e7294d360e4f81dc54730b3f4ef1fe3c27 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -149,7 +149,7 @@ import org.bukkit.plugin.PluginManager; @@ -1083,7 +1083,7 @@ index b72866283e92433e95f0140037a1fd3182b0577a..cd26c22664fb23457f99fe04607146c8 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 909a7bffcd0d7432f0714417c286fb75b6b951b9..f3d73b9cf3d3cd0d69ea2f8152a1ced4289ee417 100644 +index a8c6971cc7d004bdc61a2b49e4542a8af46e8539..9448bdd5026f35bba805dee19ceead5d76bda951 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -35,6 +35,11 @@ public class Skeleton extends AbstractSkeleton { @@ -1422,10 +1422,10 @@ index ab648e7dafd78f414646cef96b422e87da5c1982..0bcfece84ac11f04671ed38a99b31da9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 181b5912341612862a85553b2d9b43fc3b236557..c250faf84817f67dea7f088fa2530be82fcf7688 100644 +index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05e287ee08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -104,257 +104,573 @@ public class PurpurWorldConfig { +@@ -98,257 +98,573 @@ public class PurpurWorldConfig { } public boolean axolotlRidable = false; @@ -1999,7 +1999,7 @@ index 181b5912341612862a85553b2d9b43fc3b236557..c250faf84817f67dea7f088fa2530be8 } public boolean phantomRidable = false; -@@ -363,6 +679,7 @@ public class PurpurWorldConfig { +@@ -357,6 +673,7 @@ public class PurpurWorldConfig { public float phantomFlameDamage = 1.0F; public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; @@ -2007,7 +2007,7 @@ index 181b5912341612862a85553b2d9b43fc3b236557..c250faf84817f67dea7f088fa2530be8 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -370,255 +687,559 @@ public class PurpurWorldConfig { +@@ -364,255 +681,559 @@ public class PurpurWorldConfig { phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage); phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime); phantomAllowGriefing = getBoolean("mobs.phantom.allow-griefing", phantomAllowGriefing); diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 5af7e65a9..444385f77 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -276,10 +276,10 @@ index b404fcddc67b7593201f1679587d0ac4c4bfd51c..25f31ce77337079ebc2074f1ae2990cc public static int barrelRows = 3; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c250faf84817f67dea7f088fa2530be82fcf7688..3fdd013d88e1c4ef62b277ed71a3531e2db8253f 100644 +index 373bdce6590564bd9de4a571a91bbf05e287ee08..27d70e8e29902fe4275200cf7508298047b578cf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,24 @@ public class PurpurWorldConfig { +@@ -88,6 +88,24 @@ public class PurpurWorldConfig { return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index 789db9c99..7786f2376 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -146,10 +146,10 @@ index 2cdd8d9708fbd692bd0530ed63dc245af943ffb9..5d8422cc51c20837a74e1aa4425c70bf // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fdd013d88e1c4ef62b277ed71a3531e2db8253f..e5ba1b21c18c07297b69d1f8b1cb34cdb15135b2 100644 +index 27d70e8e29902fe4275200cf7508298047b578cf..29de4c4316285b7ddf77c508d098584d2cb365e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -99,6 +99,8 @@ public class PurpurWorldConfig { +@@ -93,6 +93,8 @@ public class PurpurWorldConfig { public boolean idleTimeoutCountAsSleeping = false; public boolean idleTimeoutUpdateTabList = false; public boolean idleTimeoutTargetPlayer = true; @@ -158,7 +158,7 @@ index 3fdd013d88e1c4ef62b277ed71a3531e2db8253f..e5ba1b21c18c07297b69d1f8b1cb34cd private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -110,6 +112,8 @@ public class PurpurWorldConfig { +@@ -104,6 +106,8 @@ public class PurpurWorldConfig { idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); diff --git a/patches/server/0020-Configurable-villager-brain-ticks.patch b/patches/server/0020-Configurable-villager-brain-ticks.patch index df4f25464..e8aae763f 100644 --- a/patches/server/0020-Configurable-villager-brain-ticks.patch +++ b/patches/server/0020-Configurable-villager-brain-ticks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable villager brain ticks diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 0a2131d7455d7de7c9a3f9d50710da870062e714..4c20685b3d8735272f9f97a75485a6438cef6501 100644 +index 9a8e08e9a44900ad3899a63992948941abe7c5d8..17eb573debec8e67dab2f5790ba9fc0a1f09a208 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -137,6 +137,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -36,10 +36,10 @@ index 0a2131d7455d7de7c9a3f9d50710da870062e714..4c20685b3d8735272f9f97a75485a643 this.level.getProfiler().pop(); if (this.assignProfessionWhenSpawned) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e9ba3a8582c8e5d1e14bf3bfa8ecfce5ccf7b0c..6df320ab8214669517d5de30a28f044a5a6b4a33 100644 +index 29de4c4316285b7ddf77c508d098584d2cb365e9..ccd3597d78a12d8e6a3514c0f9cfa2aa31b688f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1077,6 +1077,8 @@ public class PurpurWorldConfig { +@@ -1071,6 +1071,8 @@ public class PurpurWorldConfig { public boolean villagerRidable = false; public boolean villagerRidableInWater = false; public double villagerMaxHealth = 20.0D; @@ -48,7 +48,7 @@ index 8e9ba3a8582c8e5d1e14bf3bfa8ecfce5ccf7b0c..6df320ab8214669517d5de30a28f044a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1086,6 +1088,8 @@ public class PurpurWorldConfig { +@@ -1080,6 +1082,8 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); diff --git a/patches/server/0022-Silk-touch-spawners.patch b/patches/server/0022-Silk-touch-spawners.patch index f0213a777..ca75f241d 100644 --- a/patches/server/0022-Silk-touch-spawners.patch +++ b/patches/server/0022-Silk-touch-spawners.patch @@ -139,10 +139,10 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7c // this.popExperience(worldserver, blockposition, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f32045fa03634879dd88711c1f657a7635ce3011..4019c768748b65a0d039d3ef0a86a01b098e91c0 100644 +index ccd3597d78a12d8e6a3514c0f9cfa2aa31b688f8..0b6d6763e8ba54768c35fdb2a30fbb89f81c7b67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -116,6 +116,38 @@ public class PurpurWorldConfig { +@@ -110,6 +110,38 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); } diff --git a/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch index 5a3283b66..2b4fe7f58 100644 --- a/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch @@ -50,11 +50,11 @@ index 8033d2074d68635515b4737b4416ec9354a3edad..b942e7c85e6c8f9a7664d9e5bf93bcd7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4019c768748b65a0d039d3ef0a86a01b098e91c0..7bad7595539102a063b3f3b417eaa9462a243e74 100644 +index 0b6d6763e8ba54768c35fdb2a30fbb89f81c7b67..345b55b1d44499d7b748a3f75906a66867afef10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,15 @@ public class PurpurWorldConfig { - return value.isEmpty() ? fallback : value; +@@ -142,6 +142,15 @@ public class PurpurWorldConfig { + }); } + public boolean turtleEggsBreakFromExpOrbs = true; @@ -66,6 +66,6 @@ index 4019c768748b65a0d039d3ef0a86a01b098e91c0..7bad7595539102a063b3f3b417eaa946 + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); + } + - public boolean idleTimeoutKick = true; - public boolean idleTimeoutTickNearbyEntities = true; - public boolean idleTimeoutCountAsSleeping = false; + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0027-Giants-AI-settings.patch b/patches/server/0027-Giants-AI-settings.patch index d63da2213..518b93df1 100644 --- a/patches/server/0027-Giants-AI-settings.patch +++ b/patches/server/0027-Giants-AI-settings.patch @@ -120,10 +120,10 @@ index d1756353b9fc22f6e9b957a708073545ab3c941a..de7c2064b2c3876eebdee01908b39b1b } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7bad7595539102a063b3f3b417eaa9462a243e74..5beb1ae55b0426b065133b14d0d1618aa1a82eea 100644 +index 345b55b1d44499d7b748a3f75906a66867afef10..fd207fad3f094edb0c531edd396fc56da9b24521 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -477,6 +477,10 @@ public class PurpurWorldConfig { +@@ -471,6 +471,10 @@ public class PurpurWorldConfig { public double giantMovementSpeed = 0.5D; public double giantAttackDamage = 50.0D; public double giantMaxHealth = 100.0D; @@ -134,7 +134,7 @@ index 7bad7595539102a063b3f3b417eaa9462a243e74..5beb1ae55b0426b065133b14d0d1618a private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -492,6 +496,10 @@ public class PurpurWorldConfig { +@@ -486,6 +490,10 @@ public class PurpurWorldConfig { set("mobs.giant.attributes.max_health", oldValue); } giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); diff --git a/patches/server/0028-Zombie-horse-naturally-spawn.patch b/patches/server/0028-Zombie-horse-naturally-spawn.patch index cc9402c50..445bd19c0 100644 --- a/patches/server/0028-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0028-Zombie-horse-naturally-spawn.patch @@ -28,10 +28,10 @@ index f7cfc6d5ad13dba64c2350fe3fac7f31471e8642..ba095685ec775cb5a7ac9a5b7b0a9179 entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5beb1ae55b0426b065133b14d0d1618aa1a82eea..6e6c47e40926bd6bfe5c5af96d32757aa4972e96 100644 +index fd207fad3f094edb0c531edd396fc56da9b24521..7c2fe960ae8c04b828ad549d33ccf36392521e99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1269,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1263,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -39,7 +39,7 @@ index 5beb1ae55b0426b065133b14d0d1618aa1a82eea..6e6c47e40926bd6bfe5c5af96d32757a private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1284,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1278,6 +1279,7 @@ public class PurpurWorldConfig { zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); diff --git a/patches/server/0029-Charged-creeper-naturally-spawn.patch b/patches/server/0029-Charged-creeper-naturally-spawn.patch index 777fca7bf..4ae9cd204 100644 --- a/patches/server/0029-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0029-Charged-creeper-naturally-spawn.patch @@ -24,10 +24,10 @@ index cee9afa518547afab1f2772b0352dcf05752df44..624b736f11341816c91f422cf6098ac0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6e6c47e40926bd6bfe5c5af96d32757aa4972e96..efa0e81763beca0cae5db70df7a64b4592587094 100644 +index 7c2fe960ae8c04b828ad549d33ccf36392521e99..e93db3a16ac8ea0f7674dcdd508984b8c49a56b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -299,6 +299,7 @@ public class PurpurWorldConfig { +@@ -293,6 +293,7 @@ public class PurpurWorldConfig { public boolean creeperRidable = false; public boolean creeperRidableInWater = false; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index 6e6c47e40926bd6bfe5c5af96d32757aa4972e96..efa0e81763beca0cae5db70df7a64b45 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -308,6 +309,7 @@ public class PurpurWorldConfig { +@@ -302,6 +303,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch index 7d7f1499a..4119dedeb 100644 --- a/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch @@ -38,10 +38,10 @@ index 562262f4811d5748dd04a284f243024c059c8756..c1c2909728197dcb9137fb380ed210e7 int i = this.random.nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index efa0e81763beca0cae5db70df7a64b4592587094..11a27e475a2e1085d74c12080ff82559fd314184 100644 +index e93db3a16ac8ea0f7674dcdd508984b8c49a56b8..572a9ce6a65be37e95fe308923c2a387cf2f47fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -853,6 +853,8 @@ public class PurpurWorldConfig { +@@ -847,6 +847,8 @@ public class PurpurWorldConfig { public boolean rabbitRidable = false; public boolean rabbitRidableInWater = false; public double rabbitMaxHealth = 3.0D; @@ -50,7 +50,7 @@ index efa0e81763beca0cae5db70df7a64b4592587094..11a27e475a2e1085d74c12080ff82559 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -862,6 +864,8 @@ public class PurpurWorldConfig { +@@ -856,6 +858,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0032-Tulips-change-fox-type.patch b/patches/server/0032-Tulips-change-fox-type.patch index d6ac79e9d..22513204a 100644 --- a/patches/server/0032-Tulips-change-fox-type.patch +++ b/patches/server/0032-Tulips-change-fox-type.patch @@ -75,10 +75,10 @@ index b07b1302978b2a1212e094652e46ad2754fb1d6c..a2e56aadf75918d3b2c30b54ec53ba4d // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 11a27e475a2e1085d74c12080ff82559fd314184..d137a4661406f782e6379e88c3990c562583b7b5 100644 +index 572a9ce6a65be37e95fe308923c2a387cf2f47fe..809ded91042e66c2c761b813816d9b432cd9dff5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -447,6 +447,7 @@ public class PurpurWorldConfig { +@@ -441,6 +441,7 @@ public class PurpurWorldConfig { public boolean foxRidable = false; public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; @@ -86,7 +86,7 @@ index 11a27e475a2e1085d74c12080ff82559fd314184..d137a4661406f782e6379e88c3990c56 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -456,6 +457,7 @@ public class PurpurWorldConfig { +@@ -450,6 +451,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0033-Breedable-Polar-Bears.patch b/patches/server/0033-Breedable-Polar-Bears.patch index ad0c1bdc4..e26ded6b0 100644 --- a/patches/server/0033-Breedable-Polar-Bears.patch +++ b/patches/server/0033-Breedable-Polar-Bears.patch @@ -59,10 +59,10 @@ index 69e495a93cd1519297dcd8ef4971cca61b80f201..0b5d4416ad4dc0a90cbd1826c45c4741 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); 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 d137a4661406f782e6379e88c3990c562583b7b5..59e41d260eed40828c21a2e01b4717e01f4214fd 100644 +index 809ded91042e66c2c761b813816d9b432cd9dff5..38af39e6b855be606240f3d6d85ed368cced78f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -829,6 +829,8 @@ public class PurpurWorldConfig { +@@ -823,6 +823,8 @@ public class PurpurWorldConfig { public boolean polarBearRidable = false; public boolean polarBearRidableInWater = false; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index d137a4661406f782e6379e88c3990c562583b7b5..59e41d260eed40828c21a2e01b4717e0 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -838,6 +840,9 @@ public class PurpurWorldConfig { +@@ -832,6 +834,9 @@ public class PurpurWorldConfig { set("mobs.polar_bear.attributes.max_health", oldValue); } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); diff --git a/patches/server/0034-Chickens-can-retaliate.patch b/patches/server/0034-Chickens-can-retaliate.patch index 0fccc0d86..1cb5a90af 100644 --- a/patches/server/0034-Chickens-can-retaliate.patch +++ b/patches/server/0034-Chickens-can-retaliate.patch @@ -51,10 +51,10 @@ index 419a774733ac3d562e636f2615005c953bbd87df..ca584a5a801d0909f4bdbaa8a635608e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59e41d260eed40828c21a2e01b4717e01f4214fd..d1458b7f039a960d70d70c949639bc25d4fe3441 100644 +index 38af39e6b855be606240f3d6d85ed368cced78f8..42aca5776c26ce45469b742f5c7392f222984948 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -259,6 +259,7 @@ public class PurpurWorldConfig { +@@ -253,6 +253,7 @@ public class PurpurWorldConfig { public boolean chickenRidable = false; public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index 59e41d260eed40828c21a2e01b4717e01f4214fd..d1458b7f039a960d70d70c949639bc25 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -268,6 +269,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0035-Add-option-to-set-armorstand-step-height.patch b/patches/server/0035-Add-option-to-set-armorstand-step-height.patch index fcb9c9cd1..4ea2dc50e 100644 --- a/patches/server/0035-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0035-Add-option-to-set-armorstand-step-height.patch @@ -17,11 +17,11 @@ index e5ef24d92de21c4c0e6a98e06985e52d47bfdce0..dc1630a1a769f848059f576c3d1220a2 if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1458b7f039a960d70d70c949639bc25d4fe3441..508b53f053997db9e250dd7d3e1a1fe32f07369d 100644 +index 42aca5776c26ce45469b742f5c7392f222984948..26c72e481c116bf7ac459a2a817250e18357978e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -103,6 +103,11 @@ public class PurpurWorldConfig { - turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); +@@ -88,6 +88,11 @@ public class PurpurWorldConfig { + return value.isEmpty() ? fallback : value; } + public float armorstandStepHeight = 0.0F; diff --git a/patches/server/0036-Cat-spawning-options.patch b/patches/server/0036-Cat-spawning-options.patch index d845bb11b..1b28afad8 100644 --- a/patches/server/0036-Cat-spawning-options.patch +++ b/patches/server/0036-Cat-spawning-options.patch @@ -49,10 +49,10 @@ index 436f9cb45ff5b83f55b12f291bed355fa12a0655..0784f6a0aa39c8e49b009f53d91432ff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 508b53f053997db9e250dd7d3e1a1fe32f07369d..f698bc6c3614159be86239fb291dea4eb33202d3 100644 +index 26c72e481c116bf7ac459a2a817250e18357978e..ea45c601cc5d4cacd7e216552d6375f8c1c0dc5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -236,6 +236,9 @@ public class PurpurWorldConfig { +@@ -230,6 +230,9 @@ public class PurpurWorldConfig { public boolean catRidable = false; public boolean catRidableInWater = false; public double catMaxHealth = 10.0D; @@ -62,7 +62,7 @@ index 508b53f053997db9e250dd7d3e1a1fe32f07369d..f698bc6c3614159be86239fb291dea4e private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -245,6 +248,9 @@ public class PurpurWorldConfig { +@@ -239,6 +242,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0038-Cows-eat-mushrooms.patch b/patches/server/0038-Cows-eat-mushrooms.patch index 7ab93be39..6dbfe8f14 100644 --- a/patches/server/0038-Cows-eat-mushrooms.patch +++ b/patches/server/0038-Cows-eat-mushrooms.patch @@ -114,10 +114,10 @@ index d602597132b69c51c6da9115d0a2c9a8a1f39405..0db4dd5423508acb5214ed3205bb5632 public Cow getBreedOffspring(ServerLevel world, AgeableMob entity) { return (Cow) EntityType.COW.create(world); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f698bc6c3614159be86239fb291dea4eb33202d3..3562a3b0a4b3817b3b415faaf4c54e2a8b6bd97d 100644 +index ea45c601cc5d4cacd7e216552d6375f8c1c0dc5c..44751c0ebca4cbbb42e0de6fea30f0ea0f53c3f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -298,6 +298,7 @@ public class PurpurWorldConfig { +@@ -292,6 +292,7 @@ public class PurpurWorldConfig { public boolean cowRidable = false; public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; @@ -125,7 +125,7 @@ index f698bc6c3614159be86239fb291dea4eb33202d3..3562a3b0a4b3817b3b415faaf4c54e2a private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -307,6 +308,7 @@ public class PurpurWorldConfig { +@@ -301,6 +302,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0040-Pigs-give-saddle-back.patch b/patches/server/0040-Pigs-give-saddle-back.patch index 48981c6c7..91f229e42 100644 --- a/patches/server/0040-Pigs-give-saddle-back.patch +++ b/patches/server/0040-Pigs-give-saddle-back.patch @@ -28,10 +28,10 @@ index 7313d6bd41a312a8f9352240f181543d7cccb378..f4ae6de32bc1d854c54da829e45ca2cd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3562a3b0a4b3817b3b415faaf4c54e2a8b6bd97d..7f7f73d1bac20384ed04b32f8a080a4062124f34 100644 +index 44751c0ebca4cbbb42e0de6fea30f0ea0f53c3f4..4dbf0d6e8bc62a7f0b0556042009681b83a0fd31 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -788,6 +788,7 @@ public class PurpurWorldConfig { +@@ -782,6 +782,7 @@ public class PurpurWorldConfig { public boolean pigRidable = false; public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; @@ -39,7 +39,7 @@ index 3562a3b0a4b3817b3b415faaf4c54e2a8b6bd97d..7f7f73d1bac20384ed04b32f8a080a40 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -797,6 +798,7 @@ public class PurpurWorldConfig { +@@ -791,6 +792,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch index 0a9cd76f1..a3852a648 100644 --- a/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch @@ -32,10 +32,10 @@ index e194774b2ba7976565642534ceeca2079e23945e..a9c1b07f23c604d9364ccdee9478baf1 this.forceDrops = false; // CraftBukkit } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f7f73d1bac20384ed04b32f8a080a4062124f34..ccbd2ce00a72d3dda6f362bcabc09694ee019b2d 100644 +index 4dbf0d6e8bc62a7f0b0556042009681b83a0fd31..73d01ed4c0951a10372c2ed101c7964dc4bbdadb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1019,6 +1019,8 @@ public class PurpurWorldConfig { +@@ -1013,6 +1013,8 @@ public class PurpurWorldConfig { public boolean snowGolemRidableInWater = false; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -44,7 +44,7 @@ index 7f7f73d1bac20384ed04b32f8a080a4062124f34..ccbd2ce00a72d3dda6f362bcabc09694 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1029,6 +1031,8 @@ public class PurpurWorldConfig { +@@ -1023,6 +1025,8 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); diff --git a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch index 55ef1e98e..fe82079f0 100644 --- a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index 73506ce90426bdfb8fbc08687c6e21de637fbd77..9d4dd8c460d1d69ab56e166e10fd7137 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccbd2ce00a72d3dda6f362bcabc09694ee019b2d..7dcde9608d720b661b37232a729c6248e32b2186 100644 +index 73d01ed4c0951a10372c2ed101c7964dc4bbdadb..2309deca435b740b5e27bd8413654b1e8137bb16 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 { +@@ -395,6 +395,7 @@ public class PurpurWorldConfig { public boolean enderDragonRidableInWater = false; public double enderDragonMaxY = 256D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index ccbd2ce00a72d3dda6f362bcabc09694ee019b2d..7dcde9608d720b661b37232a729c6248 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -415,6 +416,7 @@ public class PurpurWorldConfig { +@@ -409,6 +410,7 @@ public class PurpurWorldConfig { set("mobs.ender_dragon.attributes.max_health", oldValue); } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); diff --git a/patches/server/0043-Signs-editable-on-right-click.patch b/patches/server/0043-Signs-editable-on-right-click.patch index cae532f5f..2e2e8108b 100644 --- a/patches/server/0043-Signs-editable-on-right-click.patch +++ b/patches/server/0043-Signs-editable-on-right-click.patch @@ -35,10 +35,10 @@ index ed3d78494735ceda14ad0ea23adeadc374f3b35e..a0d23b7e244e7df8a462b801dee18fd4 } else { return InteractionResult.PASS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7dcde9608d720b661b37232a729c6248e32b2186..4c8bacd089efa43616bd5c82b17bd0baa00b6ffc 100644 +index 2309deca435b740b5e27bd8413654b1e8137bb16..e13d9a7b4bdd3d27cd72efdaa15f6ce4e777d012 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -162,6 +162,11 @@ public class PurpurWorldConfig { +@@ -147,6 +147,11 @@ public class PurpurWorldConfig { }); } @@ -47,6 +47,6 @@ index 7dcde9608d720b661b37232a729c6248e32b2186..4c8bacd089efa43616bd5c82b17bd0ba + signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); + } + - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; + public boolean turtleEggsBreakFromExpOrbs = true; + public boolean turtleEggsBreakFromItems = true; + public boolean turtleEggsBreakFromMinecarts = true; diff --git a/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch index 1bf6f048b..3cdcbd427 100644 --- a/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,10 +18,10 @@ index d0720d5e6612d98d1e86e33e8e6564e371595630..e102795a2464eac028b30977be8d99ce } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4c8bacd089efa43616bd5c82b17bd0baa00b6ffc..57098618aba1e0c001bffdb51d144d56069bca49 100644 +index e13d9a7b4bdd3d27cd72efdaa15f6ce4e777d012..da0bb5a0b7ba9b4ed0826a0318ba0288d8b8d9f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -162,6 +162,11 @@ public class PurpurWorldConfig { +@@ -147,6 +147,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0045-Minecart-settings-and-WASD-controls.patch b/patches/server/0045-Minecart-settings-and-WASD-controls.patch index c1e008723..119747735 100644 --- a/patches/server/0045-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0045-Minecart-settings-and-WASD-controls.patch @@ -148,10 +148,10 @@ index 05c46f3b3bce5225b819d86e6e06729a5093e092..b2dd2a211bdd1441eae67dd6bd936919 protected final float explosionResistance; protected final boolean isRandomlyTicking; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 57098618aba1e0c001bffdb51d144d56069bca49..128da7e1dececadcfa95e24fe2c2c32d5cce05d9 100644 +index da0bb5a0b7ba9b4ed0826a0318ba0288d8b8d9f8..d7511e69b93231f5b1cbadea5a5847596153f2da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -108,6 +108,68 @@ public class PurpurWorldConfig { +@@ -93,6 +93,68 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch index 7b2934f34..0a948d640 100644 --- a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch @@ -22,11 +22,11 @@ index ab868741cdb9ad20c81d4ed3561d498d25fcbf12..d2944ac5002f77dee2ae111b4f529471 // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 128da7e1dececadcfa95e24fe2c2c32d5cce05d9..25473a5431d036c02e4e29552c571e6f20eca71c 100644 +index d7511e69b93231f5b1cbadea5a5847596153f2da..e101ee0bda27bbf7ff319d5dc748b13e8b954f26 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -224,6 +224,11 @@ public class PurpurWorldConfig { - }); +@@ -93,6 +93,11 @@ public class PurpurWorldConfig { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public boolean disableDropsOnCrammingDeath = false; @@ -34,6 +34,6 @@ index 128da7e1dececadcfa95e24fe2c2c32d5cce05d9..25473a5431d036c02e4e29552c571e6f + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + } + - public boolean farmlandGetsMoistFromBelow = false; - private void farmlandSettings() { - farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); + public double minecartMaxSpeed = 0.4D; + public boolean minecartPlaceAnywhere = false; + public boolean minecartControllable = false; diff --git a/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch index c0a76d95f..6efb73c2d 100644 --- a/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch @@ -28,10 +28,10 @@ index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25473a5431d036c02e4e29552c571e6f20eca71c..b730d3a026072e3b781793bb0415a0ba3dc54a5e 100644 +index e101ee0bda27bbf7ff319d5dc748b13e8b954f26..50a1223f66adc486bae85e7c2a8567516473c8f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -225,8 +225,10 @@ public class PurpurWorldConfig { +@@ -94,8 +94,10 @@ public class PurpurWorldConfig { } public boolean disableDropsOnCrammingDeath = false; @@ -41,4 +41,4 @@ index 25473a5431d036c02e4e29552c571e6f20eca71c..b730d3a026072e3b781793bb0415a0ba + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); } - public boolean farmlandGetsMoistFromBelow = false; + public double minecartMaxSpeed = 0.4D; diff --git a/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index 148e24149..53cce57e3 100644 --- a/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,10 +18,10 @@ index a367f50b0e3fe9e7a1b87892a8c98e88bd678f6f..52d41fb8d0495f61346c718c8f2395bc if (!this.level.isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b730d3a026072e3b781793bb0415a0ba3dc54a5e..10eba3e8a06702fd40d3ce0117b8874c773d9658 100644 +index 50a1223f66adc486bae85e7c2a8567516473c8f0..95446bfc4fdb13d9eedc5ea9bf2b8797681886ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -226,9 +226,11 @@ public class PurpurWorldConfig { +@@ -95,9 +95,11 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; @@ -32,4 +32,4 @@ index b730d3a026072e3b781793bb0415a0ba3dc54a5e..10eba3e8a06702fd40d3ce0117b8874c + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); } - public boolean farmlandGetsMoistFromBelow = false; + public double minecartMaxSpeed = 0.4D; diff --git a/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch index feeaeb1bb..f994afa25 100644 --- a/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch @@ -38,10 +38,10 @@ index e5ddb64d1a212266c05170359e27927a5f9e243e..2e831d7901747d7957becddc2daf453c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10eba3e8a06702fd40d3ce0117b8874c773d9658..a285b8fdcced2c5f51283393e3e02b327497d1d0 100644 +index 95446bfc4fdb13d9eedc5ea9bf2b8797681886ee..965e7ccb8175c18bad8d1ed92a70792f0656bebb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,6 +396,7 @@ public class PurpurWorldConfig { +@@ -390,6 +390,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = false; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index 10eba3e8a06702fd40d3ce0117b8874c773d9658..a285b8fdcced2c5f51283393e3e02b32 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -406,6 +407,7 @@ public class PurpurWorldConfig { +@@ -400,6 +401,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); @@ -57,7 +57,7 @@ index 10eba3e8a06702fd40d3ce0117b8874c773d9658..a285b8fdcced2c5f51283393e3e02b32 } public boolean dolphinRidable = false; -@@ -503,6 +505,7 @@ public class PurpurWorldConfig { +@@ -497,6 +499,7 @@ public class PurpurWorldConfig { public boolean endermanRidable = false; public boolean endermanRidableInWater = false; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index 10eba3e8a06702fd40d3ce0117b8874c773d9658..a285b8fdcced2c5f51283393e3e02b32 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -512,6 +515,7 @@ public class PurpurWorldConfig { +@@ -506,6 +509,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0055-Villagers-follow-emerald-blocks.patch b/patches/server/0055-Villagers-follow-emerald-blocks.patch index 41fa77740..08d401bde 100644 --- a/patches/server/0055-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0055-Villagers-follow-emerald-blocks.patch @@ -54,10 +54,10 @@ index 0bcfece84ac11f04671ed38a99b31da9f8b03858..2f0bcf917af26fb7628bda134b650a8b this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a285b8fdcced2c5f51283393e3e02b327497d1d0..5024fedb18e23594bc6081cb5e57639d525812e1 100644 +index 965e7ccb8175c18bad8d1ed92a70792f0656bebb..f97e9a32c0f5e330a491e06d5341f68520e36664 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1249,6 +1249,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1243,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; @@ -65,7 +65,7 @@ index a285b8fdcced2c5f51283393e3e02b327497d1d0..5024fedb18e23594bc6081cb5e57639d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1260,6 +1261,7 @@ public class PurpurWorldConfig { +@@ -1254,6 +1255,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); @@ -73,7 +73,7 @@ index a285b8fdcced2c5f51283393e3e02b327497d1d0..5024fedb18e23594bc6081cb5e57639d } public boolean vindicatorRidable = false; -@@ -1279,6 +1281,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1275,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidable = false; public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index a285b8fdcced2c5f51283393e3e02b327497d1d0..5024fedb18e23594bc6081cb5e57639d private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1288,6 +1291,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1285,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0056-Allow-leashing-villagers.patch b/patches/server/0056-Allow-leashing-villagers.patch index 9d89f7d3b..e20ca90db 100644 --- a/patches/server/0056-Allow-leashing-villagers.patch +++ b/patches/server/0056-Allow-leashing-villagers.patch @@ -49,10 +49,10 @@ index 2f0bcf917af26fb7628bda134b650a8b296091ea..c5dbb1c8210b71f7d9d91089cb139f65 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5024fedb18e23594bc6081cb5e57639d525812e1..7418d367bfa4285d11daac81c61d5d68e4e0d9ee 100644 +index f97e9a32c0f5e330a491e06d5341f68520e36664..9c2411632713b245746a943d3afb9f7611603267 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1250,6 +1250,7 @@ public class PurpurWorldConfig { +@@ -1244,6 +1244,7 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index 5024fedb18e23594bc6081cb5e57639d525812e1..7418d367bfa4285d11daac81c61d5d68 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1262,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1256,6 +1257,7 @@ public class PurpurWorldConfig { villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index 5024fedb18e23594bc6081cb5e57639d525812e1..7418d367bfa4285d11daac81c61d5d68 } public boolean vindicatorRidable = false; -@@ -1282,6 +1284,7 @@ public class PurpurWorldConfig { +@@ -1276,6 +1278,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index 5024fedb18e23594bc6081cb5e57639d525812e1..7418d367bfa4285d11daac81c61d5d68 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1292,6 +1295,7 @@ public class PurpurWorldConfig { +@@ -1286,6 +1289,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch index f61def363..008eb5d69 100644 --- a/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 7396963b9b405f7c0ff022176ce55b6f27ac3f4c..6e047f7d9a77e8da563c377e65b42847 for (int i = 0; i < 10; ++i) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7418d367bfa4285d11daac81c61d5d68e4e0d9ee..0d6a420ead59fba74fafd891efdc87e1d602ace7 100644 +index 9c2411632713b245746a943d3afb9f7611603267..404c8a7c74fd997de323dc36ae90ed4cc8008dac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1251,6 +1251,8 @@ public class PurpurWorldConfig { +@@ -1245,6 +1245,8 @@ public class PurpurWorldConfig { public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -30,7 +30,7 @@ index 7418d367bfa4285d11daac81c61d5d68e4e0d9ee..0d6a420ead59fba74fafd891efdc87e1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1264,6 +1266,8 @@ public class PurpurWorldConfig { +@@ -1258,6 +1260,8 @@ public class PurpurWorldConfig { villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0058-Implement-infinite-liquids.patch b/patches/server/0058-Implement-infinite-liquids.patch index 1b0e9a45b..536abce9a 100644 --- a/patches/server/0058-Implement-infinite-liquids.patch +++ b/patches/server/0058-Implement-infinite-liquids.patch @@ -81,10 +81,10 @@ index 56d50b9310d30e0f81f3d2549ff5c256eb07cc2a..4cc6d665c7d52b6edcaaa5f9ed131407 @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d6a420ead59fba74fafd891efdc87e1d602ace7..573180a79354b2ae3a61f5dfa98201d4b46a1195 100644 +index 404c8a7c74fd997de323dc36ae90ed4cc8008dac..25f8fe880cc754c6a1f96b20925ea6002ab94f3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -238,6 +238,20 @@ public class PurpurWorldConfig { +@@ -223,6 +223,13 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } @@ -95,6 +95,13 @@ index 0d6a420ead59fba74fafd891efdc87e1d602ace7..573180a79354b2ae3a61f5dfa98201d4 + lavaInfiniteRequiredSources = getInt("blocks.lava.infinite-required-sources", lavaInfiniteRequiredSources); + } + + public boolean signRightClickEdit = false; + private void signSettings() { + signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); +@@ -237,6 +244,13 @@ public class PurpurWorldConfig { + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); + } + + public boolean waterInfinite = true; + public int waterInfiniteRequiredSources = 2; + private void waterSources() { @@ -102,6 +109,6 @@ index 0d6a420ead59fba74fafd891efdc87e1d602ace7..573180a79354b2ae3a61f5dfa98201d4 + waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); + } + - public boolean signRightClickEdit = false; - private void signSettings() { - signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0059-Make-lava-flow-speed-configurable.patch b/patches/server/0059-Make-lava-flow-speed-configurable.patch index a143f9020..b2bf24c59 100644 --- a/patches/server/0059-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0059-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index 9fc7bc3141c0fe6b65d78edf6bac3c45d46ae4fe..a7d2fcad13f1f9b7055732636cd58039 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 573180a79354b2ae3a61f5dfa98201d4b46a1195..30cb31b413cca3f7f1ad8f1745091f8c2f80f17f 100644 +index 25f8fe880cc754c6a1f96b20925ea6002ab94f3a..e86533cfa8f24c135dfbee34429b58313d1839c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -240,9 +240,13 @@ public class PurpurWorldConfig { +@@ -225,9 +225,13 @@ public class PurpurWorldConfig { public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; @@ -34,4 +34,4 @@ index 573180a79354b2ae3a61f5dfa98201d4b46a1195..30cb31b413cca3f7f1ad8f1745091f8c + lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } - public boolean waterInfinite = true; + public boolean signRightClickEdit = false; diff --git a/patches/server/0060-Add-player-death-exp-control-options.patch b/patches/server/0060-Add-player-death-exp-control-options.patch index 926a7ff64..5f60d4139 100644 --- a/patches/server/0060-Add-player-death-exp-control-options.patch +++ b/patches/server/0060-Add-player-death-exp-control-options.patch @@ -31,10 +31,10 @@ index aad9de4019015ca42ad5509886ca35315aeb30d9..7518b7f7378eba01d12224db6264b6bc return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30cb31b413cca3f7f1ad8f1745091f8c2f80f17f..136d236d6179942b942bfe25433180d3ef7e24e1 100644 +index e86533cfa8f24c135dfbee34429b58313d1839c5..e7c0102d9c154b77ac2099f1f310762e0a384f12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -177,6 +177,8 @@ public class PurpurWorldConfig { +@@ -171,6 +171,8 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public int playerSpawnInvulnerableTicks = 60; public boolean playerInvulnerableWhileAcceptingResourcePack = false; @@ -43,7 +43,7 @@ index 30cb31b413cca3f7f1ad8f1745091f8c2f80f17f..136d236d6179942b942bfe25433180d3 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -190,6 +192,8 @@ public class PurpurWorldConfig { +@@ -184,6 +186,8 @@ public class PurpurWorldConfig { idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); playerSpawnInvulnerableTicks = getInt("gameplay-mechanics.player.spawn-invulnerable-ticks", playerSpawnInvulnerableTicks); playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); diff --git a/patches/server/0061-Configurable-void-damage-height-and-damage.patch b/patches/server/0061-Configurable-void-damage-height-and-damage.patch index 78ecffdce..179d477ba 100644 --- a/patches/server/0061-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0061-Configurable-void-damage-height-and-damage.patch @@ -31,10 +31,10 @@ index eec8fe7566a7911d1250286ecf525c851baecc8e..d5d315122326e923dd47ec25c59d81d4 protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 136d236d6179942b942bfe25433180d3ef7e24e1..e1e2077d9806302538c6d1af98512cb006ca9130 100644 +index e7c0102d9c154b77ac2099f1f310762e0a384f12..a5f5aaa8eb31680dadb0e9a0b0c5d20f88e5df7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -231,10 +231,14 @@ public class PurpurWorldConfig { +@@ -96,10 +96,14 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; @@ -48,4 +48,4 @@ index 136d236d6179942b942bfe25433180d3ef7e24e1..e1e2077d9806302538c6d1af98512cb0 + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } - public boolean farmlandGetsMoistFromBelow = false; + public double minecartMaxSpeed = 0.4D; diff --git a/patches/server/0063-Dispenser-curse-of-binding-protection.patch b/patches/server/0063-Dispenser-curse-of-binding-protection.patch index 731a2b1c0..09b65d5bd 100644 --- a/patches/server/0063-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0063-Dispenser-curse-of-binding-protection.patch @@ -43,11 +43,11 @@ index baa7e055d8ee4a153842128b07984b9f6deac6ca..014dd3aa8a7313d978d4781a1b7c6f53 // CraftBukkit start Level world = pointer.getLevel(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1e2077d9806302538c6d1af98512cb006ca9130..02f0376a16a05ea7569fc1710c390d4b2d65a8f4 100644 +index a5f5aaa8eb31680dadb0e9a0b0c5d20f88e5df7c..ccfee8a75592c6dbf3a2256d3c0d0c338bc3eea5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -241,6 +241,11 @@ public class PurpurWorldConfig { - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -226,6 +226,11 @@ public class PurpurWorldConfig { + }); } + public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch index 4046c2dbd..06f284985 100644 --- a/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,11 +17,11 @@ index b967177cb10041f96831322c311579e409050e88..4b38f8186dcd9a98a5413a51c5563c49 } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 02f0376a16a05ea7569fc1710c390d4b2d65a8f4..9e8d6e63f71a692efc1c45e8ec47c2c935ac7627 100644 +index ccfee8a75592c6dbf3a2256d3c0d0c338bc3eea5..417878da19deaf23018c5d1bf208479bf9aae4e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -228,12 +228,14 @@ public class PurpurWorldConfig { - }); +@@ -93,12 +93,14 @@ public class PurpurWorldConfig { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public boolean boatEjectPlayersOnLand = false; diff --git a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch index 87f23c8da..1a33ae1dc 100644 --- a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch @@ -73,18 +73,18 @@ index 7bc5aa35b52de0027cf58a6127a9903464ccaf47..f3ec99d2eae31ba7ce7d4b8e7399a56d Entry entry = getRandomItemWith(enchantment, entityliving); return entry != null ? entry.getValue() : ItemStack.EMPTY; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e8d6e63f71a692efc1c45e8ec47c2c935ac7627..680e60a5ae4f6645b5acc7588f98e90b774d9fb9 100644 +index 417878da19deaf23018c5d1bf208479bf9aae4e5..f9bfb328c2056d39df5b2a4092d03c75c8fdfc57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -228,6 +228,7 @@ public class PurpurWorldConfig { - }); +@@ -93,6 +93,7 @@ public class PurpurWorldConfig { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; -@@ -235,6 +236,7 @@ public class PurpurWorldConfig { +@@ -100,6 +101,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { diff --git a/patches/server/0067-Implement-elytra-settings.patch b/patches/server/0067-Implement-elytra-settings.patch index 74dbd1da4..c2f35134e 100644 --- a/patches/server/0067-Implement-elytra-settings.patch +++ b/patches/server/0067-Implement-elytra-settings.patch @@ -99,11 +99,11 @@ index 998758be827efbcb7693ed36ab1dffc0ef0369bf..5beaafec0759543d3bddf99028c97d0d entityhuman.startAutoSpinAttack(20); if (entityhuman.isOnGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 680e60a5ae4f6645b5acc7588f98e90b774d9fb9..3bbaa73010cbcfdf3a918120cfc86c30ed22e4cf 100644 +index f9bfb328c2056d39df5b2a4092d03c75c8fdfc57..9963ded057f721ad884f420d62a74b9e06f8b4b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -108,6 +108,19 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); +@@ -110,6 +110,19 @@ public class PurpurWorldConfig { + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } + public int elytraDamagePerSecond = 1; diff --git a/patches/server/0068-Item-entity-immunities.patch b/patches/server/0068-Item-entity-immunities.patch index 217dd0252..9273eec5e 100644 --- a/patches/server/0068-Item-entity-immunities.patch +++ b/patches/server/0068-Item-entity-immunities.patch @@ -147,10 +147,10 @@ index 8d56f0ab748373e55c0166b92382c126fe8e5381..0637e074dbe4a10bc19e7bf9dd79e2d9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bbaa73010cbcfdf3a918120cfc86c30ed22e4cf..72d6c875070e16bacc40700e30b07d5fe5cf1236 100644 +index 9963ded057f721ad884f420d62a74b9e06f8b4b9..4f2ce450267a98f6b5e2814eb0303fc37125f792 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -121,6 +121,49 @@ public class PurpurWorldConfig { +@@ -123,6 +123,49 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0072-Configurable-jockey-options.patch b/patches/server/0072-Configurable-jockey-options.patch index 9f66eb0b4..ea6fb7c1b 100644 --- a/patches/server/0072-Configurable-jockey-options.patch +++ b/patches/server/0072-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index f30b36b3f1153e1cbd9b8242909d9ba8c995df1d..76f1bbec2b8ebe037de65ee5ec718e17 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf97873eb3 100644 +index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f75b86420 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -547,6 +547,9 @@ public class PurpurWorldConfig { +@@ -541,6 +541,9 @@ public class PurpurWorldConfig { public boolean drownedRidableInWater = false; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -557,6 +560,9 @@ public class PurpurWorldConfig { +@@ -551,6 +554,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf } public boolean elderGuardianRidable = false; -@@ -769,6 +775,9 @@ public class PurpurWorldConfig { +@@ -763,6 +769,9 @@ public class PurpurWorldConfig { public boolean huskRidableInWater = false; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -779,6 +788,9 @@ public class PurpurWorldConfig { +@@ -773,6 +782,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf } public boolean illusionerRidable = false; -@@ -1473,6 +1485,9 @@ public class PurpurWorldConfig { +@@ -1467,6 +1479,9 @@ public class PurpurWorldConfig { public boolean zombieRidableInWater = false; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1483,6 +1498,9 @@ public class PurpurWorldConfig { +@@ -1477,6 +1492,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf } public boolean zombieHorseRidableInWater = false; -@@ -1516,6 +1534,9 @@ public class PurpurWorldConfig { +@@ -1510,6 +1528,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerRidableInWater = false; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1526,12 +1547,18 @@ public class PurpurWorldConfig { +@@ -1520,12 +1541,18 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -259,7 +259,7 @@ index 72d6c875070e16bacc40700e30b07d5fe5cf1236..f72530a2659e3d1568314f496aba06cf private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1542,5 +1569,8 @@ public class PurpurWorldConfig { +@@ -1536,5 +1563,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 4bb75caf9..4c5130531 100644 --- a/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -258,10 +258,10 @@ index f4da51e75b3f8772f0d3de17ef4699845a08fdd1..5dc5bddfce5b46fd065fd14112febc41 private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f72530a2659e3d1568314f496aba06cf97873eb3..621f58ee6283bfa9e209e4018775a5b668201423 100644 +index d251746cbb14fce9756af250e6e2276f75b86420..814d71572fdce49e02d7ee5ee20210b3de2a4076 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -960,6 +960,9 @@ public class PurpurWorldConfig { +@@ -954,6 +954,9 @@ public class PurpurWorldConfig { public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; public double phantomMaxHealth = 20.0D; @@ -271,7 +271,7 @@ index f72530a2659e3d1568314f496aba06cf97873eb3..621f58ee6283bfa9e209e4018775a5b6 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -973,6 +976,9 @@ public class PurpurWorldConfig { +@@ -967,6 +970,9 @@ public class PurpurWorldConfig { set("mobs.phantom.attributes.max_health", oldValue); } phantomMaxHealth = getDouble("mobs.phantom.attributes.max_health", phantomMaxHealth); diff --git a/patches/server/0074-Add-phantom-spawning-options.patch b/patches/server/0074-Add-phantom-spawning-options.patch index 4920f7b3d..26240048d 100644 --- a/patches/server/0074-Add-phantom-spawning-options.patch +++ b/patches/server/0074-Add-phantom-spawning-options.patch @@ -48,10 +48,10 @@ index 1e21d6cf2f03219fb2b7217c9a72bdd83c2146f7..dad5d3c754395b39e96be1e35a99c8bf for (int l = 0; l < k; ++l) { // Paper start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 621f58ee6283bfa9e209e4018775a5b668201423..26b854985a53b9e287cb451178adeba223580fb7 100644 +index 814d71572fdce49e02d7ee5ee20210b3de2a4076..98680d303bb17ddc72b64233670dabad9ab1d807 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -963,6 +963,18 @@ public class PurpurWorldConfig { +@@ -957,6 +957,18 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -70,7 +70,7 @@ index 621f58ee6283bfa9e209e4018775a5b668201423..26b854985a53b9e287cb451178adeba2 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -979,6 +991,18 @@ public class PurpurWorldConfig { +@@ -973,6 +985,18 @@ 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/0075-Implement-bed-explosion-options.patch b/patches/server/0075-Implement-bed-explosion-options.patch index bcf43755e..083cae812 100644 --- a/patches/server/0075-Implement-bed-explosion-options.patch +++ b/patches/server/0075-Implement-bed-explosion-options.patch @@ -27,11 +27,11 @@ index 20c0030d566012146021613325c6a979f392740e..340e5dee8bf5d8a865c19a8fe63399ae } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26b854985a53b9e287cb451178adeba223580fb7..0b6d5cedbd32b07aa7c2fac3980b9dae48b950fb 100644 +index 98680d303bb17ddc72b64233670dabad9ab1d807..13ad57956dadf60fbe9a1b6f12effa84cf321abf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -301,6 +301,22 @@ public class PurpurWorldConfig { - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -286,6 +286,22 @@ public class PurpurWorldConfig { + }); } + public boolean bedExplode = true; diff --git a/patches/server/0076-Implement-respawn-anchor-explosion-options.patch b/patches/server/0076-Implement-respawn-anchor-explosion-options.patch index 9c5cb1c85..74cee617d 100644 --- a/patches/server/0076-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0076-Implement-respawn-anchor-explosion-options.patch @@ -18,11 +18,11 @@ index 07e893f1859abe3c2a765694c21309d60346ca82..0fabe3ec1e9d7dae952db1f1e3dd3af8 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 0b6d5cedbd32b07aa7c2fac3980b9dae48b950fb..f31cf6a7107a67fa1986aa3d8d4b45ebc46af598 100644 +index 13ad57956dadf60fbe9a1b6f12effa84cf321abf..96fd3a8735eacd42ec983b4f91ad88bec2a9a3a5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -345,6 +345,22 @@ public class PurpurWorldConfig { - waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); +@@ -323,6 +323,22 @@ public class PurpurWorldConfig { + lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } + public boolean respawnAnchorExplode = true; diff --git a/patches/server/0079-Entity-lifespan.patch b/patches/server/0079-Entity-lifespan.patch index bd2a9d576..1e7dbd9e6 100644 --- a/patches/server/0079-Entity-lifespan.patch +++ b/patches/server/0079-Entity-lifespan.patch @@ -89,10 +89,10 @@ index 3249ea9a4b7dc05a1b53373955c267e7a4c7903b..78f7022c6584e634b000cc0c079112fc } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f31cf6a7107a67fa1986aa3d8d4b45ebc46af598..250ef9cb38d0a767770ad6e638b3278ce049a2ce 100644 +index 96fd3a8735eacd42ec983b4f91ad88bec2a9a3a5..29609a60af03e8334f847aeb90c57a9e352b1893 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -121,6 +121,11 @@ public class PurpurWorldConfig { +@@ -123,6 +123,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 411adf48a..56c10c75f 100644 --- a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -55,10 +55,10 @@ index 3756da97a8404ea573a66f3f160cfbfd857b12e5..e2d1c4f0084f981d2541313fb8cdb0b9 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 250ef9cb38d0a767770ad6e638b3278ce049a2ce..61ea1a9d292fbac2822752c869b60976850da933 100644 +index 29609a60af03e8334f847aeb90c57a9e352b1893..b5d48e3979361e1b6407a1dcf0f5271542273974 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -240,6 +240,7 @@ public class PurpurWorldConfig { +@@ -242,6 +242,7 @@ public class PurpurWorldConfig { public boolean playerInvulnerableWhileAcceptingResourcePack = false; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -66,7 +66,7 @@ index 250ef9cb38d0a767770ad6e638b3278ce049a2ce..61ea1a9d292fbac2822752c869b60976 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -255,6 +256,7 @@ public class PurpurWorldConfig { +@@ -257,6 +258,7 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); 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/0081-Squid-EAR-immunity.patch b/patches/server/0081-Squid-EAR-immunity.patch index 6cd7141a0..bd26ed2fc 100644 --- a/patches/server/0081-Squid-EAR-immunity.patch +++ b/patches/server/0081-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 61ea1a9d292fbac2822752c869b60976850da933..5f6d5e743f5d19e153413fee1591bca48518163e 100644 +index b5d48e3979361e1b6407a1dcf0f5271542273974..71eef6cc623db385db98d3fe98ea657453ae28fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1296,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 61ea1a9d292fbac2822752c869b60976850da933..5f6d5e743f5d19e153413fee1591bca4 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1304,6 +1305,7 @@ public class PurpurWorldConfig { +@@ -1298,6 +1299,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0082-Phantoms-burn-in-light.patch b/patches/server/0082-Phantoms-burn-in-light.patch index f3f29228c..da2031406 100644 --- a/patches/server/0082-Phantoms-burn-in-light.patch +++ b/patches/server/0082-Phantoms-burn-in-light.patch @@ -47,10 +47,10 @@ index 5dc5bddfce5b46fd065fd14112febc415e19860c..284532bfe697d288529eacbad0fcfcb6 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 5f6d5e743f5d19e153413fee1591bca48518163e..ad150a54c9a365bf4b7bd62394844c12d9db4cfa 100644 +index 71eef6cc623db385db98d3fe98ea657453ae28fb..878173f5bfbd164eb9873dc5b38272c444f19715 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1014,6 +1014,9 @@ public class PurpurWorldConfig { +@@ -1008,6 +1008,9 @@ public class PurpurWorldConfig { public int phantomSpawnOverheadRadius = 10; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -60,7 +60,7 @@ index 5f6d5e743f5d19e153413fee1591bca48518163e..ad150a54c9a365bf4b7bd62394844c12 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1042,6 +1045,9 @@ public class PurpurWorldConfig { +@@ -1036,6 +1039,9 @@ public class PurpurWorldConfig { phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0083-Configurable-villager-breeding.patch b/patches/server/0083-Configurable-villager-breeding.patch index 8c29bccd7..ae9ad6b8e 100644 --- a/patches/server/0083-Configurable-villager-breeding.patch +++ b/patches/server/0083-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 6e047f7d9a77e8da563c377e65b428479e4ca346..4e26e288a5bccd778a405b95f3a1d619 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ad150a54c9a365bf4b7bd62394844c12d9db4cfa..2442d8b6534d07c54f1262ca30b18a8a16b6db52 100644 +index 878173f5bfbd164eb9873dc5b38272c444f19715..5d731291b435c5512143c01a59ee7a63e94f0c46 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1433,6 +1433,7 @@ public class PurpurWorldConfig { +@@ -1427,6 +1427,7 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -29,7 +29,7 @@ index ad150a54c9a365bf4b7bd62394844c12d9db4cfa..2442d8b6534d07c54f1262ca30b18a8a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1448,6 +1449,7 @@ public class PurpurWorldConfig { +@@ -1442,6 +1443,7 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0084-Redstone-deactivates-spawners.patch b/patches/server/0084-Redstone-deactivates-spawners.patch index 1abf9160c..ccfa694f4 100644 --- a/patches/server/0084-Redstone-deactivates-spawners.patch +++ b/patches/server/0084-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index 03726227fdd60e9cf77213d50184abff438e01ef..76979991d2ded84161e8a0fc72cbb2d2 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2442d8b6534d07c54f1262ca30b18a8a16b6db52..f0bbe37d2eef60be9011414a2c86d1320bf0947c 100644 +index 5d731291b435c5512143c01a59ee7a63e94f0c46..328a33211582554b3ec89ae1c28a00c980055eef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -373,6 +373,11 @@ public class PurpurWorldConfig { +@@ -351,6 +351,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } @@ -29,6 +29,6 @@ index 2442d8b6534d07c54f1262ca30b18a8a16b6db52..f0bbe37d2eef60be9011414a2c86d132 + spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + } + - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; + public boolean turtleEggsBreakFromExpOrbs = true; + public boolean turtleEggsBreakFromItems = true; + public boolean turtleEggsBreakFromMinecarts = true; diff --git a/patches/server/0085-Totems-work-in-inventory.patch b/patches/server/0085-Totems-work-in-inventory.patch index 4b8a70544..914f10c0e 100644 --- a/patches/server/0085-Totems-work-in-inventory.patch +++ b/patches/server/0085-Totems-work-in-inventory.patch @@ -29,10 +29,10 @@ index e2d1c4f0084f981d2541313fb8cdb0b9edd71f71..527fd1662b8ff007fbc383b0061f70b2 event.setCancelled(itemstack == null); this.level.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f0bbe37d2eef60be9011414a2c86d1320bf0947c..98fdcf99e92faaca3b30d20e085c85d6e4ec2ced 100644 +index 328a33211582554b3ec89ae1c28a00c980055eef..e0e95b0956a0ee2f7f22bd04fb4d7d5b19868ebe 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 { +@@ -243,6 +243,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -40,7 +40,7 @@ index f0bbe37d2eef60be9011414a2c86d1320bf0947c..98fdcf99e92faaca3b30d20e085c85d6 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -257,6 +258,7 @@ public class PurpurWorldConfig { +@@ -259,6 +260,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/0086-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch index 5139ca6e1..ea3087bd9 100644 --- a/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch @@ -30,10 +30,10 @@ index 780172760fbfe60216ac624598403c22a2fe30df..66ad217d541ce6a2071209abeedd1b68 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98fdcf99e92faaca3b30d20e085c85d6e4ec2ced..5704e4578915ecd48b4555a659e1d604e9c049b6 100644 +index e0e95b0956a0ee2f7f22bd04fb4d7d5b19868ebe..59b32ac760bc267182d1a6691ef18665d8d3dc15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1462,6 +1462,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1456,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidable = false; public boolean vindicatorRidableInWater = false; public double vindicatorMaxHealth = 24.0D; @@ -41,7 +41,7 @@ index 98fdcf99e92faaca3b30d20e085c85d6e4ec2ced..5704e4578915ecd48b4555a659e1d604 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1471,6 +1472,7 @@ public class PurpurWorldConfig { +@@ -1465,6 +1466,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0088-Dispensers-place-anvils-option.patch b/patches/server/0088-Dispensers-place-anvils-option.patch index 677f758f6..6b88dba35 100644 --- a/patches/server/0088-Dispensers-place-anvils-option.patch +++ b/patches/server/0088-Dispensers-place-anvils-option.patch @@ -41,10 +41,10 @@ index 59db245fe11384282af84ec1d5be08ab0e9484ca..a08eebaa08a75be4e7e8f6d560740ea1 static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5704e4578915ecd48b4555a659e1d604e9c049b6..59a6c46b37e4e0a64e3a029cb91452cf07eedb6d 100644 +index 59b32ac760bc267182d1a6691ef18665d8d3dc15..a286c2651b3fd43806897a9fea7cddd5f624995d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -327,8 +327,10 @@ public class PurpurWorldConfig { +@@ -312,8 +312,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0089-Allow-anvil-colors.patch b/patches/server/0089-Allow-anvil-colors.patch index 0e077d3d2..d84876918 100644 --- a/patches/server/0089-Allow-anvil-colors.patch +++ b/patches/server/0089-Allow-anvil-colors.patch @@ -37,11 +37,11 @@ index 3314cb81d4d5ce9c1d5472e1213b6bcc1c688b9c..69d996fead45bcf9fe5a29727f7f0a7a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59a6c46b37e4e0a64e3a029cb91452cf07eedb6d..1b3cb9b8330b979ce16363b0ea7096a594b96701 100644 +index a286c2651b3fd43806897a9fea7cddd5f624995d..65e778e49e4d99988a68c7f069a55dfdf04502c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -310,6 +310,11 @@ public class PurpurWorldConfig { - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -295,6 +295,11 @@ public class PurpurWorldConfig { + }); } + public boolean anvilAllowColors = false; diff --git a/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch index 6add02eb8..6e7f67b43 100644 --- a/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 16f32f0a58b090174f3d8b38c583adbcca58c9e4..ea0fb3b032a86223bfdee05a56baa15a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b3cb9b8330b979ce16363b0ea7096a594b96701..d9fb941c7330015fcef4c3d84ea5f19818bf834b 100644 +index 65e778e49e4d99988a68c7f069a55dfdf04502c2..073eb58ae5eef87156c6951bf8eee356697fe3a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -559,6 +559,7 @@ public class PurpurWorldConfig { +@@ -553,6 +553,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 1b3cb9b8330b979ce16363b0ea7096a594b96701..d9fb941c7330015fcef4c3d84ea5f198 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -570,6 +571,7 @@ public class PurpurWorldConfig { +@@ -564,6 +565,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch index af4075702..0067b88ce 100644 --- a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index 68cc6f2a78a06293a29317fda72ab3ee79b3533a..cfb2e46b34b2982d6724f18214557fc8 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d9fb941c7330015fcef4c3d84ea5f19818bf834b..2e231bc97cf43a77da560f17f8c6827cfefea39a 100644 +index 073eb58ae5eef87156c6951bf8eee356697fe3a6..852acd97bb38fedd6aeb16abe40fa1166af31799 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1319,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1313,6 +1313,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index d9fb941c7330015fcef4c3d84ea5f19818bf834b..2e231bc97cf43a77da560f17f8c6827c private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1328,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1322,6 +1323,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0094-Entities-can-use-portals-configuration.patch b/patches/server/0094-Entities-can-use-portals-configuration.patch index 543986433..fb83640d1 100644 --- a/patches/server/0094-Entities-can-use-portals-configuration.patch +++ b/patches/server/0094-Entities-can-use-portals-configuration.patch @@ -27,10 +27,10 @@ index 55635a8abf1ee69e01ba8a7d6119e6c7fdd7ac0d..0198b89d3ac768c826d5be22cde88004 public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e231bc97cf43a77da560f17f8c6827cfefea39a..ba954799cd5d2781417269d4150e36a6b0546cc2 100644 +index 852acd97bb38fedd6aeb16abe40fa1166af31799..d1198bf0e9a64af5da22486982d15d7c68a8681c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -296,6 +296,7 @@ public class PurpurWorldConfig { +@@ -96,6 +96,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; @@ -38,7 +38,7 @@ index 2e231bc97cf43a77da560f17f8c6827cfefea39a..ba954799cd5d2781417269d4150e36a6 public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; -@@ -304,6 +305,7 @@ public class PurpurWorldConfig { +@@ -104,6 +105,7 @@ public class PurpurWorldConfig { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); diff --git a/patches/server/0096-Customizable-wither-health-and-healing.patch b/patches/server/0096-Customizable-wither-health-and-healing.patch index 5a81dacc2..d4acf1d07 100644 --- a/patches/server/0096-Customizable-wither-health-and-healing.patch +++ b/patches/server/0096-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 9a0a5da86e0502382cb538d6abea8e425e40dddc..93cc8dbf2ff435777a5edc11a834ca1b 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 ba954799cd5d2781417269d4150e36a6b0546cc2..27f5c59afe2e7b956d3414458d6633968c95d5ac 100644 +index d1198bf0e9a64af5da22486982d15d7c68a8681c..549c69dc47896f90c6976e6c18bbaa139e698ab6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1524,6 +1524,8 @@ public class PurpurWorldConfig { +@@ -1518,6 +1518,8 @@ public class PurpurWorldConfig { public boolean witherRidableInWater = false; public double witherMaxY = 256D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index ba954799cd5d2781417269d4150e36a6b0546cc2..27f5c59afe2e7b956d3414458d663396 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1538,6 +1540,8 @@ public class PurpurWorldConfig { +@@ -1532,6 +1534,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch index 92d7e5b8c..299a5bf37 100644 --- a/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch @@ -94,10 +94,10 @@ index 323eea2bccacfcc85849b5d82c2b30d991e0c0d8..bb5918ff947eb4cc4d0c964b2a8a9166 if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, 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 27f5c59afe2e7b956d3414458d6633968c95d5ac..a82c259ba36ab7e88f17a74e54d06cee75e17ec5 100644 +index 549c69dc47896f90c6976e6c18bbaa139e698ab6..16de8bd3f940e1d83970ddbd5aa89118c0b2a97c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -73,6 +73,12 @@ public class PurpurWorldConfig { +@@ -67,6 +67,12 @@ public class PurpurWorldConfig { return PurpurConfig.config.getBoolean("world-settings." + worldName + "." + path, PurpurConfig.config.getBoolean("world-settings.default." + path)); } @@ -110,7 +110,7 @@ index 27f5c59afe2e7b956d3414458d6633968c95d5ac..a82c259ba36ab7e88f17a74e54d06cee 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)); -@@ -231,6 +237,21 @@ public class PurpurWorldConfig { +@@ -235,6 +241,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0098-Raid-cooldown-setting.patch b/patches/server/0098-Raid-cooldown-setting.patch index 51abb4493..3e6b2dd37 100644 --- a/patches/server/0098-Raid-cooldown-setting.patch +++ b/patches/server/0098-Raid-cooldown-setting.patch @@ -52,10 +52,10 @@ index e8dd1fdf1a3b697a2e040424df49ac6527b68312..120f77f52ef493f16c2bd8fbc8d8d0a4 if (!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 a82c259ba36ab7e88f17a74e54d06cee75e17ec5..4bd290636e37464121f6fa74b59bf383c4545d7a 100644 +index 16de8bd3f940e1d83970ddbd5aa89118c0b2a97c..cd001f91921ca908c1bc426c10640eaff25ad178 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -322,6 +322,7 @@ public class PurpurWorldConfig { +@@ -107,6 +107,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -63,11 +63,11 @@ index a82c259ba36ab7e88f17a74e54d06cee75e17ec5..4bd290636e37464121f6fa74b59bf383 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -331,6 +332,7 @@ public class PurpurWorldConfig { +@@ -116,6 +117,7 @@ public class PurpurWorldConfig { tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } - public boolean anvilAllowColors = false; + public int elytraDamagePerSecond = 1; diff --git a/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch index 199316c9a..a7e8b8e9b 100644 --- a/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch @@ -289,10 +289,10 @@ index 2867e841e73a3edfdeb83af9d96e0d0cd4116a68..8613008090a9d7cf5cd7c2a598f2c725 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4bd290636e37464121f6fa74b59bf383c4545d7a..2731eb75fd156dad7007292268137bbdb40e6f57 100644 +index cd001f91921ca908c1bc426c10640eaff25ad178..6b22d0c7787dd9c866d27debc1e56795473d0140 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -282,6 +282,35 @@ public class PurpurWorldConfig { +@@ -288,6 +288,35 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } diff --git a/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 9c62dd1af..0244a70d1 100644 --- a/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -71,10 +71,10 @@ index 26ba3700d7c6f2502ab8fa8698430e7bbd2572dd..8fe5ce2242b136f930584fdf6b5fcf27 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 2731eb75fd156dad7007292268137bbdb40e6f57..44c0460a6dd785895d891a52ae13434c0ba40203 100644 +index 6b22d0c7787dd9c866d27debc1e56795473d0140..a5d6ff6c7986088e653fcdfe0305ae144c87a4c1 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 { +@@ -1639,6 +1639,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index 2731eb75fd156dad7007292268137bbdb40e6f57..44c0460a6dd785895d891a52ae13434c private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1658,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1652,6 +1653,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/0102-Flying-squids-Oh-my.patch b/patches/server/0102-Flying-squids-Oh-my.patch index 10d623125..bc37a9dd3 100644 --- a/patches/server/0102-Flying-squids-Oh-my.patch +++ b/patches/server/0102-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 55f94d28a536f5ceda00831e1b22c8db31c07c2f..d4e1e0117ce9105452679d64779086b8 float f1 = Mth.cos(f) * 0.2F; float f2 = -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 44c0460a6dd785895d891a52ae13434c0ba40203..c9ff802d7449fb55583228fa6ed8aaa97b950946 100644 +index a5d6ff6c7986088e653fcdfe0305ae144c87a4c1..366181b16bddb33cf0a447f086b3d7a2039b170a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -816,9 +816,11 @@ public class PurpurWorldConfig { +@@ -810,9 +810,11 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public double glowSquidMaxHealth = 10.0D; @@ -73,7 +73,7 @@ index 44c0460a6dd785895d891a52ae13434c0ba40203..c9ff802d7449fb55583228fa6ed8aaa9 } public boolean goatRidable = false; -@@ -1374,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1368,6 +1370,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -81,7 +81,7 @@ index 44c0460a6dd785895d891a52ae13434c0ba40203..c9ff802d7449fb55583228fa6ed8aaa9 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1384,6 +1387,7 @@ public class PurpurWorldConfig { +@@ -1378,6 +1381,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0103-Infinity-bow-settings.patch b/patches/server/0103-Infinity-bow-settings.patch index 1bb1382d5..e4b97c1af 100644 --- a/patches/server/0103-Infinity-bow-settings.patch +++ b/patches/server/0103-Infinity-bow-settings.patch @@ -27,10 +27,10 @@ index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c } 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 c9ff802d7449fb55583228fa6ed8aaa97b950946..d10a5465fada1a1e7eb0dc0769a974da2a40746a 100644 +index 366181b16bddb33cf0a447f086b3d7a2039b170a..8e3e8db4c77bdc15a7f77c5c981e338c0cd0dd39 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -132,6 +132,17 @@ public class PurpurWorldConfig { +@@ -138,6 +138,17 @@ public class PurpurWorldConfig { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } diff --git a/patches/server/0104-Stonecutter-damage.patch b/patches/server/0104-Stonecutter-damage.patch index 5d1da934d..a1f60ac90 100644 --- a/patches/server/0104-Stonecutter-damage.patch +++ b/patches/server/0104-Stonecutter-damage.patch @@ -111,10 +111,10 @@ index f0051835d259ecfd0300653645c3942749a31937..161dc422a331d02132d5158efeef8ac2 private static void serverModName() { serverModName = getString("settings.server-mod-name", serverModName); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d10a5465fada1a1e7eb0dc0769a974da2a40746a..b26c67a506959757e1cb586bbdd4b0efd09e6382 100644 +index 8e3e8db4c77bdc15a7f77c5c981e338c0cd0dd39..69cf9d1f726295f54a28f328a1fb4cb1d97d6824 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -452,6 +452,11 @@ public class PurpurWorldConfig { +@@ -430,6 +430,11 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } @@ -123,6 +123,6 @@ index d10a5465fada1a1e7eb0dc0769a974da2a40746a..b26c67a506959757e1cb586bbdd4b0ef + stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); + } + - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; + public boolean turtleEggsBreakFromExpOrbs = true; + public boolean turtleEggsBreakFromItems = true; + public boolean turtleEggsBreakFromMinecarts = true; diff --git a/patches/server/0105-Configurable-daylight-cycle.patch b/patches/server/0105-Configurable-daylight-cycle.patch index 1df6e60dc..09b29634b 100644 --- a/patches/server/0105-Configurable-daylight-cycle.patch +++ b/patches/server/0105-Configurable-daylight-cycle.patch @@ -88,11 +88,11 @@ index e0d2446a3e203a8980f2b4a8d45f677f5d7a7698..5e027260743202b69ce348ef5cd04709 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b26c67a506959757e1cb586bbdd4b0efd09e6382..c06a2f1e744c06a149b46ea7b6c07acb1622f7ee 100644 +index 69cf9d1f726295f54a28f328a1fb4cb1d97d6824..5ba4b0d440a3de90a7e90a4a5331d2f48e42d962 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -114,6 +114,13 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); +@@ -120,6 +120,13 @@ public class PurpurWorldConfig { + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } + public int daytimeTicks = 12000; diff --git a/patches/server/0107-Furnace-uses-lava-from-underneath.patch b/patches/server/0107-Furnace-uses-lava-from-underneath.patch index 79eaa636a..a41f16c9f 100644 --- a/patches/server/0107-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0107-Furnace-uses-lava-from-underneath.patch @@ -48,10 +48,10 @@ index fb15ece736dde16066818216749fb2efba0b3b21..0d9b592ebfd22dc679ba7dbfd339db4d private static boolean canBurn(@Nullable Recipe 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 c06a2f1e744c06a149b46ea7b6c07acb1622f7ee..ef65f782ffc4710e425f2c44d5cb21f3ae61f481 100644 +index 5ba4b0d440a3de90a7e90a4a5331d2f48e42d962..640dad1e45ba88862efa60505171f9353e968acb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -415,6 +415,17 @@ public class PurpurWorldConfig { +@@ -400,6 +400,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index d917cef2a..61736c160 100644 --- a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index e102795a2464eac028b30977be8d99ceca2339f7..f55a32c7c4e260b41a36b9fc3be01edb return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef65f782ffc4710e425f2c44d5cb21f3ae61f481..24d40bb838b60df670711dcf57fd0b8e66215e64 100644 +index 640dad1e45ba88862efa60505171f9353e968acb..9509af3328e25ba221f66ddde94f7b1f71f6bb06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -411,8 +411,10 @@ public class PurpurWorldConfig { +@@ -396,8 +396,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch index 8324884ff..a43038393 100644 --- a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch @@ -33,7 +33,7 @@ index 2bc77858b4a78e24227b4b096fd44177202d5292..b26d5482d89e28897bcc9dc8a15042a5 entityageable.setBaby(true); entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 70d87c16734a5e1ac14cc494f95554137ba9f06e..d7c6e530e5391bfd8831c1c6364a3aa405d40724 100644 +index 8493dc3447cc524f08732045df81b7c62aecb179..182b07219192a901289114a16b12eb32cc3caa4c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -188,6 +188,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -89,16 +89,16 @@ index 70d87c16734a5e1ac14cc494f95554137ba9f06e..d7c6e530e5391bfd8831c1c6364a3aa4 @@ -314,6 +357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper - this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig((ServerLevel) this, ((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur + this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur + this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 24d40bb838b60df670711dcf57fd0b8e66215e64..c2a5db3329c88493e4ae7da76569b6758e9848e3 100644 +index 9509af3328e25ba221f66ddde94f7b1f71f6bb06..6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -370,6 +370,7 @@ public class PurpurWorldConfig { +@@ -108,6 +108,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -106,14 +106,14 @@ index 24d40bb838b60df670711dcf57fd0b8e66215e64..c2a5db3329c88493e4ae7da76569b675 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -380,6 +381,7 @@ public class PurpurWorldConfig { +@@ -118,6 +119,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); } - public boolean anvilAllowColors = false; + public int daytimeTicks = 12000; diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java index afdf04f8b22ad0b7c0b41675e44687b49c2f86d6..2621e54879e9ab0029a875f1d09eee67878b90d5 100644 --- a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java diff --git a/patches/server/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0111-Make-entity-breeding-times-configurable.patch index f88a8ea42..c5df01733 100644 --- a/patches/server/0111-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0111-Make-entity-breeding-times-configurable.patch @@ -476,10 +476,10 @@ index 3ec9b8343cf80ceea8503ad78863a4b539c6ef6b..c536b0f0d0ebe5b6b6409972eb711f84 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab796722d3f329 100644 +index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c24d6c50b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -490,9 +490,11 @@ public class PurpurWorldConfig { +@@ -484,9 +484,11 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; @@ -491,7 +491,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean batRidable = false; -@@ -522,6 +524,7 @@ public class PurpurWorldConfig { +@@ -516,6 +518,7 @@ public class PurpurWorldConfig { public boolean beeRidableInWater = false; public double beeMaxY = 256D; public double beeMaxHealth = 10.0D; @@ -499,7 +499,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -532,6 +535,7 @@ public class PurpurWorldConfig { +@@ -526,6 +529,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -507,7 +507,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean blazeRidable = false; -@@ -556,6 +560,7 @@ public class PurpurWorldConfig { +@@ -550,6 +554,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -515,7 +515,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -568,6 +573,7 @@ public class PurpurWorldConfig { +@@ -562,6 +567,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); @@ -523,7 +523,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean caveSpiderRidable = false; -@@ -588,6 +594,7 @@ public class PurpurWorldConfig { +@@ -582,6 +588,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -531,7 +531,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -598,6 +605,7 @@ public class PurpurWorldConfig { +@@ -592,6 +599,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -539,7 +539,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean codRidable = false; -@@ -616,6 +624,7 @@ public class PurpurWorldConfig { +@@ -610,6 +618,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -547,7 +547,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -626,6 +635,7 @@ public class PurpurWorldConfig { +@@ -620,6 +629,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -555,7 +555,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean creeperRidable = false; -@@ -673,6 +683,7 @@ public class PurpurWorldConfig { +@@ -667,6 +677,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -563,7 +563,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -688,6 +699,7 @@ public class PurpurWorldConfig { +@@ -682,6 +693,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); @@ -571,7 +571,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean drownedRidable = false; -@@ -794,6 +806,7 @@ public class PurpurWorldConfig { +@@ -788,6 +800,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -579,7 +579,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -804,6 +817,7 @@ public class PurpurWorldConfig { +@@ -798,6 +811,7 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -587,7 +587,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean ghastRidable = false; -@@ -864,10 +878,12 @@ public class PurpurWorldConfig { +@@ -858,10 +872,12 @@ public class PurpurWorldConfig { public boolean goatRidable = false; public boolean goatRidableInWater = false; public double goatMaxHealth = 10.0D; @@ -600,7 +600,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean guardianRidable = false; -@@ -885,6 +901,7 @@ public class PurpurWorldConfig { +@@ -879,6 +895,7 @@ public class PurpurWorldConfig { public boolean hoglinRidable = false; public boolean hoglinRidableInWater = false; public double hoglinMaxHealth = 40.0D; @@ -608,7 +608,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -894,6 +911,7 @@ public class PurpurWorldConfig { +@@ -888,6 +905,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -616,7 +616,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean horseRidableInWater = false; -@@ -903,6 +921,7 @@ public class PurpurWorldConfig { +@@ -897,6 +915,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -624,7 +624,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -918,6 +937,7 @@ public class PurpurWorldConfig { +@@ -912,6 +931,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); @@ -632,7 +632,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean huskRidable = false; -@@ -988,6 +1008,7 @@ public class PurpurWorldConfig { +@@ -982,6 +1002,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -640,7 +640,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1004,6 +1025,7 @@ public class PurpurWorldConfig { +@@ -998,6 +1019,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); @@ -648,7 +648,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean magmaCubeRidable = false; -@@ -1023,6 +1045,7 @@ public class PurpurWorldConfig { +@@ -1017,6 +1039,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidable = false; public boolean mooshroomRidableInWater = false; public double mooshroomMaxHealth = 10.0D; @@ -656,7 +656,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1032,6 +1055,7 @@ public class PurpurWorldConfig { +@@ -1026,6 +1049,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -664,7 +664,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean muleRidableInWater = false; -@@ -1041,6 +1065,7 @@ public class PurpurWorldConfig { +@@ -1035,6 +1059,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -672,7 +672,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1056,11 +1081,13 @@ public class PurpurWorldConfig { +@@ -1050,11 +1075,13 @@ 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); @@ -686,7 +686,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1070,11 +1097,13 @@ public class PurpurWorldConfig { +@@ -1064,11 +1091,13 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -700,7 +700,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1084,6 +1113,7 @@ public class PurpurWorldConfig { +@@ -1078,6 +1107,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -708,7 +708,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean parrotRidable = false; -@@ -1164,6 +1194,7 @@ public class PurpurWorldConfig { +@@ -1158,6 +1188,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -716,7 +716,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1174,6 +1205,7 @@ public class PurpurWorldConfig { +@@ -1168,6 +1199,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -724,7 +724,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean piglinRidable = false; -@@ -1223,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1217,6 +1249,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -732,7 +732,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1235,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1229,6 +1262,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -740,7 +740,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean pufferfishRidable = false; -@@ -1254,6 +1288,7 @@ public class PurpurWorldConfig { +@@ -1248,6 +1282,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -748,7 +748,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1265,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1294,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -756,7 +756,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean ravagerRidable = false; -@@ -1296,6 +1332,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1326,7 @@ public class PurpurWorldConfig { public boolean sheepRidable = false; public boolean sheepRidableInWater = false; public double sheepMaxHealth = 8.0D; @@ -764,7 +764,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1305,6 +1342,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1336,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -772,7 +772,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean shulkerRidable = false; -@@ -1459,6 +1497,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1491,7 @@ public class PurpurWorldConfig { public boolean striderRidable = false; public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; @@ -780,7 +780,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1468,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1462,6 +1501,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -788,7 +788,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean traderLlamaRidable = false; -@@ -1478,6 +1518,7 @@ public class PurpurWorldConfig { +@@ -1472,6 +1512,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -796,7 +796,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1494,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1529,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); @@ -804,7 +804,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean tropicalFishRidable = false; -@@ -1511,6 +1553,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1547,7 @@ public class PurpurWorldConfig { public boolean turtleRidable = false; public boolean turtleRidableInWater = false; public double turtleMaxHealth = 30.0D; @@ -812,7 +812,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1520,6 +1563,7 @@ public class PurpurWorldConfig { +@@ -1514,6 +1557,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -820,7 +820,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean vexRidable = false; -@@ -1548,6 +1592,7 @@ public class PurpurWorldConfig { +@@ -1542,6 +1586,7 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; @@ -828,7 +828,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1564,6 +1609,7 @@ public class PurpurWorldConfig { +@@ -1558,6 +1603,7 @@ public class PurpurWorldConfig { villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -836,7 +836,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 } public boolean vindicatorRidable = false; -@@ -1655,6 +1701,7 @@ public class PurpurWorldConfig { +@@ -1649,6 +1695,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -844,7 +844,7 @@ index c2a5db3329c88493e4ae7da76569b6758e9848e3..6fc3bd17ea397cc6fa00b9d0d5ab7967 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1664,6 +1711,7 @@ public class PurpurWorldConfig { +@@ -1658,6 +1705,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch index 8d9dd9ec8..2952258b4 100644 --- a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -142,10 +142,10 @@ index 0284201b0bb0f5c9a4a2393cf0d83e8e21262df3..1f46a2be362ed5f60a7ca75916fe7bd4 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 6fc3bd17ea397cc6fa00b9d0d5ab796722d3f329..1f431fe2bde60d82eef9502e689b8307c9fe27a8 100644 +index de65734d13cedf5753a0560315e0f83c24d6c50b..6ec9bb36d3dcf175b90342f46d49a3c3ac30fb0c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -110,8 +110,10 @@ public class PurpurWorldConfig { +@@ -95,8 +95,10 @@ public class PurpurWorldConfig { } public float armorstandStepHeight = 0.0F; @@ -155,8 +155,8 @@ index 6fc3bd17ea397cc6fa00b9d0d5ab796722d3f329..1f431fe2bde60d82eef9502e689b8307 + armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); } - public int daytimeTicks = 12000; -@@ -366,6 +368,7 @@ public class PurpurWorldConfig { + public boolean useBetterMending = false; +@@ -104,6 +106,7 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; @@ -164,7 +164,7 @@ index 6fc3bd17ea397cc6fa00b9d0d5ab796722d3f329..1f431fe2bde60d82eef9502e689b8307 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -377,6 +380,7 @@ public class PurpurWorldConfig { +@@ -115,6 +118,7 @@ public class PurpurWorldConfig { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 857677571..a79e3f4e0 100644 --- a/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,10 +17,10 @@ index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d834155 ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f431fe2bde60d82eef9502e689b8307c9fe27a8..0a67d4dbb4f38b583a5a001ff984f40f24a171da 100644 +index 6ec9bb36d3dcf175b90342f46d49a3c3ac30fb0c..e65f8580dbd2112f7fdd2c9e66808f04afb073e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -111,9 +111,11 @@ public class PurpurWorldConfig { +@@ -96,9 +96,11 @@ public class PurpurWorldConfig { public float armorstandStepHeight = 0.0F; public boolean armorstandSetNameVisible = false; @@ -31,4 +31,4 @@ index 1f431fe2bde60d82eef9502e689b8307c9fe27a8..0a67d4dbb4f38b583a5a001ff984f40f + armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags); } - public int daytimeTicks = 12000; + public boolean useBetterMending = false; diff --git a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index e2e0b1dc6..5067abf0e 100644 --- a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index c72d5151d4d8eb784550022321578ca820c84948..a15be819a3c73cf3bdd5da148d6f2d56 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 0a67d4dbb4f38b583a5a001ff984f40f24a171da..c592683fa823f74197ee39a8e6921752eff3f7f9 100644 +index e65f8580dbd2112f7fdd2c9e66808f04afb073e2..928d2a647236ad46f2c30280d4ed6e04ea552f65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -768,6 +768,7 @@ public class PurpurWorldConfig { +@@ -762,6 +762,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = false; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 0a67d4dbb4f38b583a5a001ff984f40f24a171da..c592683fa823f74197ee39a8e6921752 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -778,6 +779,7 @@ public class PurpurWorldConfig { +@@ -772,6 +773,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0115-Add-configurable-snowball-damage.patch b/patches/server/0115-Add-configurable-snowball-damage.patch index 0a1b70e33..5167257c4 100644 --- a/patches/server/0115-Add-configurable-snowball-damage.patch +++ b/patches/server/0115-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index ed2f039c4042861bcfa2e41d8281eefd37daa9fa..d5d84893c77b4e60a19032d765d76bfd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c592683fa823f74197ee39a8e6921752eff3f7f9..f163025d4b30d34e2e6199e1c35bfbe9c3083af5 100644 +index 928d2a647236ad46f2c30280d4ed6e04ea552f65..d262ce0d56d03a12c2eddc054a63bef42fe2c140 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -304,6 +304,11 @@ public class PurpurWorldConfig { +@@ -314,6 +314,11 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } diff --git a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch index 4f2bf7563..b0c7a8e35 100644 --- a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch @@ -18,10 +18,10 @@ index 78f7022c6584e634b000cc0c079112fc6cc8e869..2f75ebe8088d70f73a17557fe525ae11 } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f163025d4b30d34e2e6199e1c35bfbe9c3083af5..8595f8086222cffb959c82d3ec8d06622a84c5aa 100644 +index d262ce0d56d03a12c2eddc054a63bef42fe2c140..5679ea7fc6ae18b63f63d32ac91043ae12d897ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -139,8 +139,10 @@ public class PurpurWorldConfig { +@@ -149,8 +149,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0117-Add-boat-fall-damage-config.patch b/patches/server/0117-Add-boat-fall-damage-config.patch index bfd5a744f..88c154b31 100644 --- a/patches/server/0117-Add-boat-fall-damage-config.patch +++ b/patches/server/0117-Add-boat-fall-damage-config.patch @@ -27,10 +27,10 @@ index 295658d4b479e8a3e825f0b5ce5dfc2c7c55a0fe..dfe547b7a2caa2ecfdddef9b9a49be40 if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8595f8086222cffb959c82d3ec8d06622a84c5aa..c6377ba74ed21e5414e8fb9ad3f427b141f0e443 100644 +index 5679ea7fc6ae18b63f63d32ac91043ae12d897ba..69b9254f7f9d76e6d077081c7351fcb622f7c435 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -374,6 +374,7 @@ public class PurpurWorldConfig { +@@ -105,6 +105,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; @@ -38,7 +38,7 @@ index 8595f8086222cffb959c82d3ec8d06622a84c5aa..c6377ba74ed21e5414e8fb9ad3f427b1 public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; -@@ -386,6 +387,7 @@ public class PurpurWorldConfig { +@@ -117,6 +118,7 @@ public class PurpurWorldConfig { private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); diff --git a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch index 11833431a..cf5c94985 100644 --- a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index a9c1b07f23c604d9364ccdee9478baf137af0816..10d68856c98b705158fe90623ef2b9ad 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 c6377ba74ed21e5414e8fb9ad3f427b141f0e443..6539c12836876791d17af877ae50103e57d09cac 100644 +index 69b9254f7f9d76e6d077081c7351fcb622f7c435..b29eec4e4450d6943eeecbb6256be6f3a1b35763 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1451,6 +1451,10 @@ public class PurpurWorldConfig { +@@ -1445,6 +1445,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index c6377ba74ed21e5414e8fb9ad3f427b141f0e443..6539c12836876791d17af877ae50103e private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1463,6 +1467,10 @@ public class PurpurWorldConfig { +@@ -1457,6 +1461,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 4ed2a4f23..3c3432b22 100644 --- a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -183,10 +183,10 @@ index 901fc6520d58a5fa5f2cf1b4fa78fec6008aa409..9050cd25663c71197c597aac0ab2e612 public static final VillagerProfession FISHERMAN = register("fisherman", PoiType.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiType.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6539c12836876791d17af877ae50103e57d09cac..9f3ec1e7555b3ccb018e1e5d4b7b161b386ca244 100644 +index b29eec4e4450d6943eeecbb6256be6f3a1b35763..a7fa7b522996ffe19368a15c8d158c444da1e55d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1618,6 +1618,8 @@ public class PurpurWorldConfig { +@@ -1612,6 +1612,8 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -195,7 +195,7 @@ index 6539c12836876791d17af877ae50103e57d09cac..9f3ec1e7555b3ccb018e1e5d4b7b161b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1635,6 +1637,8 @@ public class PurpurWorldConfig { +@@ -1629,6 +1631,8 @@ public class PurpurWorldConfig { villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index ff6ad422f..864fff9dd 100644 --- a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 76f1bbec2b8ebe037de65ee5ec718e17a6081c13..f8b742ee8e637edd8e8b05aff2fcc7a7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f3ec1e7555b3ccb018e1e5d4b7b161b386ca244..b74ebb2086b03997d282a557b2e81c0b37ac4f66 100644 +index a7fa7b522996ffe19368a15c8d158c444da1e55d..65baf4aafad765b9d8d053d024d604f5b6ff724a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1837,6 +1837,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1831,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 9f3ec1e7555b3ccb018e1e5d4b7b161b386ca244..b74ebb2086b03997d282a557b2e81c0b private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1850,5 +1851,6 @@ public class PurpurWorldConfig { +@@ -1844,5 +1845,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch index b453676e0..3d2bfedcc 100644 --- a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -222,10 +222,10 @@ index f856b42201c17f8da21251e54fcf052336916e70..ac0803d42be2f36a2f40487ee31413d0 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b74ebb2086b03997d282a557b2e81c0b37ac4f66..46e59d833a179b669ed58731a7ec828521b1322c 100644 +index 65baf4aafad765b9d8d053d024d604f5b6ff724a..4dd081359254913c4ffd62e92f6621ee8b3074a0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1730,6 +1730,8 @@ public class PurpurWorldConfig { +@@ -1724,6 +1724,8 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -234,7 +234,7 @@ index b74ebb2086b03997d282a557b2e81c0b37ac4f66..46e59d833a179b669ed58731a7ec8285 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1740,6 +1742,8 @@ public class PurpurWorldConfig { +@@ -1734,6 +1736,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0124-Configurable-default-collar-color.patch b/patches/server/0124-Configurable-default-collar-color.patch index 78d418749..d10239aad 100644 --- a/patches/server/0124-Configurable-default-collar-color.patch +++ b/patches/server/0124-Configurable-default-collar-color.patch @@ -45,10 +45,10 @@ index 38c69ddde8a54482a1de60387bace297869c47f3..20e0e74d7e43f436172ca7b4cb8b613b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46e59d833a179b669ed58731a7ec828521b1322c..fa4651425a396cd4a2b7d600d8bb6b69fc920167 100644 +index 4dd081359254913c4ffd62e92f6621ee8b3074a0..8f5d38ce4bbcfa36e98c6d7b5720f82d94ed0fba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -571,6 +571,7 @@ public class PurpurWorldConfig { +@@ -565,6 +565,7 @@ public class PurpurWorldConfig { public boolean catRidable = false; public boolean catRidableInWater = false; @@ -56,7 +56,7 @@ index 46e59d833a179b669ed58731a7ec828521b1322c..fa4651425a396cd4a2b7d600d8bb6b69 public double catMaxHealth = 10.0D; public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; -@@ -584,6 +585,11 @@ public class PurpurWorldConfig { +@@ -578,6 +579,11 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max-health", null); set("mobs.cat.attributes.max_health", oldValue); } @@ -68,7 +68,7 @@ index 46e59d833a179b669ed58731a7ec828521b1322c..fa4651425a396cd4a2b7d600d8bb6b69 catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); -@@ -1730,6 +1736,7 @@ public class PurpurWorldConfig { +@@ -1724,6 +1730,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -76,7 +76,7 @@ index 46e59d833a179b669ed58731a7ec828521b1322c..fa4651425a396cd4a2b7d600d8bb6b69 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1742,6 +1749,11 @@ public class PurpurWorldConfig { +@@ -1736,6 +1743,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0125-Phantom-flames-on-swoop.patch b/patches/server/0125-Phantom-flames-on-swoop.patch index c05e6e889..e81e5f862 100644 --- a/patches/server/0125-Phantom-flames-on-swoop.patch +++ b/patches/server/0125-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 284532bfe697d288529eacbad0fcfcb6a3680446..97e3e25263e1cea87d0b420da05271b8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa4651425a396cd4a2b7d600d8bb6b69fc920167..ad2cb39996e516f43276f66b0d83c76ee3743f26 100644 +index 8f5d38ce4bbcfa36e98c6d7b5720f82d94ed0fba..a8ef326a9616ce9ff16c8265aeb4b81b5f015e81 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1161,6 +1161,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1155,7 @@ public class PurpurWorldConfig { public float phantomFlameDamage = 1.0F; public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; @@ -28,7 +28,7 @@ index fa4651425a396cd4a2b7d600d8bb6b69fc920167..ad2cb39996e516f43276f66b0d83c76e public double phantomMaxHealth = 20.0D; public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; -@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1181,6 +1182,7 @@ public class PurpurWorldConfig { phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage); phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime); phantomAllowGriefing = getBoolean("mobs.phantom.allow-griefing", phantomAllowGriefing); diff --git a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch index fe908af74..6f74ebcd0 100644 --- a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index db726697b00afdee6078849fd224263483349912..c808664a67a9604e40ab388c6d0e6ac3 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 ad2cb39996e516f43276f66b0d83c76ee3743f26..f73b2641b0da7096e5522b266ff008c9a41d286e 100644 +index a8ef326a9616ce9ff16c8265aeb4b81b5f015e81..8f4ff8bc8466263aaac5811572ce30f282084855 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -420,6 +420,11 @@ public class PurpurWorldConfig { +@@ -405,6 +405,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0128-Striders-give-saddle-back.patch b/patches/server/0128-Striders-give-saddle-back.patch index a26122ce3..216f6cb48 100644 --- a/patches/server/0128-Striders-give-saddle-back.patch +++ b/patches/server/0128-Striders-give-saddle-back.patch @@ -28,10 +28,10 @@ index 74d11bf608ff26093d7995a09a463cac24304fa1..5902f0883ca0ad706801dc693bb3ac79 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f73b2641b0da7096e5522b266ff008c9a41d286e..e9af5e1f42aa71c9d8472b88b99eac356e8f9e2f 100644 +index 8f4ff8bc8466263aaac5811572ce30f282084855..41629af5929af46cbf164467289ae8f2e1de14ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1536,6 +1536,7 @@ public class PurpurWorldConfig { +@@ -1530,6 +1530,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -39,7 +39,7 @@ index f73b2641b0da7096e5522b266ff008c9a41d286e..e9af5e1f42aa71c9d8472b88b99eac35 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1546,6 +1547,7 @@ public class PurpurWorldConfig { +@@ -1540,6 +1541,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch index a20b229ce..e44743a13 100644 --- a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index 7518b7f7378eba01d12224db6264b6bcc1254432..b1ca8265d2104168b64e560634f319c7 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9af5e1f42aa71c9d8472b88b99eac356e8f9e2f..ab2a909c34c9074916cdc1a5e0eabe920078180f 100644 +index 41629af5929af46cbf164467289ae8f2e1de14ee..23b684830df37277dd35cedf5f415995e052eaf4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -276,6 +276,19 @@ public class PurpurWorldConfig { +@@ -288,6 +288,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch index 770412d61..5cac8f4b0 100644 --- a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch @@ -393,23 +393,10 @@ index b942e7c85e6c8f9a7664d9e5bf93bcd79e0651f1..5b29f3fced5435e172dd69f6f4eb265e return true; // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9846e06c9 100644 +index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0f4a0bd4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -103,10 +103,12 @@ public class PurpurWorldConfig { - public boolean turtleEggsBreakFromExpOrbs = true; - public boolean turtleEggsBreakFromItems = true; - public boolean turtleEggsBreakFromMinecarts = true; -+ public boolean turtleEggsBypassMobGriefing = false; - private void turtleEggSettings() { - turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); - turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); - turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); -+ turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); - } - - public float armorstandStepHeight = 0.0F; -@@ -390,8 +392,11 @@ public class PurpurWorldConfig { +@@ -108,8 +108,11 @@ public class PurpurWorldConfig { public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; @@ -421,7 +408,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -403,8 +408,11 @@ public class PurpurWorldConfig { +@@ -121,8 +124,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); @@ -433,7 +420,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 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); -@@ -445,9 +453,11 @@ public class PurpurWorldConfig { +@@ -430,9 +436,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -445,8 +432,8 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -481,6 +491,11 @@ public class PurpurWorldConfig { - waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); +@@ -459,6 +467,11 @@ public class PurpurWorldConfig { + lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } + public boolean powderSnowBypassMobGriefing = false; @@ -457,7 +444,20 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -682,6 +697,7 @@ public class PurpurWorldConfig { +@@ -493,10 +506,12 @@ public class PurpurWorldConfig { + public boolean turtleEggsBreakFromExpOrbs = true; + public boolean turtleEggsBreakFromItems = true; + public boolean turtleEggsBreakFromMinecarts = true; ++ public boolean turtleEggsBypassMobGriefing = false; + private void turtleEggSettings() { + turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); + turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); ++ turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); + } + + public boolean waterInfinite = true; +@@ -676,6 +691,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -465,7 +465,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -693,6 +709,7 @@ public class PurpurWorldConfig { +@@ -687,6 +703,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -473,7 +473,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean dolphinRidable = false; -@@ -780,6 +797,7 @@ public class PurpurWorldConfig { +@@ -774,6 +791,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 256D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -481,7 +481,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -795,6 +813,7 @@ public class PurpurWorldConfig { +@@ -789,6 +807,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -489,7 +489,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean endermanRidable = false; -@@ -802,6 +821,7 @@ public class PurpurWorldConfig { +@@ -796,6 +815,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -497,7 +497,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -813,6 +833,7 @@ public class PurpurWorldConfig { +@@ -807,6 +827,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -505,7 +505,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean endermiteRidable = false; -@@ -832,6 +853,7 @@ public class PurpurWorldConfig { +@@ -826,6 +847,7 @@ public class PurpurWorldConfig { public boolean evokerRidable = false; public boolean evokerRidableInWater = false; public double evokerMaxHealth = 24.0D; @@ -513,7 +513,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -841,6 +863,7 @@ public class PurpurWorldConfig { +@@ -835,6 +857,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -521,7 +521,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean foxRidable = false; -@@ -848,6 +871,7 @@ public class PurpurWorldConfig { +@@ -842,6 +865,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -529,7 +529,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -859,6 +883,7 @@ public class PurpurWorldConfig { +@@ -853,6 +877,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -537,7 +537,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean ghastRidable = false; -@@ -1254,6 +1279,7 @@ public class PurpurWorldConfig { +@@ -1248,6 +1273,7 @@ public class PurpurWorldConfig { public boolean piglinRidable = false; public boolean piglinRidableInWater = false; public double piglinMaxHealth = 16.0D; @@ -545,7 +545,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1263,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1257,6 +1283,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -553,7 +553,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean piglinBruteRidable = false; -@@ -1282,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1276,6 +1303,7 @@ public class PurpurWorldConfig { public boolean pillagerRidable = false; public boolean pillagerRidableInWater = false; public double pillagerMaxHealth = 24.0D; @@ -561,7 +561,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1291,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1285,6 +1313,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -569,7 +569,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean polarBearRidable = false; -@@ -1332,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1326,6 +1355,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -577,7 +577,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1344,11 +1374,13 @@ public class PurpurWorldConfig { +@@ -1338,11 +1368,13 @@ 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); @@ -591,7 +591,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1358,6 +1390,7 @@ public class PurpurWorldConfig { +@@ -1352,6 +1384,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -599,7 +599,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean salmonRidable = false; -@@ -1376,6 +1409,7 @@ public class PurpurWorldConfig { +@@ -1370,6 +1403,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = false; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -607,7 +607,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1386,6 +1420,7 @@ public class PurpurWorldConfig { +@@ -1380,6 +1414,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -615,7 +615,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean shulkerRidable = false; -@@ -1405,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1434,7 @@ public class PurpurWorldConfig { public boolean silverfishRidable = false; public boolean silverfishRidableInWater = false; public double silverfishMaxHealth = 8.0D; @@ -623,7 +623,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1414,6 +1450,7 @@ public class PurpurWorldConfig { +@@ -1408,6 +1444,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -631,7 +631,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean skeletonRidable = false; -@@ -1481,6 +1518,7 @@ public class PurpurWorldConfig { +@@ -1475,6 +1512,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -639,7 +639,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1497,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1491,6 +1529,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); @@ -647,7 +647,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean squidRidable = false; -@@ -1648,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1681,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -655,7 +655,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1667,6 +1707,7 @@ public class PurpurWorldConfig { +@@ -1661,6 +1701,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); @@ -663,7 +663,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean vindicatorRidable = false; -@@ -1723,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1717,6 +1758,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -671,7 +671,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1739,6 +1781,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1775,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -679,7 +679,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 } public boolean witherSkeletonRidable = false; -@@ -1803,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1840,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -687,7 +687,7 @@ index ab2a909c34c9074916cdc1a5e0eabe920078180f..cb3c57b1e257c8f5c196de6f09c6cff9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1817,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1811,6 +1855,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch index 4119027b0..047ba56b6 100644 --- a/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,10 +22,10 @@ index 7dd423f6b92b7f27dd43e5ef3f4029a100a8cfa6..8d0a1da17c38118293d1f05849cdc999 org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, blockposition, data.getValue(NoteBlock.INSTRUMENT), data.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 cb3c57b1e257c8f5c196de6f09c6cff9846e06c9..febd1ef87a18e22c70a7aafbf7b0c149896ff691 100644 +index 3875a19e5217e0752738d4d7ed52e7a0f4a0bd4b..6801237f445c9196c1a33bc8ff09d1181250aa65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -395,6 +395,7 @@ public class PurpurWorldConfig { +@@ -111,6 +111,7 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; public boolean milkCuresBadOmen = true; @@ -33,7 +33,7 @@ index cb3c57b1e257c8f5c196de6f09c6cff9846e06c9..febd1ef87a18e22c70a7aafbf7b0c149 public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; -@@ -411,6 +412,7 @@ public class PurpurWorldConfig { +@@ -127,6 +128,7 @@ public class PurpurWorldConfig { entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch index a747daa5c..322f5db54 100644 --- a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch @@ -108,10 +108,10 @@ index 29d8a6f8e8278d8d43f63761443dc47933af263b..8c0eda7a974d99565d7ca55dc8e35c98 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index febd1ef87a18e22c70a7aafbf7b0c149896ff691..ee869d363b3a49099d3130da6168470f5f4d68b8 100644 +index 6801237f445c9196c1a33bc8ff09d1181250aa65..b8d83dbdcea2b042f5c0688ee52b9d06461a1993 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -394,6 +394,7 @@ public class PurpurWorldConfig { +@@ -110,6 +110,7 @@ public class PurpurWorldConfig { public boolean entitiesCanUsePortals = true; public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; @@ -119,7 +119,7 @@ index febd1ef87a18e22c70a7aafbf7b0c149896ff691..ee869d363b3a49099d3130da6168470f public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; -@@ -411,6 +412,7 @@ public class PurpurWorldConfig { +@@ -127,6 +128,7 @@ public class PurpurWorldConfig { entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); diff --git a/patches/server/0135-Farmland-trampling-changes.patch b/patches/server/0135-Farmland-trampling-changes.patch index 7ed08a884..9cf9bf7ed 100644 --- a/patches/server/0135-Farmland-trampling-changes.patch +++ b/patches/server/0135-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 4c80e2a10715ce4d4442ea4636808d1e10025494..a750d9cfbb7ba9057004924cac2b5a81 if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ee869d363b3a49099d3130da6168470f5f4d68b8..e702d8320d0ab891c93171dd52f1021a20b096ff 100644 +index b8d83dbdcea2b042f5c0688ee52b9d06461a1993..d3dbf71515ffca426e962e7466cd89b07d66ccc6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -460,10 +460,16 @@ public class PurpurWorldConfig { +@@ -443,10 +443,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0136-Movement-options-for-armor-stands.patch b/patches/server/0136-Movement-options-for-armor-stands.patch index 80d2de3d5..c21e45202 100644 --- a/patches/server/0136-Movement-options-for-armor-stands.patch +++ b/patches/server/0136-Movement-options-for-armor-stands.patch @@ -66,10 +66,10 @@ index 50370dc8697569a4e5cf8ec3714d227a59357d64..e9e24435057cff9c0af758ca2aa822c3 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e702d8320d0ab891c93171dd52f1021a20b096ff..8b734ad52e775a970bee86c3c6f846f1b610de87 100644 +index d3dbf71515ffca426e962e7466cd89b07d66ccc6..68ed6beaa74f9c29f2840e06713fc66e4e62ef32 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -114,10 +114,16 @@ public class PurpurWorldConfig { +@@ -97,10 +97,16 @@ public class PurpurWorldConfig { public float armorstandStepHeight = 0.0F; public boolean armorstandSetNameVisible = false; public boolean armorstandFixNametags = false; @@ -85,4 +85,4 @@ index e702d8320d0ab891c93171dd52f1021a20b096ff..8b734ad52e775a970bee86c3c6f846f1 + armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence); } - public int daytimeTicks = 12000; + public boolean useBetterMending = false; diff --git a/patches/server/0137-Fix-stuck-in-portals.patch b/patches/server/0137-Fix-stuck-in-portals.patch index 154db4944..50b19210d 100644 --- a/patches/server/0137-Fix-stuck-in-portals.patch +++ b/patches/server/0137-Fix-stuck-in-portals.patch @@ -37,10 +37,10 @@ index 1747b075d86585f795cde85f390a0a95b80ad3d7..d046f2f85efd54c3fe91ca5020bbc7b3 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8b734ad52e775a970bee86c3c6f846f1b610de87..706ecb3790e64f9a2df6dd6c09909aed42260212 100644 +index 68ed6beaa74f9c29f2840e06713fc66e4e62ef32..9806ccd697981b9e41af8eede4209d72159a4d52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -308,6 +308,7 @@ public class PurpurWorldConfig { +@@ -328,6 +328,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -48,7 +48,7 @@ index 8b734ad52e775a970bee86c3c6f846f1b610de87..706ecb3790e64f9a2df6dd6c09909aed private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -325,6 +326,7 @@ public class PurpurWorldConfig { +@@ -345,6 +346,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch index c89956349..a1d22b334 100644 --- a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch @@ -1174,10 +1174,10 @@ index c5dbb1c8210b71f7d9d91089cb139f65605573a8..e5b78c9d6fb326771d65ea9afd9da38c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7ef2372241 100644 +index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83f780e8b2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -554,6 +554,7 @@ public class PurpurWorldConfig { +@@ -548,6 +548,7 @@ public class PurpurWorldConfig { useNightVisionWhenRiding = getBoolean("ridable-settings.use-night-vision", useNightVisionWhenRiding); } @@ -1185,7 +1185,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; -@@ -561,6 +562,7 @@ public class PurpurWorldConfig { +@@ -555,6 +556,7 @@ public class PurpurWorldConfig { axolotlRidable = getBoolean("mobs.axolotl.ridable", axolotlRidable); axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks); @@ -1193,7 +1193,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean batRidable = false; -@@ -574,6 +576,7 @@ public class PurpurWorldConfig { +@@ -568,6 +570,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1201,7 +1201,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -584,6 +587,7 @@ public class PurpurWorldConfig { +@@ -578,6 +581,7 @@ public class PurpurWorldConfig { set("mobs.bat.attributes.max_health", oldValue); } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); @@ -1209,7 +1209,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean beeRidable = false; -@@ -591,6 +595,7 @@ public class PurpurWorldConfig { +@@ -585,6 +589,7 @@ public class PurpurWorldConfig { public double beeMaxY = 256D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1217,7 +1217,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -602,12 +607,14 @@ public class PurpurWorldConfig { +@@ -596,12 +601,14 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1232,7 +1232,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -618,6 +625,7 @@ public class PurpurWorldConfig { +@@ -612,6 +619,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1240,7 +1240,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean catRidable = false; -@@ -628,6 +636,7 @@ public class PurpurWorldConfig { +@@ -622,6 +630,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -1248,7 +1248,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -646,11 +655,13 @@ public class PurpurWorldConfig { +@@ -640,11 +649,13 @@ 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); @@ -1262,7 +1262,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -660,6 +671,7 @@ public class PurpurWorldConfig { +@@ -654,6 +665,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1270,7 +1270,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean chickenRidable = false; -@@ -667,6 +679,7 @@ public class PurpurWorldConfig { +@@ -661,6 +673,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1278,7 +1278,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -678,10 +691,12 @@ public class PurpurWorldConfig { +@@ -672,10 +685,12 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1291,7 +1291,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); if (PurpurConfig.version < 10) { -@@ -690,6 +705,7 @@ public class PurpurWorldConfig { +@@ -684,6 +699,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1299,7 +1299,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean cowRidable = false; -@@ -697,6 +713,7 @@ public class PurpurWorldConfig { +@@ -691,6 +707,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1307,7 +1307,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -708,6 +725,7 @@ public class PurpurWorldConfig { +@@ -702,6 +719,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1315,7 +1315,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean creeperRidable = false; -@@ -716,6 +734,7 @@ public class PurpurWorldConfig { +@@ -710,6 +728,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1323,7 +1323,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -728,6 +747,7 @@ public class PurpurWorldConfig { +@@ -722,6 +741,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); @@ -1331,7 +1331,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean dolphinRidable = false; -@@ -736,6 +756,7 @@ public class PurpurWorldConfig { +@@ -730,6 +750,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1339,7 +1339,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -748,6 +769,7 @@ public class PurpurWorldConfig { +@@ -742,6 +763,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1347,7 +1347,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean donkeyRidableInWater = false; -@@ -758,6 +780,7 @@ public class PurpurWorldConfig { +@@ -752,6 +774,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1355,7 +1355,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -774,6 +797,7 @@ public class PurpurWorldConfig { +@@ -768,6 +791,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); @@ -1363,7 +1363,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean drownedRidable = false; -@@ -783,6 +807,7 @@ public class PurpurWorldConfig { +@@ -777,6 +801,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1371,7 +1371,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -796,10 +821,12 @@ public class PurpurWorldConfig { +@@ -790,10 +815,12 @@ 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); @@ -1384,7 +1384,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); if (PurpurConfig.version < 10) { -@@ -808,6 +835,7 @@ public class PurpurWorldConfig { +@@ -802,6 +829,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1392,7 +1392,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean enderDragonRidable = false; -@@ -816,6 +844,7 @@ public class PurpurWorldConfig { +@@ -810,6 +838,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1400,7 +1400,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -832,6 +861,7 @@ public class PurpurWorldConfig { +@@ -826,6 +855,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); @@ -1408,7 +1408,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean endermanRidable = false; -@@ -840,6 +870,7 @@ public class PurpurWorldConfig { +@@ -834,6 +864,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1416,7 +1416,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -852,11 +883,13 @@ public class PurpurWorldConfig { +@@ -846,11 +877,13 @@ 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); @@ -1430,7 +1430,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -866,12 +899,14 @@ public class PurpurWorldConfig { +@@ -860,12 +893,14 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1445,7 +1445,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -882,6 +917,7 @@ public class PurpurWorldConfig { +@@ -876,6 +911,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1453,7 +1453,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean foxRidable = false; -@@ -890,6 +926,7 @@ public class PurpurWorldConfig { +@@ -884,6 +920,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1461,7 +1461,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -902,12 +939,14 @@ public class PurpurWorldConfig { +@@ -896,12 +933,14 @@ 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); @@ -1476,7 +1476,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -918,6 +957,7 @@ public class PurpurWorldConfig { +@@ -912,6 +951,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1484,7 +1484,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean giantRidable = false; -@@ -929,6 +969,7 @@ public class PurpurWorldConfig { +@@ -923,6 +963,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1492,7 +1492,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -948,30 +989,36 @@ public class PurpurWorldConfig { +@@ -942,30 +983,36 @@ 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); @@ -1529,7 +1529,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); if (PurpurConfig.version < 10) { -@@ -980,12 +1027,14 @@ public class PurpurWorldConfig { +@@ -974,12 +1021,14 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1544,7 +1544,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -996,6 +1045,7 @@ public class PurpurWorldConfig { +@@ -990,6 +1039,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1552,7 +1552,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean horseRidableInWater = false; -@@ -1006,6 +1056,7 @@ public class PurpurWorldConfig { +@@ -1000,6 +1050,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1560,7 +1560,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1022,6 +1073,7 @@ public class PurpurWorldConfig { +@@ -1016,6 +1067,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); @@ -1568,7 +1568,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean huskRidable = false; -@@ -1031,6 +1083,7 @@ public class PurpurWorldConfig { +@@ -1025,6 +1077,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1576,7 +1576,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1044,6 +1097,7 @@ public class PurpurWorldConfig { +@@ -1038,6 +1091,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); @@ -1584,7 +1584,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean illusionerRidable = false; -@@ -1051,6 +1105,7 @@ public class PurpurWorldConfig { +@@ -1045,6 +1099,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1592,7 +1592,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1066,12 +1121,14 @@ public class PurpurWorldConfig { +@@ -1060,12 +1115,14 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1607,7 +1607,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1082,6 +1139,7 @@ public class PurpurWorldConfig { +@@ -1076,6 +1133,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1615,7 +1615,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean llamaRidable = false; -@@ -1093,6 +1151,7 @@ public class PurpurWorldConfig { +@@ -1087,6 +1145,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1623,7 +1623,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1110,11 +1169,13 @@ public class PurpurWorldConfig { +@@ -1104,11 +1163,13 @@ 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); @@ -1637,7 +1637,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1124,12 +1185,14 @@ public class PurpurWorldConfig { +@@ -1118,12 +1179,14 @@ public class PurpurWorldConfig { set("mobs.magma_cube.attributes.max_health", oldValue); } magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max_health", magmaCubeMaxHealth); @@ -1652,7 +1652,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1140,6 +1203,7 @@ public class PurpurWorldConfig { +@@ -1134,6 +1197,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1660,7 +1660,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean muleRidableInWater = false; -@@ -1150,6 +1214,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1208,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1668,7 +1668,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1166,12 +1231,14 @@ public class PurpurWorldConfig { +@@ -1160,12 +1225,14 @@ 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); @@ -1683,7 +1683,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1182,12 +1249,14 @@ public class PurpurWorldConfig { +@@ -1176,12 +1243,14 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1698,7 +1698,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1198,12 +1267,14 @@ public class PurpurWorldConfig { +@@ -1192,12 +1261,14 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1713,7 +1713,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1214,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1208,6 +1279,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1721,7 +1721,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean phantomRidable = false; -@@ -1242,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1236,6 +1308,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -1729,7 +1729,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1274,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1268,6 +1341,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); @@ -1737,7 +1737,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean pigRidable = false; -@@ -1281,6 +1355,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1349,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1745,7 +1745,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1292,12 +1367,14 @@ public class PurpurWorldConfig { +@@ -1286,12 +1361,14 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1760,7 +1760,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1308,11 +1385,13 @@ public class PurpurWorldConfig { +@@ -1302,11 +1379,13 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1774,7 +1774,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1322,12 +1401,14 @@ public class PurpurWorldConfig { +@@ -1316,12 +1395,14 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1789,7 +1789,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1338,6 +1419,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1413,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1797,7 +1797,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean polarBearRidable = false; -@@ -1346,6 +1428,7 @@ public class PurpurWorldConfig { +@@ -1340,6 +1422,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1805,7 +1805,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1359,10 +1442,12 @@ public class PurpurWorldConfig { +@@ -1353,10 +1436,12 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1818,7 +1818,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); if (PurpurConfig.version < 10) { -@@ -1371,6 +1456,7 @@ public class PurpurWorldConfig { +@@ -1365,6 +1450,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1826,7 +1826,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean rabbitRidable = false; -@@ -1380,6 +1466,7 @@ public class PurpurWorldConfig { +@@ -1374,6 +1460,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1834,7 +1834,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1393,12 +1480,14 @@ public class PurpurWorldConfig { +@@ -1387,12 +1474,14 @@ 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); @@ -1849,7 +1849,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1409,10 +1498,12 @@ public class PurpurWorldConfig { +@@ -1403,10 +1492,12 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1862,7 +1862,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); if (PurpurConfig.version < 10) { -@@ -1421,6 +1512,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1506,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1870,7 +1870,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean sheepRidable = false; -@@ -1428,6 +1520,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1514,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1878,7 +1878,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1439,11 +1532,13 @@ public class PurpurWorldConfig { +@@ -1433,11 +1526,13 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1892,7 +1892,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1453,12 +1548,14 @@ public class PurpurWorldConfig { +@@ -1447,12 +1542,14 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1907,7 +1907,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1469,11 +1566,13 @@ public class PurpurWorldConfig { +@@ -1463,11 +1560,13 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1921,7 +1921,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1483,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1576,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1929,7 +1929,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean skeletonHorseRidableInWater = true; -@@ -1493,6 +1593,7 @@ public class PurpurWorldConfig { +@@ -1487,6 +1587,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1937,7 +1937,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1508,12 +1609,14 @@ public class PurpurWorldConfig { +@@ -1502,12 +1603,14 @@ 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); @@ -1952,7 +1952,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1524,6 +1627,7 @@ public class PurpurWorldConfig { +@@ -1518,6 +1621,7 @@ public class PurpurWorldConfig { } slimeMaxHealth = getString("mobs.slime.attributes.max_health", slimeMaxHealth); slimeMaxHealthCache.clear(); @@ -1960,7 +1960,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean snowGolemRidable = false; -@@ -1537,6 +1641,7 @@ public class PurpurWorldConfig { +@@ -1531,6 +1635,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -1968,7 +1968,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1554,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1548,6 +1653,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); @@ -1976,7 +1976,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean squidRidable = false; -@@ -1561,6 +1667,7 @@ public class PurpurWorldConfig { +@@ -1555,6 +1661,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -1984,7 +1984,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1572,11 +1679,13 @@ public class PurpurWorldConfig { +@@ -1566,11 +1673,13 @@ 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); @@ -1998,7 +1998,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1586,11 +1695,13 @@ public class PurpurWorldConfig { +@@ -1580,11 +1689,13 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2012,7 +2012,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1600,6 +1711,7 @@ public class PurpurWorldConfig { +@@ -1594,6 +1705,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2020,7 +2020,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean striderRidable = false; -@@ -1607,6 +1719,7 @@ public class PurpurWorldConfig { +@@ -1601,6 +1713,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2028,7 +2028,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1618,6 +1731,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1725,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2036,7 +2036,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean traderLlamaRidable = false; -@@ -1629,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1623,6 +1737,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2044,7 +2044,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1646,10 +1761,12 @@ public class PurpurWorldConfig { +@@ -1640,10 +1755,12 @@ 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); @@ -2057,7 +2057,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); if (PurpurConfig.version < 10) { -@@ -1658,12 +1775,14 @@ public class PurpurWorldConfig { +@@ -1652,12 +1769,14 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2072,7 +2072,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1674,12 +1793,14 @@ public class PurpurWorldConfig { +@@ -1668,12 +1787,14 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2087,7 +2087,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1690,6 +1811,7 @@ public class PurpurWorldConfig { +@@ -1684,6 +1805,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2095,7 +2095,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean villagerRidable = false; -@@ -1706,6 +1828,7 @@ public class PurpurWorldConfig { +@@ -1700,6 +1822,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2103,7 +2103,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1726,12 +1849,14 @@ public class PurpurWorldConfig { +@@ -1720,12 +1843,14 @@ 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); @@ -2118,7 +2118,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1742,6 +1867,7 @@ public class PurpurWorldConfig { +@@ -1736,6 +1861,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2126,7 +2126,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean wanderingTraderRidable = false; -@@ -1749,6 +1875,7 @@ public class PurpurWorldConfig { +@@ -1743,6 +1869,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2134,7 +2134,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1760,11 +1887,13 @@ public class PurpurWorldConfig { +@@ -1754,11 +1881,13 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2148,7 +2148,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1774,6 +1903,7 @@ public class PurpurWorldConfig { +@@ -1768,6 +1897,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2156,7 +2156,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean witherRidable = false; -@@ -1783,6 +1913,7 @@ public class PurpurWorldConfig { +@@ -1777,6 +1907,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2164,7 +2164,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1800,11 +1931,13 @@ public class PurpurWorldConfig { +@@ -1794,11 +1925,13 @@ 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); @@ -2178,7 +2178,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1814,6 +1947,7 @@ public class PurpurWorldConfig { +@@ -1808,6 +1941,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2186,7 +2186,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean wolfRidable = false; -@@ -1823,6 +1957,7 @@ public class PurpurWorldConfig { +@@ -1817,6 +1951,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2194,7 +2194,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1840,11 +1975,13 @@ public class PurpurWorldConfig { +@@ -1834,11 +1969,13 @@ 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); @@ -2208,7 +2208,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -1854,6 +1991,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1985,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2216,7 +2216,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean zombieRidable = false; -@@ -1865,6 +2003,7 @@ public class PurpurWorldConfig { +@@ -1859,6 +1997,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2224,7 +2224,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1880,6 +2019,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +2013,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); @@ -2232,7 +2232,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean zombieHorseRidableInWater = false; -@@ -1891,6 +2031,7 @@ public class PurpurWorldConfig { +@@ -1885,6 +2025,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2240,7 +2240,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1907,6 +2048,7 @@ public class PurpurWorldConfig { +@@ -1901,6 +2042,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); @@ -2248,7 +2248,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean zombieVillagerRidable = false; -@@ -1916,6 +2058,7 @@ public class PurpurWorldConfig { +@@ -1910,6 +2052,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2256,7 +2256,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1929,6 +2072,7 @@ public class PurpurWorldConfig { +@@ -1923,6 +2066,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); @@ -2264,7 +2264,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e } public boolean zombifiedPiglinRidable = false; -@@ -1939,6 +2083,7 @@ public class PurpurWorldConfig { +@@ -1933,6 +2077,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2272,7 +2272,7 @@ index 706ecb3790e64f9a2df6dd6c09909aed42260212..6458959057c55017145a78ebc8e3bc7e private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1953,5 +2098,6 @@ public class PurpurWorldConfig { +@@ -1947,5 +2092,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0139-Config-to-always-tame-in-Creative.patch b/patches/server/0139-Config-to-always-tame-in-Creative.patch index 7b89992ac..c9cb41e4b 100644 --- a/patches/server/0139-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0139-Config-to-always-tame-in-Creative.patch @@ -59,10 +59,10 @@ index 663683a50f7a1125f406b6ec8bf7a0419be5f36a..713fe8ac2293fe2e60c5834b3d6fd2f1 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 6458959057c55017145a78ebc8e3bc7ef2372241..84e3221c0ebc3faaa21b599ef2411e0316a208bf 100644 +index ccf38f6ca45815a2dea27131d45cab83f780e8b2..574dfb9b8c9ffdbef07fedf76d5d835c61d83d3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,6 +396,7 @@ public class PurpurWorldConfig { +@@ -110,6 +110,7 @@ public class PurpurWorldConfig { } public boolean useBetterMending = false; @@ -70,7 +70,7 @@ index 6458959057c55017145a78ebc8e3bc7ef2372241..84e3221c0ebc3faaa21b599ef2411e03 public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; -@@ -414,6 +415,7 @@ public class PurpurWorldConfig { +@@ -128,6 +129,7 @@ public class PurpurWorldConfig { public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0140-End-crystal-explosion-options.patch b/patches/server/0140-End-crystal-explosion-options.patch index 793111262..7e45d18e1 100644 --- a/patches/server/0140-End-crystal-explosion-options.patch +++ b/patches/server/0140-End-crystal-explosion-options.patch @@ -52,10 +52,10 @@ index f8863cabad1bd0c3c2c62b8e17612d9559237d68..06c6addfa2a8dab1ad52a3588e9aeba5 this.onDestroyedBy(source); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84e3221c0ebc3faaa21b599ef2411e0316a208bf..fc840b79ecf30f98a08dca64627c55ffb3468839 100644 +index 574dfb9b8c9ffdbef07fedf76d5d835c61d83d3e..1e5e27f4df0ee17aebd50a25342571f44825f10a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -467,6 +467,35 @@ public class PurpurWorldConfig { +@@ -450,6 +450,35 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index ce6005412..fb190a66c 100644 --- a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 3b752f97f75c78657f37215ecd92b7460a71f090..5ef45fe1dac1df779727f9c441f7e651 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc840b79ecf30f98a08dca64627c55ffb3468839..dbd316e70d3de436e823a4e850a5adaa6c0e68b3 100644 +index 1e5e27f4df0ee17aebd50a25342571f44825f10a..ffe4321368b2d11d73d8d64b562b54870c8eb1b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -876,6 +876,7 @@ public class PurpurWorldConfig { +@@ -870,6 +870,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index fc840b79ecf30f98a08dca64627c55ffb3468839..dbd316e70d3de436e823a4e850a5adaa private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -893,6 +894,7 @@ public class PurpurWorldConfig { +@@ -887,6 +888,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 fc840b79ecf30f98a08dca64627c55ffb3468839..dbd316e70d3de436e823a4e850a5adaa } public boolean endermanRidable = false; -@@ -1945,6 +1947,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +1941,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index fc840b79ecf30f98a08dca64627c55ffb3468839..dbd316e70d3de436e823a4e850a5adaa private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1963,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1957,6 +1960,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0142-Dont-run-with-scissors.patch b/patches/server/0142-Dont-run-with-scissors.patch index e0c967b34..766f95b1c 100644 --- a/patches/server/0142-Dont-run-with-scissors.patch +++ b/patches/server/0142-Dont-run-with-scissors.patch @@ -93,10 +93,10 @@ index 4592b84984d35ee4cc63beebacad089c5a0317ed..2cd5c8823eb8215b3e2a6eb7dd34b752 public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dbd316e70d3de436e823a4e850a5adaa6c0e68b3..b6f506bb17369d542e594158e1ebd9bb4ae8d02e 100644 +index ffe4321368b2d11d73d8d64b562b54870c8eb1b9..06e7919068a693ac3f8dbf988d9f3fbe6f04538f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -168,6 +168,8 @@ public class PurpurWorldConfig { +@@ -190,6 +190,8 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -105,7 +105,7 @@ index dbd316e70d3de436e823a4e850a5adaa6c0e68b3..b6f506bb17369d542e594158e1ebd9bb private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -205,6 +207,8 @@ public class PurpurWorldConfig { +@@ -227,6 +229,8 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0143-One-Punch-Man.patch b/patches/server/0143-One-Punch-Man.patch index 8c9257349..7cb0e3240 100644 --- a/patches/server/0143-One-Punch-Man.patch +++ b/patches/server/0143-One-Punch-Man.patch @@ -30,10 +30,10 @@ index d0fbbaaa48d7e199ab22bc0b089f2ad45fe816ee..24b2d3b768f0b3fd0bd2238419aec6e0 if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b6f506bb17369d542e594158e1ebd9bb4ae8d02e..a0bb3b03e2f7d7dbc10b63a739690b775ce6f7b5 100644 +index 06e7919068a693ac3f8dbf988d9f3fbe6f04538f..36bf919a4ac62d4fdd85a35e747c3a8b0d5cc7c0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -313,6 +313,7 @@ public class PurpurWorldConfig { +@@ -335,6 +335,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -41,7 +41,7 @@ index b6f506bb17369d542e594158e1ebd9bb4ae8d02e..a0bb3b03e2f7d7dbc10b63a739690b77 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -331,6 +332,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/0144-Add-config-for-snow-on-blue-ice.patch b/patches/server/0144-Add-config-for-snow-on-blue-ice.patch index f0e50dab7..a79432f39 100644 --- a/patches/server/0144-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0144-Add-config-for-snow-on-blue-ice.patch @@ -29,10 +29,10 @@ index fbbb0155bd66f1daa160e03f866741d903e1869e..86f7b4117b8b9bd36e38962e3290f7b9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0bb3b03e2f7d7dbc10b63a739690b775ce6f7b5..d42a4c9d96c1bbf804302b522dcc85b88a6333dd 100644 +index 36bf919a4ac62d4fdd85a35e747c3a8b0d5cc7c0..551c15ae84829beecfa27630c0c7b63b0fb829ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -528,6 +528,11 @@ public class PurpurWorldConfig { +@@ -511,6 +511,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index d5836520e..84dfc741a 100644 --- a/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f // Paper end if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d42a4c9d96c1bbf804302b522dcc85b88a6333dd..160cf3d47975b074ca63b09feabb42a0b1eefe5b 100644 +index 551c15ae84829beecfa27630c0c7b63b0fb829ef..36ce45826a1397052d46d5a6ccb4b77c3e01fd9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -170,6 +170,10 @@ public class PurpurWorldConfig { +@@ -192,6 +192,10 @@ public class PurpurWorldConfig { public List itemImmuneToLightning = new ArrayList<>(); public boolean dontRunWithScissors = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index d42a4c9d96c1bbf804302b522dcc85b88a6333dd..160cf3d47975b074ca63b09feabb42a0 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -209,6 +213,10 @@ public class PurpurWorldConfig { +@@ -231,6 +235,10 @@ public class PurpurWorldConfig { }); dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch index 899de895f..1a50f7800 100644 --- a/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,10 +18,10 @@ index d31ae3a1df1a457d7ae55bc82e9c870c3e093e42..a50d5342c5981a7ff5b4c56beea19da7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 160cf3d47975b074ca63b09feabb42a0b1eefe5b..ecf44bbf172a18e520f451e38c68291929a4436f 100644 +index 36ce45826a1397052d46d5a6ccb4b77c3e01fd9b..3919ca6fc6742bccaaee974908a7632b7f94ab96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -322,6 +322,7 @@ public class PurpurWorldConfig { +@@ -344,6 +344,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 160cf3d47975b074ca63b09feabb42a0b1eefe5b..ecf44bbf172a18e520f451e38c682919 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -341,6 +342,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/0148-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch index d3bc27e04..73331f7ab 100644 --- a/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 1ab913281012305cba379ba7301a76501f7d3ed5..d1694338673b63ae3e7bcb38bb2450aa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ecf44bbf172a18e520f451e38c68291929a4436f..efdaffb8ec18cd68daa38ee844588c89bc9ef6c5 100644 +index 3919ca6fc6742bccaaee974908a7632b7f94ab96..363dc0b2a74a984d0f19d7b7f2b22d6f8d793fb8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -925,6 +925,8 @@ public class PurpurWorldConfig { +@@ -919,6 +919,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index ecf44bbf172a18e520f451e38c68291929a4436f..efdaffb8ec18cd68daa38ee844588c89 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -933,11 +935,17 @@ public class PurpurWorldConfig { +@@ -927,11 +929,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 48b569919..1f30e4285 100644 --- a/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index d1694338673b63ae3e7bcb38bb2450aa422f52cb..bba5ce10a4dc06272936ca26d1ac0e5a } 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 efdaffb8ec18cd68daa38ee844588c89bc9ef6c5..2d1aa83c059e28f8c883808ff6f63f7d9e074941 100644 +index 363dc0b2a74a984d0f19d7b7f2b22d6f8d793fb8..c372b6702c4c8788262d0b13b0087ad76676094e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -927,6 +927,8 @@ public class PurpurWorldConfig { +@@ -921,6 +921,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index efdaffb8ec18cd68daa38ee844588c89bc9ef6c5..2d1aa83c059e28f8c883808ff6f63f7d private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -946,6 +948,8 @@ public class PurpurWorldConfig { +@@ -940,6 +942,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/0150-Tick-fluids-config.patch b/patches/server/0150-Tick-fluids-config.patch index f52753965..8c4d2b7c8 100644 --- a/patches/server/0150-Tick-fluids-config.patch +++ b/patches/server/0150-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index 11ebadaa2438281a54cffe025a49ee5046a71ba5..07c25a2518eb5ce0da6131ce5ceb10ac } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2d1aa83c059e28f8c883808ff6f63f7d9e074941..40c25ea409b582795959fe5a6c5b33c72451f3ce 100644 +index c372b6702c4c8788262d0b13b0087ad76676094e..968ff9ce1e7d394aec3e73845d640100c353cde1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -424,6 +424,7 @@ public class PurpurWorldConfig { +@@ -122,6 +122,7 @@ public class PurpurWorldConfig { public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; @@ -47,7 +47,7 @@ index 2d1aa83c059e28f8c883808ff6f63f7d9e074941..40c25ea409b582795959fe5a6c5b33c7 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -141,6 +142,7 @@ public class PurpurWorldConfig { noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0151-Config-to-disable-Llama-caravans.patch b/patches/server/0151-Config-to-disable-Llama-caravans.patch index bda685395..a673aab34 100644 --- a/patches/server/0151-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0151-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index fde47de12ffa43bff9cfd1500a35e49325223291..7656c933a835f15c40e75851e7a2348b 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 40c25ea409b582795959fe5a6c5b33c72451f3ce..8a908c36b164b7d8e55bb62d6b295eb48c06b19f 100644 +index 968ff9ce1e7d394aec3e73845d640100c353cde1..17333d18c9e2c7f417c849a0fe9fecf3e2df8b39 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1220,6 +1220,7 @@ public class PurpurWorldConfig { +@@ -1214,6 +1214,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 40c25ea409b582795959fe5a6c5b33c72451f3ce..8a908c36b164b7d8e55bb62d6b295eb4 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1238,6 +1239,7 @@ public class PurpurWorldConfig { +@@ -1232,6 +1233,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/0152-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch index 101f42ba6..156e86904 100644 --- a/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch @@ -50,10 +50,10 @@ index cf8b4f538ee2df715162adc460c6e8e58b50ba52..525b94c61693cfd7d68305cbf4eb08a8 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a908c36b164b7d8e55bb62d6b295eb48c06b19f..16e8d72864a57c40b3f86e42b0195d362d8a2726 100644 +index 17333d18c9e2c7f417c849a0fe9fecf3e2df8b39..cbe208fb5803f111f6b63b5e8ac342433cf0165a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -789,6 +789,7 @@ public class PurpurWorldConfig { +@@ -783,6 +783,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 8a908c36b164b7d8e55bb62d6b295eb48c06b19f..16e8d72864a57c40b3f86e42b0195d36 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -802,6 +803,7 @@ public class PurpurWorldConfig { +@@ -796,6 +797,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/0153-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch index a5471412b..04cd12810 100644 --- a/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index e9087a46e401bc99b73c2cf2731fdac3e68719f8..e054edf9e7c4eef231e155516433c6fa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16e8d72864a57c40b3f86e42b0195d362d8a2726..24b4b54149d7a64a617f4ffb870f818f6362eb41 100644 +index cbe208fb5803f111f6b63b5e8ac342433cf0165a..a37e4a154cc5c9d9adb61b7bb473c453127782ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1560,6 +1560,7 @@ public class PurpurWorldConfig { +@@ -1554,6 +1554,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 16e8d72864a57c40b3f86e42b0195d362d8a2726..24b4b54149d7a64a617f4ffb870f818f private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1571,6 +1572,23 @@ public class PurpurWorldConfig { +@@ -1565,6 +1566,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0154-Sneak-to-bulk-process-composter.patch b/patches/server/0154-Sneak-to-bulk-process-composter.patch index 0e338eb2a..b48927707 100644 --- a/patches/server/0154-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0154-Sneak-to-bulk-process-composter.patch @@ -75,10 +75,10 @@ index fb8b8a9733ac50096d8406487ab1ae167ef5f7b1..16598ca0fd953b6af98dfcdb6716e2e1 int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 24b4b54149d7a64a617f4ffb870f818f6362eb41..93ceff70145703b1c5bc2022a24f31e727e837ee 100644 +index a37e4a154cc5c9d9adb61b7bb473c453127782ff..2d790f475cfcb7573d275663482c58b582f85466 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -478,6 +478,11 @@ public class PurpurWorldConfig { +@@ -461,6 +461,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0155-Config-for-skipping-night.patch b/patches/server/0155-Config-for-skipping-night.patch index 32f4c1053..5cf657dd1 100644 --- a/patches/server/0155-Config-for-skipping-night.patch +++ b/patches/server/0155-Config-for-skipping-night.patch @@ -18,10 +18,10 @@ index 5e027260743202b69ce348ef5cd04709eca689b0..fca42bb14e41e7e853af83a2f4b37d58 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 93ceff70145703b1c5bc2022a24f31e727e837ee..f8383a842a05aac1cfa307fed649e74e55d717b4 100644 +index 2d790f475cfcb7573d275663482c58b582f85466..76b2f64c18053f957491d7c4d96287db5afd01ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -323,6 +323,7 @@ public class PurpurWorldConfig { +@@ -347,6 +347,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 93ceff70145703b1c5bc2022a24f31e727e837ee..f8383a842a05aac1cfa307fed649e74e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -343,6 +344,7 @@ public class PurpurWorldConfig { +@@ -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/0156-Add-config-for-villager-trading.patch b/patches/server/0156-Add-config-for-villager-trading.patch index b30b73d31..8c946ea15 100644 --- a/patches/server/0156-Add-config-for-villager-trading.patch +++ b/patches/server/0156-Add-config-for-villager-trading.patch @@ -31,10 +31,10 @@ index e5b78c9d6fb326771d65ea9afd9da38c204922f0..1a8df13b06b1ac5e5a7d63033b4a5326 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c757abcb7238a4105646b17ff618ac226dc9597b..49ec4ebc95c4b9fbec333109ff0548a51dfcbe1a 100644 +index 76b2f64c18053f957491d7c4d96287db5afd01ab..395e4c3d0402a3bb283625b1f300825e12d40cef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1926,6 +1926,7 @@ public class PurpurWorldConfig { +@@ -1920,6 +1920,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index c757abcb7238a4105646b17ff618ac226dc9597b..49ec4ebc95c4b9fbec333109ff0548a5 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1947,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +1942,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index c757abcb7238a4105646b17ff618ac226dc9597b..49ec4ebc95c4b9fbec333109ff0548a5 } public boolean vindicatorRidable = false; -@@ -1973,6 +1975,7 @@ public class PurpurWorldConfig { +@@ -1967,6 +1969,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index c757abcb7238a4105646b17ff618ac226dc9597b..49ec4ebc95c4b9fbec333109ff0548a5 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1985,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1979,6 +1982,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/0158-Drowning-Settings.patch b/patches/server/0158-Drowning-Settings.patch index 7bff21e3e..73baf7730 100644 --- a/patches/server/0158-Drowning-Settings.patch +++ b/patches/server/0158-Drowning-Settings.patch @@ -49,10 +49,10 @@ index 24b2d3b768f0b3fd0bd2238419aec6e06bcb1a70..a46e6d55731c7877fd50329b1ad37951 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae74bae4270e869ac62443eb264221a6fe5ace01..ddb7150043689e198f525010f227bb7ad011df81 100644 +index 395e4c3d0402a3bb283625b1f300825e12d40cef..9617da94ecb07aef6f9ad515bd31bae551d1db3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -133,6 +133,15 @@ public class PurpurWorldConfig { +@@ -157,6 +157,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0159-Break-individual-slabs-when-sneaking.patch b/patches/server/0159-Break-individual-slabs-when-sneaking.patch index 63ed89aaa..925179ef3 100644 --- a/patches/server/0159-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0159-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index 54df5c2987822a727a31be2b3769d39fabb6159a..70b6a65a7d321fc71c98289f09f21cca + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ddb7150043689e198f525010f227bb7ad011df81..28b4904abbb9ac5bc110551dbe25d67efa5411dc 100644 +index 9617da94ecb07aef6f9ad515bd31bae551d1db3e..c2b52cb9f1f9c639ae11652c236480b7ca28ef45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -605,6 +605,11 @@ public class PurpurWorldConfig { +@@ -581,6 +581,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch index 1232e6f99..80a1cba1c 100644 --- a/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 1d66588cfe94d190a34dc376b4b5bff9461a3529..9459255dd06d71dc1728e440e501cb3c return false; } else if (world.getBrightness(LightLayer.BLOCK, pos) > (world.getLevel().paperConfig.maxBlockLightForMonsterSpawning >= 0 ? world.getLevel().paperConfig.maxBlockLightForMonsterSpawning : 0)) { // Paper - configurable max block light level diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28b4904abbb9ac5bc110551dbe25d67efa5411dc..8d305bfe82be07e97e8a3e5fca30984d9a0f7024 100644 +index c2b52cb9f1f9c639ae11652c236480b7ca28ef45..562702ddefd6b84e890d2d40db34bb8748cbcf14 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -557,8 +557,12 @@ public class PurpurWorldConfig { +@@ -540,8 +540,12 @@ public class PurpurWorldConfig { } public boolean snowOnBlueIce = true; diff --git a/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch index f599be1a1..bb7f9cbe4 100644 --- a/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,10 +17,10 @@ index e9e24435057cff9c0af758ca2aa822c3b1c3593d..8634431cabae82b71f409f02c84dda2d public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d305bfe82be07e97e8a3e5fca30984d9a0f7024..7fe60978f442a09507b11f7c3f6e881c427e9152 100644 +index 562702ddefd6b84e890d2d40db34bb8748cbcf14..486646dd8e667af2f6057b55e4275502ddf2565a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -117,6 +117,7 @@ public class PurpurWorldConfig { +@@ -100,6 +100,7 @@ public class PurpurWorldConfig { public boolean armorstandMovement = true; public boolean armorstandWaterMovement = true; public boolean armorstandWaterFence = true; @@ -28,11 +28,11 @@ index 8d305bfe82be07e97e8a3e5fca30984d9a0f7024..7fe60978f442a09507b11f7c3f6e881c private void armorstandSettings() { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); -@@ -124,6 +125,7 @@ public class PurpurWorldConfig { +@@ -107,6 +108,7 @@ public class PurpurWorldConfig { armorstandMovement = getBoolean("gameplay-mechanics.armorstand.can-movement-tick", armorstandMovement); armorstandWaterMovement = getBoolean("gameplay-mechanics.armorstand.can-move-in-water", armorstandWaterMovement); armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence); + armorstandPlaceWithArms = getBoolean("gameplay-mechanics.armorstand.place-with-arms-visible", armorstandPlaceWithArms); } - public int daytimeTicks = 12000; + public boolean useBetterMending = false; diff --git a/patches/server/0162-Option-to-make-doors-require-redstone.patch b/patches/server/0162-Option-to-make-doors-require-redstone.patch index bf5495782..8cb293fb8 100644 --- a/patches/server/0162-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0162-Option-to-make-doors-require-redstone.patch @@ -67,10 +67,10 @@ index 1df52a9c86c01696a8bc9f84a2082387160b3eeb..a4b9c5da133e2e8ad45d447e3f184cb1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7fe60978f442a09507b11f7c3f6e881c427e9152..7de832a3ccfe9dd89c81718b8a7d2243bed468ba 100644 +index 486646dd8e667af2f6057b55e4275502ddf2565a..a96494bb19f27c3a7c49d6e68fa1de73ce1e240d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -503,6 +503,16 @@ public class PurpurWorldConfig { +@@ -486,6 +486,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0164-Configurable-sponge-absorption.patch b/patches/server/0164-Configurable-sponge-absorption.patch index 49429db7e..343223275 100644 --- a/patches/server/0164-Configurable-sponge-absorption.patch +++ b/patches/server/0164-Configurable-sponge-absorption.patch @@ -43,10 +43,10 @@ index 842997ea9f25a05d74a2e8300e44cc39a7e9cd96..97b4e3c0d2b1bbde77b135b8595c3bfa } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7de832a3ccfe9dd89c81718b8a7d2243bed468ba..00f9d9c76394234689df72d868c7e03ddef0527a 100644 +index a96494bb19f27c3a7c49d6e68fa1de73ce1e240d..ef7c2f93ef034a52349c17faeb313b32120414ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -631,6 +631,13 @@ public class PurpurWorldConfig { +@@ -607,6 +607,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0165-Projectile-offset-config.patch b/patches/server/0165-Projectile-offset-config.patch index dd8b23811..a84f9d0e3 100644 --- a/patches/server/0165-Projectile-offset-config.patch +++ b/patches/server/0165-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 5beaafec0759543d3bddf99028c97d0d005be209..086f746cc632a90c67a6c30ea9197c5b entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00f9d9c76394234689df72d868c7e03ddef0527a..7c732ff76f9a911f6b49f8907a8a911422d164f4 100644 +index ef7c2f93ef034a52349c17faeb313b32120414ca..229efbe1c75d5fab03e7aa550a5f97d1f624bc53 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -392,6 +392,23 @@ public class PurpurWorldConfig { +@@ -416,6 +416,23 @@ public class PurpurWorldConfig { witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); } diff --git a/patches/server/0166-Config-for-powered-rail-activation-distance.patch b/patches/server/0166-Config-for-powered-rail-activation-distance.patch index 94392333c..c33867289 100644 --- a/patches/server/0166-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0166-Config-for-powered-rail-activation-distance.patch @@ -18,11 +18,11 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c732ff76f9a911f6b49f8907a8a911422d164f4..588c865c2f2ef5c1476f83f02549835f91a8692c 100644 +index 229efbe1c75d5fab03e7aa550a5f97d1f624bc53..41f32e653b0f114254647e93c9010ca74a422b6d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -643,6 +643,11 @@ public class PurpurWorldConfig { - slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); +@@ -593,6 +593,11 @@ public class PurpurWorldConfig { + powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } + public int railActivationRange = 8; @@ -30,6 +30,6 @@ index 7c732ff76f9a911f6b49f8907a8a911422d164f4..588c865c2f2ef5c1476f83f02549835f + railActivationRange = getInt("blocks.powered-rail.activation-range", railActivationRange); + } + - public boolean spawnerDeactivateByRedstone = false; - private void spawnerSettings() { - spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + public boolean respawnAnchorExplode = true; + public double respawnAnchorExplosionPower = 5.0D; + public boolean respawnAnchorExplosionFire = true; diff --git a/patches/server/0167-Piglin-portal-spawn-modifier.patch b/patches/server/0167-Piglin-portal-spawn-modifier.patch index 15e004236..daf43290f 100644 --- a/patches/server/0167-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0167-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 13a367d2b5f245f4dd92df03288dc40b81e19603..bd593ec55fcccc1e02cf5683891c5586 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 588c865c2f2ef5c1476f83f02549835f91a8692c..13f7279f3ea2757b93ba3abbb44256f21c1b2b12 100644 +index 41f32e653b0f114254647e93c9010ca74a422b6d..fa95eb94413b51263a37a5d463181a7e174c582d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1513,6 +1513,7 @@ public class PurpurWorldConfig { +@@ -1507,6 +1507,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 588c865c2f2ef5c1476f83f02549835f91a8692c..13f7279f3ea2757b93ba3abbb44256f2 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1524,6 +1525,7 @@ public class PurpurWorldConfig { +@@ -1518,6 +1519,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch index 8e383f88c..8b4881711 100644 --- a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch @@ -31,11 +31,11 @@ index 96b4597101a7f3e98ce30bfc301e8ca1620d0fe4..d7845984b5077cdcd40d652c226d5d60 entity.hurt(DamageSource.HOT_FLOOR, 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13f7279f3ea2757b93ba3abbb44256f21c1b2b12..600d019aba7c58516d61a4cefc135f1da3e2aa56 100644 +index fa95eb94413b51263a37a5d463181a7e174c582d..0d78700bde1000e43bf6633140fb4f53975308f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -612,6 +612,13 @@ public class PurpurWorldConfig { - waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); +@@ -588,6 +588,13 @@ public class PurpurWorldConfig { + lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } + public boolean magmaBlockDamageWhenSneaking = false; diff --git a/patches/server/0170-Config-for-wither-explosion-radius.patch b/patches/server/0170-Config-for-wither-explosion-radius.patch index 113282364..7eae263d6 100644 --- a/patches/server/0170-Config-for-wither-explosion-radius.patch +++ b/patches/server/0170-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index a66e9826b8283366cec5adb54f79efee47d9df22..6cf8b12e94c17a8111eef5cc0157e4df if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17ad853b6a151d220f880613c46e15e6e6823af7..c20e8ca37fbd8ec2046c1d5e3aee8bde57763ac9 100644 +index 0d78700bde1000e43bf6633140fb4f53975308f5..459973c993474dd7cb8002459d4b3311aec1529b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2084,6 +2084,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2078,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 17ad853b6a151d220f880613c46e15e6e6823af7..c20e8ca37fbd8ec2046c1d5e3aee8bde private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2103,6 +2104,7 @@ public class PurpurWorldConfig { +@@ -2097,6 +2098,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/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index 92697db6d..9684a857f 100644 --- a/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -18,10 +18,10 @@ index e5562b407bba35ab93bf8bc3c22ac9d45e8353cb..c688bb73cd062f36524cfc231cb691f2 if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { level.playSound(player, blockPos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 168faa25042b28e0ea9f73c64ff80a631f810d06..b2a974bf0a412cd6e8dba0e7fdbb800507999fb7 100644 +index 459973c993474dd7cb8002459d4b3311aec1529b..4a7ff58a328000cc42c85856130753e64d5581a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -409,6 +409,21 @@ public class PurpurWorldConfig { +@@ -433,6 +433,21 @@ public class PurpurWorldConfig { snowballProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.snowball", snowballProjectileOffset); } diff --git a/patches/server/0173-Configurable-piston-push-limit.patch b/patches/server/0173-Configurable-piston-push-limit.patch index 75dd557ea..9d9609f35 100644 --- a/patches/server/0173-Configurable-piston-push-limit.patch +++ b/patches/server/0173-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2a974bf0a412cd6e8dba0e7fdbb800507999fb7..fcb68842804b83610099f86145fd137f6b97feb1 100644 +index 4a7ff58a328000cc42c85856130753e64d5581a4..4c89f790c22cd82ee343a48b7c4cfd4ec9936b0d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -634,6 +634,11 @@ public class PurpurWorldConfig { +@@ -610,6 +610,11 @@ public class PurpurWorldConfig { magmaBlockDamageWithFrostWalker = getBoolean("blocks.magma-block.damage-with-frost-walker", magmaBlockDamageWithFrostWalker); } diff --git a/patches/server/0175-Configurable-mob-blindness.patch b/patches/server/0175-Configurable-mob-blindness.patch index 69dd1be38..1207ebecb 100644 --- a/patches/server/0175-Configurable-mob-blindness.patch +++ b/patches/server/0175-Configurable-mob-blindness.patch @@ -28,10 +28,10 @@ index a46e6d55731c7877fd50329b1ad37951e1f02784..9da2d74f38110abfeaa42ac15b4523df return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fcb68842804b83610099f86145fd137f6b97feb1..1106e792ad01493c26032ff58270662a9f9365ff 100644 +index 4c89f790c22cd82ee343a48b7c4cfd4ec9936b0d..90fe0b1952a3e28933a6f9314875e38330802f23 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -470,6 +470,7 @@ public class PurpurWorldConfig { +@@ -125,6 +125,7 @@ public class PurpurWorldConfig { public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; @@ -39,7 +39,7 @@ index fcb68842804b83610099f86145fd137f6b97feb1..1106e792ad01493c26032ff58270662a public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -490,6 +491,7 @@ public class PurpurWorldConfig { +@@ -145,6 +146,7 @@ public class PurpurWorldConfig { persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); diff --git a/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch index 3eb6e9ab1..e174e5ebb 100644 --- a/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 525b94c61693cfd7d68305cbf4eb08a87f3ca66a..35cbd013b1d58bb5fd1480922c2bd430 if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1106e792ad01493c26032ff58270662a9f9365ff..a81c5fdfb3f5a358dc023ebbeecb130c739b4b5c 100644 +index 90fe0b1952a3e28933a6f9314875e38330802f23..8e8235a1ffde3f8702399964ee4e9c85fd24e023 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -885,6 +885,7 @@ public class PurpurWorldConfig { +@@ -879,6 +879,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 1106e792ad01493c26032ff58270662a9f9365ff..a81c5fdfb3f5a358dc023ebbeecb130c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -899,6 +900,7 @@ public class PurpurWorldConfig { +@@ -893,6 +894,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/0178-Iron-golem-poppy-calms-anger.patch b/patches/server/0178-Iron-golem-poppy-calms-anger.patch index 4a22c7f0a..71a315aff 100644 --- a/patches/server/0178-Iron-golem-poppy-calms-anger.patch +++ b/patches/server/0178-Iron-golem-poppy-calms-anger.patch @@ -17,10 +17,10 @@ index 52cc0df083d5a4685fd00f7db0d92b277fb0c994..ff5d6f437b880ab0aa5897089694a620 this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a81c5fdfb3f5a358dc023ebbeecb130c739b4b5c..543774702c68f4f29c6773011e74b41db0c51934 100644 +index 8e8235a1ffde3f8702399964ee4e9c85fd24e023..e4f8710f477336358e437f30e11d3ddf2648d7ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1296,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -28,7 +28,7 @@ index a81c5fdfb3f5a358dc023ebbeecb130c739b4b5c..543774702c68f4f29c6773011e74b41d private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1307,6 +1308,7 @@ public class PurpurWorldConfig { +@@ -1301,6 +1302,7 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0179-Breedable-parrots.patch b/patches/server/0179-Breedable-parrots.patch index 66987ed8e..06777bc18 100644 --- a/patches/server/0179-Breedable-parrots.patch +++ b/patches/server/0179-Breedable-parrots.patch @@ -50,10 +50,10 @@ index de702ce3e2dffc44e380b8470aa540a3226a54cb..bb9717d1b2039469aae26e0eb9a4304b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 543774702c68f4f29c6773011e74b41db0c51934..924c20cb3b0c37320aa66a26c1de27f6dcbb58e9 100644 +index e4f8710f477336358e437f30e11d3ddf2648d7ea..00c4f7d6e6f943e17fcd5fc32b8b10acdec190d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1446,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1440,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 256D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 543774702c68f4f29c6773011e74b41db0c51934..924c20cb3b0c37320aa66a26c1de27f6 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1457,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1451,6 +1452,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0180-Configurable-powered-rail-boost-modifier.patch b/patches/server/0180-Configurable-powered-rail-boost-modifier.patch index 748c87a0d..8a45b6b9d 100644 --- a/patches/server/0180-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0180-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index 6b58b32711b3aba9b7de9e7dee6d02073dad3b7f..0e6f2d1d48910c573ec2237002a02f33 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 924c20cb3b0c37320aa66a26c1de27f6dcbb58e9..b421c8d4978fddfa8ea47f59c8214213704203ba 100644 +index 00c4f7d6e6f943e17fcd5fc32b8b10acdec190d8..f12afb35986afb94f3920f2286c046d9f1c54669 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -238,6 +238,7 @@ public class PurpurWorldConfig { +@@ -264,6 +264,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index 924c20cb3b0c37320aa66a26c1de27f6dcbb58e9..b421c8d4978fddfa8ea47f59c8214213 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -290,6 +291,7 @@ public class PurpurWorldConfig { +@@ -316,6 +317,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/0181-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch index e800b6c3d..ada2bc48f 100644 --- a/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index b1ca8265d2104168b64e560634f319c72103da55..9a8c08e34e70a0bc263186da8b703ac3 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b421c8d4978fddfa8ea47f59c8214213704203ba..3a399b0b5e82ee62fc13224d3bbed203d3d17112 100644 +index f12afb35986afb94f3920f2286c046d9f1c54669..d27ce15aaefdf76ed4ca53ee7a0351ba2d50691f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -337,6 +337,7 @@ public class PurpurWorldConfig { +@@ -363,6 +363,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index b421c8d4978fddfa8ea47f59c8214213704203ba..3a399b0b5e82ee62fc13224d3bbed203 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -358,6 +359,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/0182-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch index 10034c659..a9dbe7801 100644 --- a/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a399b0b5e82ee62fc13224d3bbed203d3d17112..990aa32d9fcec18ce9fb6f1eccbd0c58b69670c7 100644 +index d27ce15aaefdf76ed4ca53ee7a0351ba2d50691f..5ec4fc989a6fa12c0f7e37e7787a62b0341f0eb7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -551,6 +551,11 @@ public class PurpurWorldConfig { +@@ -534,6 +534,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch index 4af755334..5857c3fb5 100644 --- a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch @@ -35,10 +35,10 @@ index 7f1230d915c98b6f30b13a06c2788bc2f7b7e912..9439119a70a411b1a7d9cd6a0090e413 blockEntity.saveToItem(itemStack); if (shulkerBoxBlockEntity.hasCustomName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 990aa32d9fcec18ce9fb6f1eccbd0c58b69670c7..8bf5f5ecaf9585473e9425cd3601737658468c20 100644 +index 5ec4fc989a6fa12c0f7e37e7787a62b0341f0eb7..c6e16b834393d97c4ebe53e2c42360431c4372c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -671,6 +671,11 @@ public class PurpurWorldConfig { +@@ -652,6 +652,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch index c243fc011..1e7b0d705 100644 --- a/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index 375f25807ca0f35784653d8fbe4e5086d7033e99..096308b577c68502fed1f4c10c0dfc2a return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8bf5f5ecaf9585473e9425cd3601737658468c20..c966523dd5ca0cbd79039ebdd9e748c07ebc26eb 100644 +index c6e16b834393d97c4ebe53e2c42360431c4372c5..287400dc2e30b8e9147708914f67f67f98d2818b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -759,6 +759,8 @@ public class PurpurWorldConfig { +@@ -753,6 +753,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 8bf5f5ecaf9585473e9425cd3601737658468c20..c966523dd5ca0cbd79039ebdd9e748c0 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -771,6 +773,8 @@ public class PurpurWorldConfig { +@@ -765,6 +767,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0188-Config-MobEffect-by-world.patch b/patches/server/0188-Config-MobEffect-by-world.patch index d87d18d2d..ba3c40480 100644 --- a/patches/server/0188-Config-MobEffect-by-world.patch +++ b/patches/server/0188-Config-MobEffect-by-world.patch @@ -40,10 +40,10 @@ index 8bbb9bdcf95989f1737714655f6f6a269d46d7f2..8d569eb2ec1b2bdbd415094ae04ae531 ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c966523dd5ca0cbd79039ebdd9e748c07ebc26eb..941f0e52a1a8b14fcd8c4b6ce9febc6dddfbe9d9 100644 +index 287400dc2e30b8e9147708914f67f67f98d2818b..742a20495c3c57c619731621e44d745d976122e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -294,6 +294,21 @@ public class PurpurWorldConfig { +@@ -320,6 +320,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0189-Beacon-Activation-Range-Configurable.patch b/patches/server/0189-Beacon-Activation-Range-Configurable.patch index 00a36acb2..ed087e966 100644 --- a/patches/server/0189-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0189-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 423560afba1bc03c0bb2b7d5d028451f34e59ec5..080694a06c9fdf57317dd281c4ddbd6c } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 941f0e52a1a8b14fcd8c4b6ce9febc6dddfbe9d9..3f4737b6623a95eb64fd983c6dc041a167c88165 100644 +index 742a20495c3c57c619731621e44d745d976122e5..ec207d84766498daed0d2fc2ac459739c8814ec5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -523,6 +523,17 @@ public class PurpurWorldConfig { +@@ -506,6 +506,17 @@ public class PurpurWorldConfig { anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); } diff --git a/patches/server/0190-Add-toggle-for-sand-duping-fix.patch b/patches/server/0190-Add-toggle-for-sand-duping-fix.patch index 50dfa79fe..132d80b6a 100644 --- a/patches/server/0190-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0190-Add-toggle-for-sand-duping-fix.patch @@ -27,10 +27,10 @@ index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..92a9869dbabcaa704a0da8bc86f75786 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f4737b6623a95eb64fd983c6dc041a167c88165..01806454e3943c7c26928398019884da97aea725 100644 +index ec207d84766498daed0d2fc2ac459739c8814ec5..db3f9df443feebab81c3d1c7a7965b716be5b7d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -697,6 +697,11 @@ public class PurpurWorldConfig { +@@ -678,6 +678,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch index 6831790d2..173954462 100644 --- a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch @@ -45,10 +45,10 @@ index bd4f980f68330fc46a02a6f4bb4403fac3a91919..8601ea0575323ea7cf07c4909a495bf5 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 01806454e3943c7c26928398019884da97aea725..475a1ec49249c078041c7a468b2a60b3e02c0728 100644 +index db3f9df443feebab81c3d1c7a7965b716be5b7d2..1cb7d40cf8af0bb8b94455b80aec4021b805e2df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -637,6 +637,11 @@ public class PurpurWorldConfig { +@@ -620,6 +620,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch index 646327d8d..33d3ad657 100644 --- a/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch +++ b/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch @@ -55,10 +55,10 @@ index 2934b6de1f1fb914a532ee20184df99d1acd8e65..65421cfff05c0493f5fef1bdff03172c public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 475a1ec49249c078041c7a468b2a60b3e02c0728..3b40a0dee6eea7fcd826c7f3648e58d00684239f 100644 +index 1cb7d40cf8af0bb8b94455b80aec4021b805e2df..7b0ae0673f7d210d3d41af8e8333613ae417d7a9 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 { +@@ -379,6 +379,7 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -66,7 +66,7 @@ index 475a1ec49249c078041c7a468b2a60b3e02c0728..3b40a0dee6eea7fcd826c7f3648e58d0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -375,6 +376,7 @@ public class PurpurWorldConfig { +@@ -401,6 +402,7 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0197-Shulker-spawn-from-bullet-options.patch b/patches/server/0197-Shulker-spawn-from-bullet-options.patch index 0da0477b9..1ef8bd312 100644 --- a/patches/server/0197-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0197-Shulker-spawn-from-bullet-options.patch @@ -61,10 +61,10 @@ index f812a75985d26785639491c9a980387a3f261f2d..b11fb39b69f5225ca7da72ca1a2200c7 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b40a0dee6eea7fcd826c7f3648e58d00684239f..2f6c47c5b7b387badd1d72085cd6536cb5f0bd93 100644 +index 7b0ae0673f7d210d3d41af8e8333613ae417d7a9..7cd1ce5c8e65d853662201dc791a327f321d3b71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1788,6 +1788,11 @@ public class PurpurWorldConfig { +@@ -1782,6 +1782,11 @@ public class PurpurWorldConfig { public boolean shulkerRidableInWater = false; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -76,7 +76,7 @@ index 3b40a0dee6eea7fcd826c7f3648e58d00684239f..2f6c47c5b7b387badd1d72085cd6536c private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1798,6 +1803,11 @@ public class PurpurWorldConfig { +@@ -1792,6 +1797,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch index c90265ef9..caf74238b 100644 --- a/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 85329295afacad3edb6865846166aa56ebae0ed2..513343d225a71e242b0f237eefcd2514 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT, CreativeModeTab.TAB_DECORATIONS); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f6c47c5b7b387badd1d72085cd6536cb5f0bd93..b31a6a917f021dddaf6a028d14c7a99031c2bfe1 100644 +index 7cd1ce5c8e65d853662201dc791a327f321d3b71..a734a9c1471bb7e5e2eb401b71786085be0f2184 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -185,6 +185,7 @@ public class PurpurWorldConfig { +@@ -211,6 +211,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 2f6c47c5b7b387badd1d72085cd6536cb5f0bd93..b31a6a917f021dddaf6a028d14c7a990 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -228,6 +229,7 @@ public class PurpurWorldConfig { +@@ -254,6 +255,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/0199-Option-to-make-drowned-break-doors.patch b/patches/server/0199-Option-to-make-drowned-break-doors.patch index cbb8c4670..90fff48c2 100644 --- a/patches/server/0199-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0199-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 4d2bb12b8168fceae71622a9f8bd5102d0024208..a592fb29097232d5d9c6e6d946fb326f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b31a6a917f021dddaf6a028d14c7a99031c2bfe1..844ac09a6e7b4fde01b01f6fb2fb708152cd2a6f 100644 +index a734a9c1471bb7e5e2eb401b71786085be0f2184..dbd7bf59dc9873e2316d978558399833d3dbd8c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1019,6 +1019,7 @@ public class PurpurWorldConfig { +@@ -1013,6 +1013,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index b31a6a917f021dddaf6a028d14c7a99031c2bfe1..844ac09a6e7b4fde01b01f6fb2fb7081 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1033,6 +1034,7 @@ public class PurpurWorldConfig { +@@ -1027,6 +1028,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/0200-Configurable-hunger-starvation-damage.patch b/patches/server/0200-Configurable-hunger-starvation-damage.patch index d4a651425..6eb83c1b8 100644 --- a/patches/server/0200-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0200-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 65421cfff05c0493f5fef1bdff03172c9e33f33e..63584faeec4e5013be7a377e3203ec16 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index afc80bab4e9ae61da09afeac9c96531ae57ee218..b90cd1fcb0ec48c649df09ac729443d098286e4f 100644 +index dbd7bf59dc9873e2316d978558399833d3dbd8c1..a6f71c2b27b23243d9e3bdc44e31387ea8b1445b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2371,4 +2371,9 @@ public class PurpurWorldConfig { +@@ -2365,4 +2365,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/0202-Armor-click-equip-options.patch b/patches/server/0202-Armor-click-equip-options.patch index a642aeee9..4641ed134 100644 --- a/patches/server/0202-Armor-click-equip-options.patch +++ b/patches/server/0202-Armor-click-equip-options.patch @@ -58,10 +58,10 @@ index 42f79d418ec4e2dbeac9a217d9dc144cda2ef714..250c0e31825f772d3fee7a523f150cb2 return InteractionResultHolder.fail(itemStack); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 438f0bd4d38980719b64f74c0020e4a309891513..62dd8adf118a88aeffb6e2f442ac4b0bf2b7e7c4 100644 +index a6f71c2b27b23243d9e3bdc44e31387ea8b1445b..a63190c9e534ebbbb6745f4d6d04903bdfbad10d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -356,6 +356,8 @@ public class PurpurWorldConfig { +@@ -382,6 +382,8 @@ public class PurpurWorldConfig { public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; public boolean playerBurpWhenFull = false; @@ -70,7 +70,7 @@ index 438f0bd4d38980719b64f74c0020e4a309891513..62dd8adf118a88aeffb6e2f442ac4b0b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -379,6 +381,8 @@ public class PurpurWorldConfig { +@@ -405,6 +407,8 @@ public class PurpurWorldConfig { playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0205-Tool-actionable-options.patch b/patches/server/0205-Tool-actionable-options.patch index acaabf7a1..65ce54d58 100644 --- a/patches/server/0205-Tool-actionable-options.patch +++ b/patches/server/0205-Tool-actionable-options.patch @@ -109,10 +109,10 @@ index a5c2d6f0c0850a99224a1a8d622fe6b341cee88b..d8777ab86465e25236e7abbafd7ff668 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 62dd8adf118a88aeffb6e2f442ac4b0bf2b7e7c4..3bd7e21f52f505df25f82c00f5dc8ee22d70a9c0 100644 +index a63190c9e534ebbbb6745f4d6d04903bdfbad10d..49538fcb317f29a34894c636ee85f9bc609c88cf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -483,6 +483,153 @@ public class PurpurWorldConfig { +@@ -509,6 +509,153 @@ public class PurpurWorldConfig { }); } @@ -263,9 +263,9 @@ index 62dd8adf118a88aeffb6e2f442ac4b0bf2b7e7c4..3bd7e21f52f505df25f82c00f5dc8ee2 + }); + } + - public boolean useBetterMending = false; - public boolean alwaysTameInCreative = false; - public boolean boatEjectPlayersOnLand = false; + public boolean anvilAllowColors = false; + private void anvilSettings() { + anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); diff --git a/src/main/java/org/purpurmc/purpur/tool/Actionable.java b/src/main/java/org/purpurmc/purpur/tool/Actionable.java new file mode 100644 index 0000000000000000000000000000000000000000..e18c37f06730da9d3055d5215e813b1477c1e70e diff --git a/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch index 470873005..b43f47cc8 100644 --- a/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -19,10 +19,10 @@ index 8175bb6331727440da2232998bdad068a1c47ae8..be47543240bd573cd2cc08f84b7eab1c CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bd7e21f52f505df25f82c00f5dc8ee22d70a9c0..25e3e389118f0e08c2a657896efb35588889b03e 100644 +index 49538fcb317f29a34894c636ee85f9bc609c88cf..c5995a7a0796fb4fe4e7d5d0471b8b280710bec6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -186,6 +186,7 @@ public class PurpurWorldConfig { +@@ -212,6 +212,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -30,7 +30,7 @@ index 3bd7e21f52f505df25f82c00f5dc8ee22d70a9c0..25e3e389118f0e08c2a657896efb3558 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -230,6 +231,7 @@ public class PurpurWorldConfig { +@@ -256,6 +257,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/0210-Silk-touchable-budding-amethyst.patch b/patches/server/0210-Silk-touchable-budding-amethyst.patch index 0cbfd0306..7cd174c83 100644 --- a/patches/server/0210-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0210-Silk-touchable-budding-amethyst.patch @@ -24,10 +24,10 @@ index 02fc3ede12eadbf72e26e31b1c475c7f5b2ad73a..2288e727929ffb3a3bca138fb0289408 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25e3e389118f0e08c2a657896efb35588889b03e..6347d9928b9bf3da3eb6bab4a548e25b03873705 100644 +index c5995a7a0796fb4fe4e7d5d0471b8b280710bec6..edd5485003a8cb53b5a65dedc5a87bbf511e3fc5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -707,6 +707,11 @@ public class PurpurWorldConfig { +@@ -690,6 +690,11 @@ public class PurpurWorldConfig { } } @@ -39,7 +39,7 @@ index 25e3e389118f0e08c2a657896efb35588889b03e..6347d9928b9bf3da3eb6bab4a548e25b public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2530,3 +2535,4 @@ public class PurpurWorldConfig { +@@ -2524,3 +2529,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0211-Big-dripleaf-tilt-delay.patch b/patches/server/0211-Big-dripleaf-tilt-delay.patch index 3ddcacf68..8d71a3738 100644 --- a/patches/server/0211-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0211-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 3f434ac77611a81889b15c118a0fca57cc10a6bb..36d65d85d3cc030551fc0957c1ebbff6 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 6347d9928b9bf3da3eb6bab4a548e25b03873705..5f53e643f531c566eb05b76cc3a891c2b6bcced5 100644 +index edd5485003a8cb53b5a65dedc5a87bbf511e3fc5..ba56f6d9ab1029ee6261968b732ee5cddf45f242 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -707,6 +707,22 @@ public class PurpurWorldConfig { +@@ -690,6 +690,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0212-Player-ridable-in-water-option.patch b/patches/server/0212-Player-ridable-in-water-option.patch index 5fcac6c37..0edbde6dc 100644 --- a/patches/server/0212-Player-ridable-in-water-option.patch +++ b/patches/server/0212-Player-ridable-in-water-option.patch @@ -21,10 +21,10 @@ index f254cd917eb9198e902b68f78127f9fc63fde7c7..d0e66f4e5afec947bf6331a7883dc840 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 5f53e643f531c566eb05b76cc3a891c2b6bcced5..375eb761e8fb27de5e45d146fea0013c8fd7cd4e 100644 +index ba56f6d9ab1029ee6261968b732ee5cddf45f242..6370b3638c518b6dd9b1e6690d31da580f52d3d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -360,6 +360,7 @@ public class PurpurWorldConfig { +@@ -386,6 +386,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerArmorSwapping = false; public boolean playerArmorSwappingCreativeMakesCopy = true; @@ -32,7 +32,7 @@ index 5f53e643f531c566eb05b76cc3a891c2b6bcced5..375eb761e8fb27de5e45d146fea0013c private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -385,6 +386,7 @@ public class PurpurWorldConfig { +@@ -411,6 +412,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping); playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); diff --git a/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 96c998ec9..a28f44c9e 100644 --- a/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -18,10 +18,10 @@ index bba5ce10a4dc06272936ca26d1ac0e5a98c2da1f..8923274fc04282cf97398b997603f699 boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 375eb761e8fb27de5e45d146fea0013c8fd7cd4e..32a6fe5fcbc25fb62e6819dbb013efc0f7284cfe 100644 +index 6370b3638c518b6dd9b1e6690d31da580f52d3d9..400276dc5a87998f491df40bf4839e180488e25b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1266,6 +1266,7 @@ public class PurpurWorldConfig { +@@ -1260,6 +1260,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -29,7 +29,7 @@ index 375eb761e8fb27de5e45d146fea0013c8fd7cd4e..32a6fe5fcbc25fb62e6819dbb013efc0 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1287,6 +1288,7 @@ public class PurpurWorldConfig { +@@ -1281,6 +1282,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/0214-Add-compass-command.patch b/patches/server/0214-Add-compass-command.patch index d93663a68..79c65285a 100644 --- a/patches/server/0214-Add-compass-command.patch +++ b/patches/server/0214-Add-compass-command.patch @@ -89,10 +89,10 @@ index d460f1186e1260855ad254b16b2748863946a20c..209d563791695bfca5becdcdd0e088d8 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 32a6fe5fcbc25fb62e6819dbb013efc0f7284cfe..b511b77c8b66cdb612934c220c32ac0b1a12cee5 100644 +index 400276dc5a87998f491df40bf4839e180488e25b..81470f7e3b5313c0f92336c904a51f321491e94c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -187,6 +187,7 @@ public class PurpurWorldConfig { +@@ -213,6 +213,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 32a6fe5fcbc25fb62e6819dbb013efc0f7284cfe..b511b77c8b66cdb612934c220c32ac0b private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -232,6 +233,7 @@ public class PurpurWorldConfig { +@@ -258,6 +259,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/0215-Config-to-prevent-horses-from-standing-with-riders.patch b/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch index 0def7c831..a46cd39b7 100644 --- a/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch +++ b/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch @@ -20,10 +20,10 @@ index 0be0c81f2b0a58eba75eb8559f78d8a58014d0ae..f7088aaf65ee5725e928845a63485211 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b511b77c8b66cdb612934c220c32ac0b1a12cee5..dba79d94d13c128e5ed4a193cc94df71b901f021 100644 +index 81470f7e3b5313c0f92336c904a51f321491e94c..42067e44629295b9cc243239bfc24b23f2d3095f 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 { +@@ -1458,6 +1458,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -31,7 +31,7 @@ index b511b77c8b66cdb612934c220c32ac0b1a12cee5..dba79d94d13c128e5ed4a193cc94df71 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1481,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1475,6 +1476,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); diff --git a/patches/server/0216-Toggle-for-kinetic-damage.patch b/patches/server/0216-Toggle-for-kinetic-damage.patch index 95feb5fc2..49957dc41 100644 --- a/patches/server/0216-Toggle-for-kinetic-damage.patch +++ b/patches/server/0216-Toggle-for-kinetic-damage.patch @@ -22,10 +22,10 @@ index 953c27e0ea5bc5d38f24cf69d40bb80dcb33da91..b6022415925d365931a1110f727d5a22 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dba79d94d13c128e5ed4a193cc94df71b901f021..5108818ac3d4072b8ae09a5f61167c6c893777d2 100644 +index 42067e44629295b9cc243239bfc24b23f2d3095f..f91444027ff6c92a4fe9b3bc63737840b05c780f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -149,12 +149,14 @@ public class PurpurWorldConfig { +@@ -175,12 +175,14 @@ public class PurpurWorldConfig { public boolean elytraIgnoreUnbreaking = false; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0217-Add-Option-for-disable-observer-clocks.patch b/patches/server/0217-Add-Option-for-disable-observer-clocks.patch index 6bb301304..588c4176b 100644 --- a/patches/server/0217-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0217-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index 4a34a08a1d46e4d3020644a51d9e30a36a18791a..be28b5aba28383058548cfb68f982664 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5108818ac3d4072b8ae09a5f61167c6c893777d2..d9f55a1e7f8955abbfa7e387f706fec121181389 100644 +index f91444027ff6c92a4fe9b3bc63737840b05c780f..4ae323361eac2ca0c5c25fce6c77704ccd7f2e74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -332,6 +332,11 @@ public class PurpurWorldConfig { +@@ -358,6 +358,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch index 2c41882b7..7dd5f354d 100644 --- a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 96e5d1210e27b0bca7a354366e5c805709ae4fec..c6ba41c2b4cc96bc97ed2e2220c0f3fa this.gameEvent(GameEvent.MOB_INTERACT, this.eyeBlockPosition()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0da814c002dc9c4419db4e022a9c5dfb1ad94fd7..d875224b179239773697d079091fc2bb97b5cf1e 100644 +index 4ae323361eac2ca0c5c25fce6c77704ccd7f2e74..1c810af51c613e00cdec1699a7dd7473a87c0282 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2519,6 +2519,8 @@ public class PurpurWorldConfig { +@@ -2513,6 +2513,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 0da814c002dc9c4419db4e022a9c5dfb1ad94fd7..d875224b179239773697d079091fc2bb private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2533,6 +2535,8 @@ public class PurpurWorldConfig { +@@ -2527,6 +2529,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/0219-Option-for-sponges-to-work-on-lava.patch b/patches/server/0219-Option-for-sponges-to-work-on-lava.patch index 6599c26dc..3feb8ab92 100644 --- a/patches/server/0219-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0219-Option-for-sponges-to-work-on-lava.patch @@ -18,10 +18,10 @@ index 97b4e3c0d2b1bbde77b135b8595c3bfa190a14cb..02b98cfe47d5d2f3c362a84c6b05e734 ++i; if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e2e3f5dacd8560166b989c334ae12783a809718d..98f73a828a09b1ed268e15ca6c44826fc162b94c 100644 +index 1c810af51c613e00cdec1699a7dd7473a87c0282..1ddda7015ec0e08124a76d08d4e1d71242552026 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -923,9 +923,11 @@ public class PurpurWorldConfig { +@@ -899,9 +899,11 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 64; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch index dd820aaad..7521cbf20 100644 --- a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 46b8886b6b17fa145db42aeb380f22ec0ae99ec0..1cab4c037c99babf4e35480de7ffc02b // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); //int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a87399446cf56eec799c4aca5afc0db32e612d4c..6c5996d72138e5d4e52bd82584ce1035d1b74daf 100644 +index 1ddda7015ec0e08124a76d08d4e1d71242552026..777045154e903322b8d960b2d82f506533cca622 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2374,6 +2374,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2368,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index a87399446cf56eec799c4aca5afc0db32e612d4c..6c5996d72138e5d4e52bd82584ce1035 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2394,6 +2395,7 @@ public class PurpurWorldConfig { +@@ -2388,6 +2389,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/0221-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch index 743f1b037..b47107842 100644 --- a/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index fa36ad3bb63764778aa7201d90e331e64292c7b4..dfa06b3c7323aeb12b1e234ca27c924a return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c9668283c02d7b3c7dd1d90e422730991a24bdc9..776d856acffb80f3f9beaf9e982e10514785e90f 100644 +index 777045154e903322b8d960b2d82f506533cca622..3e926bb772d8ad03821e76e6668ae80fbc6d26b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -739,6 +739,11 @@ public class PurpurWorldConfig { +@@ -722,6 +722,11 @@ public class PurpurWorldConfig { buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch); } diff --git a/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch index 62493cb50..539761f6a 100644 --- a/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch @@ -26,10 +26,10 @@ index 111da6398bb561e58571e47743088ce80416234d..0a2c776b9b1da7d0d4481dd527e0068b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 776d856acffb80f3f9beaf9e982e10514785e90f..dc89efce781a7832579cdeae04ca71b094e55283 100644 +index 3e926bb772d8ad03821e76e6668ae80fbc6d26b9..c1d6985ed59c1aff3aca3bb611f81c7b8f451340 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -370,6 +370,7 @@ public class PurpurWorldConfig { +@@ -396,6 +396,7 @@ public class PurpurWorldConfig { public boolean playerArmorSwapping = false; public boolean playerArmorSwappingCreativeMakesCopy = true; public boolean playerRidableInWater = false; @@ -37,7 +37,7 @@ index 776d856acffb80f3f9beaf9e982e10514785e90f..dc89efce781a7832579cdeae04ca71b0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -396,6 +397,7 @@ public class PurpurWorldConfig { +@@ -422,6 +423,7 @@ public class PurpurWorldConfig { playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping); playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0223-Conduit-behavior-configuration.patch b/patches/server/0223-Conduit-behavior-configuration.patch index c26d686a9..c8af7dfb7 100644 --- a/patches/server/0223-Conduit-behavior-configuration.patch +++ b/patches/server/0223-Conduit-behavior-configuration.patch @@ -44,10 +44,10 @@ index 96b6e914441ee1faa059aa5ddcf77ffb74e76ae9..31af7d8111e73169d3e02aa52799a018 } CraftEventFactory.blockDamage = null; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed96c5d8f5878b5cfeefa5561620b151fec16dcc..53e9deb3c55dc20d38018599f4e2ea90c8086b85 100644 +index c1d6985ed59c1aff3aca3bb611f81c7b8f451340..cdcab2ccc40f05ba028a4b3ea41fb5bb8af1b3de 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2580,5 +2580,28 @@ public class PurpurWorldConfig { +@@ -2574,5 +2574,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0224-Cauldron-fill-chances.patch b/patches/server/0224-Cauldron-fill-chances.patch index 8c07a8817..d1da8ac80 100644 --- a/patches/server/0224-Cauldron-fill-chances.patch +++ b/patches/server/0224-Cauldron-fill-chances.patch @@ -18,10 +18,10 @@ index dbae4f3b56d0290c6d28b9beaaa3b459754d43e3..676184c48c3abd8e2fb9a04ae3e165dc @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 53e9deb3c55dc20d38018599f4e2ea90c8086b85..cefa14726dfc69c3d544e92a6373672e09a4c8d3 100644 +index cdcab2ccc40f05ba028a4b3ea41fb5bb8af1b3de..3136ae211ab3e152f4cc8af6166cec73d3ccc5e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2603,5 +2603,12 @@ public class PurpurWorldConfig { +@@ -2597,5 +2597,12 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch index e2af0ed6d..30cf8c143 100644 --- a/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index d7bdf3c2a5b99ff7adb3e960ff356a1fad169de0..3ca846cc78ec2ac8c9f840a9ac7f0b87 if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8353b594f72c9c9df7affc3aaf31483d941c4301..c86e8d3c1e0e57c08f8640229cd7a3317eaacb2c 100644 +index 3136ae211ab3e152f4cc8af6166cec73d3ccc5e5..1c7335404e95888b61e2e7f0d24dc36d6eb0d518 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -665,6 +665,7 @@ public class PurpurWorldConfig { +@@ -131,6 +131,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,11 +29,11 @@ index 8353b594f72c9c9df7affc3aaf31483d941c4301..c86e8d3c1e0e57c08f8640229cd7a331 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -686,6 +687,7 @@ public class PurpurWorldConfig { +@@ -152,6 +153,7 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); + mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); } - public boolean anvilAllowColors = false; + public int daytimeTicks = 12000; diff --git a/patches/server/0226-Shulker-change-color-with-dye.patch b/patches/server/0226-Shulker-change-color-with-dye.patch index 83c18de79..fc6c74fa7 100644 --- a/patches/server/0226-Shulker-change-color-with-dye.patch +++ b/patches/server/0226-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index ec7c5f638573ee331112d91cdfaa8511801c6891..e9f4a1de40ab4d7a82d4f222b4aba0aa @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c86e8d3c1e0e57c08f8640229cd7a3317eaacb2c..4599c6850b3dab16fee69a2cef637c742fe99db2 100644 +index 1c7335404e95888b61e2e7f0d24dc36d6eb0d518..7d857ac11e1626a057935642c0cde5406910ad3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1997,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1991,6 +1991,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index c86e8d3c1e0e57c08f8640229cd7a3317eaacb2c..4599c6850b3dab16fee69a2cef637c74 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2012,6 +2013,7 @@ public class PurpurWorldConfig { +@@ -2006,6 +2007,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/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index f51a7e5de..6cf38bfa4 100644 --- a/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,10 +25,10 @@ index 5a42fde11c219a1572bf31663487ff1fff0d1312..8994844b6519082244fe95c1ba72dc81 // 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 4599c6850b3dab16fee69a2cef637c742fe99db2..717c28ad671d04e8190c9aac8bac655c68872662 100644 +index 7d857ac11e1626a057935642c0cde5406910ad3f..c3b47e1c0f83fe62030e2c108213b785368b8448 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -666,6 +666,8 @@ public class PurpurWorldConfig { +@@ -132,6 +132,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 4599c6850b3dab16fee69a2cef637c742fe99db2..717c28ad671d04e8190c9aac8bac655c private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -688,6 +690,8 @@ public class PurpurWorldConfig { +@@ -154,6 +156,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); @@ -45,4 +45,4 @@ index 4599c6850b3dab16fee69a2cef637c742fe99db2..717c28ad671d04e8190c9aac8bac655c + thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); } - public boolean anvilAllowColors = false; + public int daytimeTicks = 12000; diff --git a/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index f225a954d..1e57e51ff 100644 --- a/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index 71e494b949541284b0642dae4b20a6b3ec459828..625ad12e43cc651c986a3b45ce9a7c5b public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS))); public static final Block BIG_DRIPLEAF = register("big_dripleaf", new BigDripleafBlock(BlockBehaviour.Properties.of(Material.PLANT).strength(0.1F).sound(SoundType.BIG_DRIPLEAF))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 717c28ad671d04e8190c9aac8bac655c68872662..e677f000997f200720961acd3a342401a61e3f67 100644 +index c3b47e1c0f83fe62030e2c108213b785368b8448..45ac40b7cd52500f88eb54a7bc7d786de52af13d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -699,6 +699,11 @@ public class PurpurWorldConfig { +@@ -682,6 +682,11 @@ public class PurpurWorldConfig { anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); } @@ -60,7 +60,7 @@ index 717c28ad671d04e8190c9aac8bac655c68872662..e677f000997f200720961acd3a342401 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -828,6 +833,11 @@ public class PurpurWorldConfig { +@@ -811,6 +816,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch index 47eb4923f..2e51684e5 100644 --- a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index 61d0fcaf3c96a2b241b35b2b21104b9fbf403160..c5c7fd414953fb432549e46918fe7e32 + // 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 2cbef1eca4a7e95b00773415ccaca7741ed860c8..0174e5cdfa34ff63949b72e5452e0ae643dc29b1 100644 +index 6ac5f27c24363814961f0494ca8ca42b4da28eff..6175444c9cbe1d0e00a22f9a0e877bd110c47b72 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1958,6 +1958,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -48,10 +48,10 @@ index 2cbef1eca4a7e95b00773415ccaca7741ed860c8..0174e5cdfa34ff63949b72e5452e0ae6 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 e677f000997f200720961acd3a342401a61e3f67..c63487a2203d2a4dd5553a46114859f98688c060 100644 +index 45ac40b7cd52500f88eb54a7bc7d786de52af13d..b9ebcb2f9fbf442471fdd93f4526186e84612b04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -371,6 +371,7 @@ public class PurpurWorldConfig { +@@ -403,6 +403,7 @@ public class PurpurWorldConfig { public boolean playerArmorSwappingCreativeMakesCopy = true; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index e677f000997f200720961acd3a342401a61e3f67..c63487a2203d2a4dd5553a46114859f9 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -398,6 +399,7 @@ public class PurpurWorldConfig { +@@ -430,6 +431,7 @@ public class PurpurWorldConfig { playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch index 8e18a7f65..66fd15dc5 100644 --- a/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch @@ -47,10 +47,10 @@ index 49e5a753aae7d72102ee700f3d8309f2f488cc12..022441af276cd9facba1ee4013d9d367 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 c63487a2203d2a4dd5553a46114859f98688c060..fab223ec8f38aa32d4ab7903b6ab325de79983bd 100644 +index b9ebcb2f9fbf442471fdd93f4526186e84612b04..e5121042fbd65c742fe04f9ccedf275237645760 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1180,6 +1180,7 @@ public class PurpurWorldConfig { +@@ -1174,6 +1174,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index c63487a2203d2a4dd5553a46114859f98688c060..fab223ec8f38aa32d4ab7903b6ab325d private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -1193,6 +1194,7 @@ public class PurpurWorldConfig { +@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch index 1d01ab543..cfb3e1648 100644 --- a/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch @@ -59,10 +59,10 @@ index 7042b95e92520c5e152af0fa71a553122ec814df..bbd210f8779138b225ce886b3917ca9c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fab223ec8f38aa32d4ab7903b6ab325de79983bd..aaf9c02ee84c9982fabd1b52a688be08ad63c45e 100644 +index e5121042fbd65c742fe04f9ccedf275237645760..fc98b35e0fe719ebb181977b48f29730a922c4c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1133,7 +1133,14 @@ public class PurpurWorldConfig { +@@ -1127,7 +1127,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -77,7 +77,7 @@ index fab223ec8f38aa32d4ab7903b6ab325de79983bd..aaf9c02ee84c9982fabd1b52a688be08 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); if (PurpurConfig.version < 10) { -@@ -1145,6 +1152,8 @@ public class PurpurWorldConfig { +@@ -1139,6 +1146,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/0234-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch index 8c9227bfd..fab8f55f8 100644 --- a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index fae4a7c79baac15a06b737b6081956a55b024c8d..e95210c6deee2c6431ef01d239531744 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 aaf9c02ee84c9982fabd1b52a688be08ad63c45e..2ff8ce72bca33f9dc23e646e59dcfda247931bb6 100644 +index fc98b35e0fe719ebb181977b48f29730a922c4c8..b555f538284b1b66a090e6682f78d38e666af743 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -718,11 +718,13 @@ public class PurpurWorldConfig { +@@ -701,11 +701,13 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; diff --git a/patches/server/0235-Halloween-options-and-optimizations.patch b/patches/server/0235-Halloween-options-and-optimizations.patch index a5bf6919a..bf00059ac 100644 --- a/patches/server/0235-Halloween-options-and-optimizations.patch +++ b/patches/server/0235-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 735ecd9d768b9e579142810d5f03093dafad0fa3..cb5a04aacf5e9f0f024f3a1c3a38dd88 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 2ff8ce72bca33f9dc23e646e59dcfda247931bb6..a63e351570d300287e7d194a664565f0a31e1870 100644 +index b555f538284b1b66a090e6682f78d38e666af743..aed9f33c3526bf3075021bced93d40e4e4c3679f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1484,6 +1484,13 @@ public class PurpurWorldConfig { +@@ -1478,6 +1478,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0238-Campfire-option-for-lit-when-placed.patch b/patches/server/0238-Campfire-option-for-lit-when-placed.patch index 8740561cb..a5abffcf6 100644 --- a/patches/server/0238-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0238-Campfire-option-for-lit-when-placed.patch @@ -18,11 +18,11 @@ index 0b60b545271e62df86a0eb3c1f0f315a014b24cd..44df9e5034887c756c00bdcfb3ea04d4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a63e351570d300287e7d194a664565f0a31e1870..308812b497b37ff63a8ad432b613dadbb6174d2c 100644 +index aed9f33c3526bf3075021bced93d40e4e4c3679f..16f0b3c9167ad6491a1b4a1fd19874e8549a05a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -962,6 +962,11 @@ public class PurpurWorldConfig { - stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); +@@ -744,6 +744,11 @@ public class PurpurWorldConfig { + cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } + public boolean campFireLitWhenPlaced = true; @@ -30,6 +30,6 @@ index a63e351570d300287e7d194a664565f0a31e1870..308812b497b37ff63a8ad432b613dadb + campFireLitWhenPlaced = getBoolean("blocks.campfire.lit-when-placed", campFireLitWhenPlaced); + } + - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; + public boolean chestOpenWithBlockOnTop = false; + private void chestSettings() { + chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); diff --git a/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch index f28029d22..fdb5beec3 100644 --- a/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index d5d84893c77b4e60a19032d765d76bfd24cbbb2b..ef265cec066ef3b84c2b3a4929af5183 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 308812b497b37ff63a8ad432b613dadbb6174d2c..9fefff78b7a19d0c4e54d66bdc11572225d6964e 100644 +index 16f0b3c9167ad6491a1b4a1fd19874e8549a05a1..af3c706d1450437010f69a1202bf684c5024c32d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -190,6 +190,9 @@ public class PurpurWorldConfig { +@@ -222,6 +222,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 308812b497b37ff63a8ad432b613dadbb6174d2c..9fefff78b7a19d0c4e54d66bdc115722 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -236,6 +239,9 @@ public class PurpurWorldConfig { +@@ -268,6 +271,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/0240-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch index 253f2e299..eb01cfa7b 100644 --- a/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index c6ba41c2b4cc96bc97ed2e2220c0f3fa4f31dbe3..22a5d2f0de4bdd4432d1beff840f448a itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70ee58e7e4c388a38607e7810b950a14dee193c3..460bbbc01b058d173e189e1ad944d2f458a9e069 100644 +index af3c706d1450437010f69a1202bf684c5024c32d..2f8b50f9957f038425b760f4097492d0aa925bf9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2583,6 +2583,7 @@ public class PurpurWorldConfig { +@@ -2577,6 +2577,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 70ee58e7e4c388a38607e7810b950a14dee193c3..460bbbc01b058d173e189e1ad944d2f4 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2599,6 +2600,7 @@ public class PurpurWorldConfig { +@@ -2593,6 +2594,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/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch index 50c98b567..6693a5455 100644 --- a/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -200,10 +200,10 @@ index 5601d0c2fe635a2a4f073c333531e1a8adf1833c..9e7d2fbdfa89736807d2025a5814ddd8 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81c7ee5b026a47161fa391374be876422dd6e0d6..7eae9d42b795b33c68525854b699f19df1f54739 100644 +index 2f8b50f9957f038425b760f4097492d0aa925bf9..0d28c5d40c26d3fb5f5c3510bb9144d833aa8c52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -665,6 +665,7 @@ public class PurpurWorldConfig { +@@ -123,6 +123,7 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; @@ -211,7 +211,7 @@ index 81c7ee5b026a47161fa391374be876422dd6e0d6..7eae9d42b795b33c68525854b699f19d public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -688,6 +689,7 @@ public class PurpurWorldConfig { +@@ -146,6 +147,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0242-Signs-allow-color-codes.patch b/patches/server/0242-Signs-allow-color-codes.patch index 937a6778e..6b89c189c 100644 --- a/patches/server/0242-Signs-allow-color-codes.patch +++ b/patches/server/0242-Signs-allow-color-codes.patch @@ -17,7 +17,7 @@ index e2e83d8b39ddb154c0e69b63d5b996644926ac43..a9885f92e0a3494b27376a7a01edbd0e this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0174e5cdfa34ff63949b72e5452e0ae643dc29b1..f9f817198f4569c9acd39cec12729469364f9097 100644 +index 6175444c9cbe1d0e00a22f9a0e877bd110c47b72..1b77d003513bb03616bb584997a2b8a3a04c3761 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3156,11 +3156,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -70,10 +70,10 @@ index 6371176fba41218a209ea59b4cafe5b2d4a685fd..7666bca74f4f68bb4e902ec2eb7c4895 public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7eae9d42b795b33c68525854b699f19df1f54739..1e91cdc71c02261c68bcbabd592dc481a8d935f3 100644 +index 0d28c5d40c26d3fb5f5c3510bb9144d833aa8c52..942ce665135c9d7d4dc55580401f31d03cc2c17c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -937,8 +937,10 @@ public class PurpurWorldConfig { +@@ -923,8 +923,10 @@ public class PurpurWorldConfig { } public boolean signRightClickEdit = false; diff --git a/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch index bd57e70d0..e810a7b57 100644 --- a/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch +++ b/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch @@ -131,10 +131,10 @@ index 35b2bad76c45b5a94ba7f2e9c7a8cfeb8c3f498b..913818656f058990270ed1e4303da1c4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e91cdc71c02261c68bcbabd592dc481a8d935f3..31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0 100644 +index 942ce665135c9d7d4dc55580401f31d03cc2c17c..e34d17ac9a9292871db310704080540e03abd44b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -779,6 +779,41 @@ public class PurpurWorldConfig { +@@ -767,6 +767,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } @@ -143,6 +143,13 @@ index 1e91cdc71c02261c68bcbabd592dc481a8d935f3..31896c8f2e76bfd3d29f78a4e7569b04 + caveVinesMaxGrowthAge = getInt("blocks.cave_vines.max-growth-age", caveVinesMaxGrowthAge); + } + + public boolean dispenserApplyCursedArmor = true; + public boolean dispenserPlaceAnvils = false; + private void dispenserSettings() { +@@ -863,6 +868,16 @@ public class PurpurWorldConfig { + mobsSpawnOnBlueIce = getBoolean("blocks.blue_ice.allow-mob-spawns", mobsSpawnOnBlueIce); + } + + public int kelpMaxGrowthAge = 25; + private void kelpSettings() { + kelpMaxGrowthAge = getInt("blocks.kelp.max-growth-age", kelpMaxGrowthAge); @@ -153,6 +160,13 @@ index 1e91cdc71c02261c68bcbabd592dc481a8d935f3..31896c8f2e76bfd3d29f78a4e7569b04 + } + } + + public boolean lavaInfinite = false; + public int lavaInfiniteRequiredSources = 2; + public int lavaSpeedNether = 10; +@@ -964,6 +979,16 @@ public class PurpurWorldConfig { + turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); + } + + public int twistingVinesMaxGrowthAge = 25; + private void twistingVinesSettings() { + twistingVinesMaxGrowthAge = getInt("blocks.twisting_vines.max-growth-age", twistingVinesMaxGrowthAge); @@ -163,6 +177,13 @@ index 1e91cdc71c02261c68bcbabd592dc481a8d935f3..31896c8f2e76bfd3d29f78a4e7569b04 + } + } + + public boolean waterInfinite = true; + public int waterInfiniteRequiredSources = 2; + private void waterSources() { +@@ -971,6 +996,16 @@ public class PurpurWorldConfig { + waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); + } + + public int weepingVinesMaxGrowthAge = 25; + private void weepingVinesSettings() { + weepingVinesMaxGrowthAge = getInt("blocks.weeping_vines.max-growth-age", weepingVinesMaxGrowthAge); @@ -173,6 +194,6 @@ index 1e91cdc71c02261c68bcbabd592dc481a8d935f3..31896c8f2e76bfd3d29f78a4e7569b04 + } + } + - public boolean dispenserApplyCursedArmor = true; - public boolean dispenserPlaceAnvils = false; - private void dispenserSettings() { + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0244-Mobs-always-drop-experience.patch b/patches/server/0244-Mobs-always-drop-experience.patch index 01fdfb5cd..591165ac4 100644 --- a/patches/server/0244-Mobs-always-drop-experience.patch +++ b/patches/server/0244-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 1a8df13b06b1ac5e5a7d63033b4a53261c779eda..8be025b735cea47ab3ce6c6b2aef052e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727ae6dbdb3 100644 +index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e539ff862 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1025,11 +1025,13 @@ public class PurpurWorldConfig { +@@ -1019,11 +1019,13 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1174,7 +1174,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean batRidable = false; -@@ -1044,6 +1046,7 @@ public class PurpurWorldConfig { +@@ -1038,6 +1040,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1182,7 +1182,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1055,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1049,6 +1052,7 @@ public class PurpurWorldConfig { } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1190,7 +1190,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean beeRidable = false; -@@ -1065,6 +1069,7 @@ public class PurpurWorldConfig { +@@ -1059,6 +1063,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1198,7 +1198,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1079,6 +1084,7 @@ public class PurpurWorldConfig { +@@ -1073,6 +1078,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); @@ -1206,7 +1206,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean blazeRidable = false; -@@ -1086,6 +1092,7 @@ public class PurpurWorldConfig { +@@ -1080,6 +1086,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 256D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1214,7 +1214,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1097,6 +1104,7 @@ public class PurpurWorldConfig { +@@ -1091,6 +1098,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1222,7 +1222,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean catRidable = false; -@@ -1108,6 +1116,7 @@ public class PurpurWorldConfig { +@@ -1102,6 +1110,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public boolean catTakeDamageFromWater = false; @@ -1230,7 +1230,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1127,12 +1136,14 @@ public class PurpurWorldConfig { +@@ -1121,12 +1130,14 @@ public class PurpurWorldConfig { catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1245,7 +1245,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1143,6 +1154,7 @@ public class PurpurWorldConfig { +@@ -1137,6 +1148,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1253,7 +1253,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean chickenRidable = false; -@@ -1151,6 +1163,7 @@ public class PurpurWorldConfig { +@@ -1145,6 +1157,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1261,7 +1261,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1163,11 +1176,13 @@ public class PurpurWorldConfig { +@@ -1157,11 +1170,13 @@ 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); @@ -1275,7 +1275,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); if (PurpurConfig.version < 10) { -@@ -1177,6 +1192,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1186,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1283,7 +1283,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean cowRidable = false; -@@ -1187,6 +1203,7 @@ public class PurpurWorldConfig { +@@ -1181,6 +1197,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1291,7 +1291,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1206,6 +1223,7 @@ public class PurpurWorldConfig { +@@ -1200,6 +1217,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); @@ -1299,7 +1299,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean creeperRidable = false; -@@ -1217,6 +1235,7 @@ public class PurpurWorldConfig { +@@ -1211,6 +1229,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1307,7 +1307,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1232,6 +1251,7 @@ public class PurpurWorldConfig { +@@ -1226,6 +1245,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); @@ -1315,7 +1315,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean dolphinRidable = false; -@@ -1242,6 +1262,7 @@ public class PurpurWorldConfig { +@@ -1236,6 +1256,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1323,7 +1323,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -1256,6 +1277,7 @@ public class PurpurWorldConfig { +@@ -1250,6 +1271,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); @@ -1331,7 +1331,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean donkeyRidableInWater = false; -@@ -1267,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1261,6 +1283,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1339,7 +1339,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1284,6 +1307,7 @@ public class PurpurWorldConfig { +@@ -1278,6 +1301,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); @@ -1347,7 +1347,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean drownedRidable = false; -@@ -1295,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1289,6 +1313,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1355,7 +1355,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1310,11 +1335,13 @@ public class PurpurWorldConfig { +@@ -1304,11 +1329,13 @@ 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); @@ -1369,7 +1369,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); if (PurpurConfig.version < 10) { -@@ -1324,6 +1351,7 @@ public class PurpurWorldConfig { +@@ -1318,6 +1345,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1377,7 +1377,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean enderDragonRidable = false; -@@ -1366,6 +1394,7 @@ public class PurpurWorldConfig { +@@ -1360,6 +1388,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1385,7 +1385,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1388,12 +1417,14 @@ public class PurpurWorldConfig { +@@ -1382,12 +1411,14 @@ 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 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1404,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1429,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1408,7 +1408,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean evokerRidable = false; -@@ -1411,6 +1443,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1437,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1416,7 +1416,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1422,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1416,6 +1449,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1424,7 +1424,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean foxRidable = false; -@@ -1431,6 +1465,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1459,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1432,7 +1432,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1444,6 +1479,7 @@ public class PurpurWorldConfig { +@@ -1438,6 +1473,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); @@ -1440,7 +1440,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean ghastRidable = false; -@@ -1451,6 +1487,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1481,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 256D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1448,7 +1448,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1462,6 +1499,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1493,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1456,7 +1456,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean giantRidable = false; -@@ -1474,6 +1512,7 @@ public class PurpurWorldConfig { +@@ -1468,6 +1506,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1464,7 +1464,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1494,17 +1533,20 @@ public class PurpurWorldConfig { +@@ -1488,17 +1527,20 @@ 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); @@ -1485,7 +1485,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean goatRidable = false; -@@ -1512,17 +1554,20 @@ public class PurpurWorldConfig { +@@ -1506,17 +1548,20 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1506,7 +1506,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); if (PurpurConfig.version < 10) { -@@ -1532,6 +1577,7 @@ public class PurpurWorldConfig { +@@ -1526,6 +1571,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1514,7 +1514,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean forceHalloweenSeason = false; -@@ -1546,6 +1592,7 @@ public class PurpurWorldConfig { +@@ -1540,6 +1586,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1522,7 +1522,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1557,6 +1604,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1598,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1530,7 +1530,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean horseRidableInWater = false; -@@ -1569,6 +1617,7 @@ public class PurpurWorldConfig { +@@ -1563,6 +1611,7 @@ public class PurpurWorldConfig { public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; public boolean horseStandWithRider = true; @@ -1538,7 +1538,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1587,6 +1636,7 @@ public class PurpurWorldConfig { +@@ -1581,6 +1630,7 @@ public class PurpurWorldConfig { horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider); @@ -1546,7 +1546,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean huskRidable = false; -@@ -1597,6 +1647,7 @@ public class PurpurWorldConfig { +@@ -1591,6 +1641,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1554,7 +1554,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1611,6 +1662,7 @@ public class PurpurWorldConfig { +@@ -1605,6 +1656,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); @@ -1562,7 +1562,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean illusionerRidable = false; -@@ -1619,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1613,6 +1665,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1570,7 +1570,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1635,6 +1688,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1682,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1578,7 +1578,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean ironGolemRidable = false; -@@ -1643,6 +1697,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1691,7 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; @@ -1586,7 +1586,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1655,6 +1710,7 @@ public class PurpurWorldConfig { +@@ -1649,6 +1704,7 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); @@ -1594,7 +1594,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean llamaRidable = false; -@@ -1668,6 +1724,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1718,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1602,7 +1602,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1687,12 +1744,14 @@ public class PurpurWorldConfig { +@@ -1681,12 +1738,14 @@ 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); @@ -1617,7 +1617,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1703,6 +1762,7 @@ public class PurpurWorldConfig { +@@ -1697,6 +1756,7 @@ public class PurpurWorldConfig { } magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max_health", magmaCubeMaxHealth); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1625,7 +1625,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean mooshroomRidable = false; -@@ -1710,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1704,6 +1764,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1633,7 +1633,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1721,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1715,6 +1776,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1641,7 +1641,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean muleRidableInWater = false; -@@ -1732,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1788,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1649,7 +1649,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1749,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1743,6 +1806,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); @@ -1657,7 +1657,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean ocelotRidable = false; -@@ -1756,6 +1820,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1814,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1665,7 +1665,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1767,6 +1832,7 @@ public class PurpurWorldConfig { +@@ -1761,6 +1826,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1673,7 +1673,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean pandaRidable = false; -@@ -1774,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1768,6 +1834,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1681,7 +1681,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1785,6 +1852,7 @@ public class PurpurWorldConfig { +@@ -1779,6 +1846,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1689,7 +1689,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean parrotRidable = false; -@@ -1793,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1787,6 +1855,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1697,7 +1697,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1805,6 +1874,7 @@ public class PurpurWorldConfig { +@@ -1799,6 +1868,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1705,7 +1705,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean phantomRidable = false; -@@ -1834,6 +1904,7 @@ public class PurpurWorldConfig { +@@ -1828,6 +1898,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomTakeDamageFromWater = false; @@ -1713,7 +1713,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1867,6 +1938,7 @@ public class PurpurWorldConfig { +@@ -1861,6 +1932,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1721,7 +1721,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean pigRidable = false; -@@ -1875,6 +1947,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1941,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1729,7 +1729,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1887,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +1954,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); @@ -1737,7 +1737,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean piglinRidable = false; -@@ -1895,6 +1969,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +1963,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1745,7 +1745,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1907,12 +1982,14 @@ public class PurpurWorldConfig { +@@ -1901,12 +1976,14 @@ 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); @@ -1760,7 +1760,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1923,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1917,6 +1994,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1768,7 +1768,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean pillagerRidable = false; -@@ -1930,6 +2008,7 @@ public class PurpurWorldConfig { +@@ -1924,6 +2002,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1941,6 +2020,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +2014,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean polarBearRidable = false; -@@ -1950,6 +2030,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +2024,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1964,11 +2045,13 @@ public class PurpurWorldConfig { +@@ -1958,11 +2039,13 @@ 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); @@ -1806,7 +1806,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); if (PurpurConfig.version < 10) { -@@ -1978,6 +2061,7 @@ public class PurpurWorldConfig { +@@ -1972,6 +2055,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1814,7 +1814,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean rabbitRidable = false; -@@ -1988,6 +2072,7 @@ public class PurpurWorldConfig { +@@ -1982,6 +2066,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1822,7 +1822,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2002,6 +2087,7 @@ public class PurpurWorldConfig { +@@ -1996,6 +2081,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); @@ -1830,7 +1830,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean ravagerRidable = false; -@@ -2010,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -2004,6 +2090,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1838,7 +1838,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2038,11 +2125,13 @@ public class PurpurWorldConfig { +@@ -2032,11 +2119,13 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1852,7 +1852,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); if (PurpurConfig.version < 10) { -@@ -2052,6 +2141,7 @@ public class PurpurWorldConfig { +@@ -2046,6 +2135,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1860,7 +1860,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean sheepRidable = false; -@@ -2060,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2054,6 +2144,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1868,7 +1868,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2072,6 +2163,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2157,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); @@ -1876,7 +1876,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean shulkerRidable = false; -@@ -2084,6 +2176,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2170,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1884,7 +1884,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2100,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2094,6 +2187,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); @@ -1892,7 +1892,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean silverfishRidable = false; -@@ -2107,6 +2201,7 @@ public class PurpurWorldConfig { +@@ -2101,6 +2195,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1900,7 +1900,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2118,12 +2213,14 @@ public class PurpurWorldConfig { +@@ -2112,12 +2207,14 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1915,7 +1915,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2134,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2128,6 +2225,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1923,7 +1923,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean skeletonHorseRidableInWater = true; -@@ -2145,6 +2243,7 @@ public class PurpurWorldConfig { +@@ -2139,6 +2237,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1931,7 +1931,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2161,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2155,6 +2254,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); @@ -1939,7 +1939,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean slimeRidable = false; -@@ -2168,6 +2268,7 @@ public class PurpurWorldConfig { +@@ -2162,6 +2262,7 @@ public class PurpurWorldConfig { public String slimeMaxHealth = "size * size"; public Map slimeMaxHealthCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1947,7 +1947,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2179,6 +2280,7 @@ public class PurpurWorldConfig { +@@ -2173,6 +2274,7 @@ public class PurpurWorldConfig { slimeMaxHealth = getString("mobs.slime.attributes.max_health", slimeMaxHealth); slimeMaxHealthCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1955,7 +1955,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean snowGolemRidable = false; -@@ -2193,6 +2295,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2289,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1963,7 +1963,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2211,6 +2314,7 @@ public class PurpurWorldConfig { +@@ -2205,6 +2308,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); @@ -1971,7 +1971,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean squidRidable = false; -@@ -2219,6 +2323,7 @@ public class PurpurWorldConfig { +@@ -2213,6 +2317,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1979,7 +1979,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -2231,12 +2336,14 @@ public class PurpurWorldConfig { +@@ -2225,12 +2330,14 @@ 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); @@ -1994,7 +1994,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2247,12 +2354,14 @@ public class PurpurWorldConfig { +@@ -2241,12 +2348,14 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2009,7 +2009,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2263,6 +2372,7 @@ public class PurpurWorldConfig { +@@ -2257,6 +2366,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean striderRidable = false; -@@ -2271,6 +2381,7 @@ public class PurpurWorldConfig { +@@ -2265,6 +2375,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2025,7 +2025,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2283,6 +2394,7 @@ public class PurpurWorldConfig { +@@ -2277,6 +2388,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); @@ -2033,7 +2033,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean traderLlamaRidable = false; -@@ -2295,6 +2407,7 @@ public class PurpurWorldConfig { +@@ -2289,6 +2401,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2041,7 +2041,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2313,11 +2426,13 @@ public class PurpurWorldConfig { +@@ -2307,11 +2420,13 @@ 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); @@ -2055,7 +2055,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); if (PurpurConfig.version < 10) { -@@ -2327,6 +2442,7 @@ public class PurpurWorldConfig { +@@ -2321,6 +2436,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2063,7 +2063,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean turtleRidable = false; -@@ -2334,6 +2450,7 @@ public class PurpurWorldConfig { +@@ -2328,6 +2444,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2071,7 +2071,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2345,6 +2462,7 @@ public class PurpurWorldConfig { +@@ -2339,6 +2456,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2079,7 +2079,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean vexRidable = false; -@@ -2352,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2346,6 +2464,7 @@ public class PurpurWorldConfig { public double vexMaxY = 256D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2087,7 +2087,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2363,6 +2482,7 @@ public class PurpurWorldConfig { +@@ -2357,6 +2476,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2095,7 +2095,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean villagerRidable = false; -@@ -2381,6 +2501,7 @@ public class PurpurWorldConfig { +@@ -2375,6 +2495,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2103,7 +2103,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2403,6 +2524,7 @@ public class PurpurWorldConfig { +@@ -2397,6 +2518,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); @@ -2111,7 +2111,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean vindicatorRidable = false; -@@ -2410,6 +2532,7 @@ public class PurpurWorldConfig { +@@ -2404,6 +2526,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2119,7 +2119,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2421,6 +2544,7 @@ public class PurpurWorldConfig { +@@ -2415,6 +2538,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2127,7 +2127,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean wanderingTraderRidable = false; -@@ -2430,6 +2554,7 @@ public class PurpurWorldConfig { +@@ -2424,6 +2548,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2135,7 +2135,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2443,12 +2568,14 @@ public class PurpurWorldConfig { +@@ -2437,12 +2562,14 @@ 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); @@ -2150,7 +2150,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2459,6 +2586,7 @@ public class PurpurWorldConfig { +@@ -2453,6 +2580,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2158,7 +2158,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean witherRidable = false; -@@ -2472,6 +2600,7 @@ public class PurpurWorldConfig { +@@ -2466,6 +2594,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2166,7 +2166,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2493,12 +2622,14 @@ public class PurpurWorldConfig { +@@ -2487,12 +2616,14 @@ 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); @@ -2181,7 +2181,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2509,6 +2640,7 @@ public class PurpurWorldConfig { +@@ -2503,6 +2634,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2189,7 +2189,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean wolfRidable = false; -@@ -2519,6 +2651,7 @@ public class PurpurWorldConfig { +@@ -2513,6 +2645,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2197,7 +2197,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2537,12 +2670,14 @@ public class PurpurWorldConfig { +@@ -2531,12 +2664,14 @@ 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); @@ -2212,7 +2212,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2553,6 +2688,7 @@ public class PurpurWorldConfig { +@@ -2547,6 +2682,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2220,7 +2220,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean zombieRidable = false; -@@ -2565,6 +2701,7 @@ public class PurpurWorldConfig { +@@ -2559,6 +2695,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2228,7 +2228,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2581,6 +2718,7 @@ public class PurpurWorldConfig { +@@ -2575,6 +2712,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); @@ -2236,7 +2236,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean zombieHorseRidableInWater = false; -@@ -2593,6 +2731,7 @@ public class PurpurWorldConfig { +@@ -2587,6 +2725,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2244,7 +2244,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2610,6 +2749,7 @@ public class PurpurWorldConfig { +@@ -2604,6 +2743,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); @@ -2252,7 +2252,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean zombieVillagerRidable = false; -@@ -2623,6 +2763,7 @@ public class PurpurWorldConfig { +@@ -2617,6 +2757,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2260,7 +2260,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2640,6 +2781,7 @@ public class PurpurWorldConfig { +@@ -2634,6 +2775,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); @@ -2268,7 +2268,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 } public boolean zombifiedPiglinRidable = false; -@@ -2651,6 +2793,7 @@ public class PurpurWorldConfig { +@@ -2645,6 +2787,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2276,7 +2276,7 @@ index 31896c8f2e76bfd3d29f78a4e7569b04e11fb7c0..f4bd1f5bcfcba3d92c1c3d340b437727 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2666,6 +2809,7 @@ public class PurpurWorldConfig { +@@ -2660,6 +2803,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/0247-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch index 6e9267949..a8efc4064 100644 --- a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -39,10 +39,10 @@ index f85daf21ae3d77d2d56c131c6df9aa0715a306ca..6ef3cf19e5374631602e68d15ad431fc } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f4bd1f5bcfcba3d92c1c3d340b437727ae6dbdb3..2457bb0e46ccf80ca6f4b37bcbc609ae78043883 100644 +index 0d1f3db55c4e26eb9fddedb19130019e539ff862..9532ab3e75f67cc3b59d52c3b7b4a59414bc556a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2344,6 +2344,7 @@ public class PurpurWorldConfig { +@@ -2338,6 +2338,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; public boolean spiderAlwaysDropExp = false; @@ -50,7 +50,7 @@ index f4bd1f5bcfcba3d92c1c3d340b437727ae6dbdb3..2457bb0e46ccf80ca6f4b37bcbc609ae private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2355,6 +2356,7 @@ public class PurpurWorldConfig { +@@ -2349,6 +2350,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp); diff --git a/patches/server/0248-Ability-for-hoe-to-replant-crops.patch b/patches/server/0248-Ability-for-hoe-to-replant-crops.patch index aaf191f89..3c3321a6c 100644 --- a/patches/server/0248-Ability-for-hoe-to-replant-crops.patch +++ b/patches/server/0248-Ability-for-hoe-to-replant-crops.patch @@ -40,10 +40,10 @@ index e054edf9e7c4eef231e155516433c6faeb2ca540..cf7bbe5516d9d1ae0115b3e03d54b932 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2457bb0e46ccf80ca6f4b37bcbc609ae78043883..b22d1d0750b1e3972fe38a679b0dc7cdc5eaf28a 100644 +index 9532ab3e75f67cc3b59d52c3b7b4a59414bc556a..9dd621c32bbacd213a04f1b7024c223a5755e807 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -510,6 +510,7 @@ public class PurpurWorldConfig { +@@ -544,6 +544,7 @@ public class PurpurWorldConfig { public Map axeWaxables = new HashMap<>(); public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); @@ -51,11 +51,11 @@ index 2457bb0e46ccf80ca6f4b37bcbc609ae78043883..b22d1d0750b1e3972fe38a679b0dc7cd private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -651,6 +652,7 @@ public class PurpurWorldConfig { +@@ -685,6 +686,7 @@ public class PurpurWorldConfig { }); hoeTillables.put(block, new Tillable(condition, into, drops)); }); + hoeReplantsCrops = getBoolean("tools.hoe.replant-crops", hoeReplantsCrops); } - public boolean useBetterMending = false; + public boolean anvilAllowColors = false; diff --git a/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch index 912fbabbd..dbb67e429 100644 --- a/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index 860e03111b29f9178a1cd361357985308a39d254..3e72abd93bc5b9f97c2bd62702273d63 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b22d1d0750b1e3972fe38a679b0dc7cdc5eaf28a..e35bcaeacc666feeec5c668f3369776db360c7d0 100644 +index 9dd621c32bbacd213a04f1b7024c223a5755e807..41c607fee946e3c3ade50954b2c8866a38ab997d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2153,6 +2153,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2147,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index b22d1d0750b1e3972fe38a679b0dc7cdc5eaf28a..e35bcaeacc666feeec5c668f3369776d private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2166,6 +2167,7 @@ public class PurpurWorldConfig { +@@ -2160,6 +2161,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch index 92a72086a..43635aa28 100644 --- a/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch @@ -32,29 +32,10 @@ index 5b29f3fced5435e172dd69f6f4eb265e760b6454..f22be8ecef77ba73be758dce40acad6e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e35bcaeacc666feeec5c668f3369776db360c7d0..d600414555e076047a2114255538f0a2ab3fbd94 100644 +index 41c607fee946e3c3ade50954b2c8866a38ab997d..c85f8a53f65fd9a142c18401129693888030adb7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3,7 +3,6 @@ package org.purpurmc.purpur; - import net.minecraft.core.Registry; - import net.minecraft.resources.ResourceLocation; - import net.minecraft.server.level.ServerLevel; --import net.minecraft.world.Difficulty; - import net.minecraft.world.item.DyeColor; - import net.minecraft.world.item.Item; - import net.minecraft.world.item.Items; -@@ -22,10 +21,8 @@ import org.bukkit.configuration.ConfigurationSection; - - import java.util.ArrayList; - import java.util.HashMap; --import java.util.HashSet; - import java.util.List; - import java.util.Map; --import java.util.Set; - import java.util.function.Predicate; - import java.util.logging.Level; - import static org.purpurmc.purpur.PurpurConfig.log; -@@ -104,11 +101,13 @@ public class PurpurWorldConfig { +@@ -974,11 +974,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; @@ -67,4 +48,4 @@ index e35bcaeacc666feeec5c668f3369776db360c7d0..d600414555e076047a2114255538f0a2 + turtleEggsRandomTickCrackChance = getInt("blocks.turtle_egg.random-tick-crack-chance", turtleEggsRandomTickCrackChance); } - public float armorstandStepHeight = 0.0F; + public int twistingVinesMaxGrowthAge = 25; diff --git a/patches/server/0251-Mob-head-visibility-percent.patch b/patches/server/0251-Mob-head-visibility-percent.patch index 38264b20e..7db1454c1 100644 --- a/patches/server/0251-Mob-head-visibility-percent.patch +++ b/patches/server/0251-Mob-head-visibility-percent.patch @@ -29,10 +29,10 @@ index b6022415925d365931a1110f727d5a22a04b9cee..49238d8b25f4d8a477bd5bbf02e655fe // 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 d600414555e076047a2114255538f0a2ab3fbd94..7c35a14a02fb160918ef33d2c57666bc1f167a87 100644 +index c85f8a53f65fd9a142c18401129693888030adb7..b0e97fcbbaf445143cf5a02cc3e125a47c2a7840 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1237,6 +1237,7 @@ public class PurpurWorldConfig { +@@ -1234,6 +1234,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -40,7 +40,7 @@ index d600414555e076047a2114255538f0a2ab3fbd94..7c35a14a02fb160918ef33d2c57666bc private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1253,6 +1254,7 @@ public class PurpurWorldConfig { +@@ -1250,6 +1251,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -48,7 +48,7 @@ index d600414555e076047a2114255538f0a2ab3fbd94..7c35a14a02fb160918ef33d2c57666bc } public boolean dolphinRidable = false; -@@ -2224,6 +2226,7 @@ public class PurpurWorldConfig { +@@ -2221,6 +2223,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -56,7 +56,7 @@ index d600414555e076047a2114255538f0a2ab3fbd94..7c35a14a02fb160918ef33d2c57666bc private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2235,6 +2238,7 @@ public class PurpurWorldConfig { +@@ -2232,6 +2235,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -64,7 +64,7 @@ index d600414555e076047a2114255538f0a2ab3fbd94..7c35a14a02fb160918ef33d2c57666bc } public boolean skeletonHorseRidableInWater = true; -@@ -2707,6 +2711,7 @@ public class PurpurWorldConfig { +@@ -2704,6 +2708,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -72,7 +72,7 @@ index d600414555e076047a2114255538f0a2ab3fbd94..7c35a14a02fb160918ef33d2c57666bc private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2724,6 +2729,7 @@ public class PurpurWorldConfig { +@@ -2721,6 +2726,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);