From 146750b2ded20c71cd297cae429e1d3ec6e30db4 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Mon, 13 Jun 2022 10:46:27 -0500 Subject: [PATCH] Drop projectile despawn rates patch in favor of pufferfish's Fixes elBukkit/MagicPlugin#1042 Fixes elBukkit/MagicPlugin#816 --- patches/server/0004-Purpur-config-files.patch | 13 +- patches/server/0008-Ridables.patch | 8 +- ...-Configurable-entity-base-attributes.patch | 16 +- patches/server/0013-AFK-API.patch | 6 +- .../0020-Player-invulnerabilities.patch | 6 +- ...22-Configurable-villager-brain-ticks.patch | 6 +- patches/server/0024-Silk-touch-spawners.patch | 4 +- ...772-Fix-Add-turtle-egg-block-options.patch | 4 +- patches/server/0029-Giants-AI-settings.patch | 6 +- .../0030-Zombie-horse-naturally-spawn.patch | 8 +- ...0031-Charged-creeper-naturally-spawn.patch | 6 +- ...bit-naturally-spawn-toast-and-killer.patch | 6 +- .../server/0034-Tulips-change-fox-type.patch | 6 +- .../server/0035-Breedable-Polar-Bears.patch | 6 +- .../server/0036-Chickens-can-retaliate.patch | 6 +- ...option-to-set-armorstand-step-height.patch | 4 +- .../server/0038-Cat-spawning-options.patch | 6 +- patches/server/0040-Cows-eat-mushrooms.patch | 6 +- .../server/0042-Pigs-give-saddle-back.patch | 6 +- ...43-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...44-Ender-dragon-always-drop-full-exp.patch | 6 +- .../0045-Signs-editable-on-right-click.patch | 4 +- ...moisten-from-water-directly-under-it.patch | 4 +- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...able-loot-drops-on-death-by-cramming.patch | 4 +- ...ption-to-toggle-milk-curing-bad-omen.patch | 4 +- ...low-loyalty-on-tridents-to-work-in-t.patch | 4 +- ...derman-and-creeper-griefing-controls.patch | 10 +- ...0057-Villagers-follow-emerald-blocks.patch | 10 +- .../0058-Allow-leashing-villagers.patch | 10 +- .../0059-Implement-infinite-liquids.patch | 6 +- ...60-Make-lava-flow-speed-configurable.patch | 4 +- ...Add-player-death-exp-control-options.patch | 6 +- ...urable-void-damage-height-and-damage.patch | 4 +- ...ispenser-curse-of-binding-protection.patch | 4 +- ...n-for-boats-to-eject-players-on-land.patch | 4 +- ...g-mends-most-damages-equipment-first.patch | 6 +- .../0068-Implement-elytra-settings.patch | 4 +- .../server/0069-Item-entity-immunities.patch | 4 +- .../0073-Configurable-jockey-options.patch | 22 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- .../0075-Add-phantom-spawning-options.patch | 6 +- ...0076-Implement-bed-explosion-options.patch | 4 +- ...ent-respawn-anchor-explosion-options.patch | 4 +- patches/server/0080-Entity-lifespan.patch | 4 +- ...leport-to-spawn-if-outside-world-bor.patch | 6 +- patches/server/0082-Squid-EAR-immunity.patch | 6 +- .../server/0083-Phantoms-burn-in-light.patch | 6 +- .../0084-Configurable-villager-breeding.patch | 6 +- .../0085-Redstone-deactivates-spawners.patch | 4 +- .../0086-Totems-work-in-inventory.patch | 6 +- ...7-Add-vindicator-johnny-spawn-chance.patch | 6 +- .../0089-Dispensers-place-anvils-option.patch | 4 +- patches/server/0090-Allow-anvil-colors.patch | 4 +- ...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 | 8 +- .../server/0099-Raid-cooldown-setting.patch | 6 +- ...e-config-options-per-projectile-type.patch | 389 +++--------------- ...sable-zombie-aggressiveness-towards-.patch | 6 +- patches/server/0103-Flying-squids-Oh-my.patch | 8 +- .../server/0104-Infinity-bow-settings.patch | 4 +- .../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 | 6 +- ...e-entity-breeding-times-configurable.patch | 90 ++-- ...mes-from-item-forms-of-entities-to-e.patch | 8 +- ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 4 +- ...llowing-Endermen-to-despawn-even-whi.patch | 6 +- ...115-Add-configurable-snowball-damage.patch | 14 +- ...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 | 80 ++-- ...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 | 4 +- .../server/0137-Fix-stuck-in-portals.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 256 ++++++------ ...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 | 8 +- patches/server/0143-One-Punch-Man.patch | 8 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 8 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 8 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 6 +- patches/server/0149-Tick-fluids-config.patch | 6 +- ...150-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0153-Sneak-to-bulk-process-composter.patch | 4 +- .../0154-Config-for-skipping-night.patch | 10 +- ...0155-Add-config-for-villager-trading.patch | 10 +- patches/server/0157-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 | 6 +- ...ption-to-make-doors-require-redstone.patch | 4 +- .../0163-Configurable-sponge-absorption.patch | 4 +- .../0164-Projectile-offset-config.patch | 12 +- ...for-powered-rail-activation-distance.patch | 4 +- .../0166-Piglin-portal-spawn-modifier.patch | 6 +- ...8-Config-for-wither-explosion-radius.patch | 8 +- ...ing-the-blocks-that-turn-into-dirt-p.patch | 6 +- .../0171-Configurable-piston-push-limit.patch | 4 +- .../0173-Configurable-mob-blindness.patch | 6 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0176-Iron-golem-calm-anger-options.patch | 6 +- patches/server/0177-Breedable-parrots.patch | 6 +- ...igurable-powered-rail-boost-modifier.patch | 6 +- ...nge-multiplier-critical-damage-value.patch | 8 +- ...on-to-disable-dragon-egg-teleporting.patch | 4 +- ...83-ShulkerBox-allow-oversized-stacks.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 6 +- .../0186-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 4 +- .../0188-Add-toggle-for-sand-duping-fix.patch | 4 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...ing-food-fills-hunger-bar-completely.patch | 8 +- ...95-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...7-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../0200-Armor-click-equip-options.patch | 8 +- .../server/0203-Tool-actionable-options.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- ...0208-Silk-touchable-budding-amethyst.patch | 6 +- .../server/0209-Big-dripleaf-tilt-delay.patch | 4 +- .../0210-Player-ridable-in-water-option.patch | 8 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0212-Add-compass-command.patch | 8 +- ...ent-horses-from-standing-with-riders.patch | 6 +- .../0214-Toggle-for-kinetic-damage.patch | 4 +- ...d-Option-for-disable-observer-clocks.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...7-Option-for-sponges-to-work-on-lava.patch | 4 +- ...0218-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 8 +- .../0221-Conduit-behavior-configuration.patch | 4 +- .../server/0222-Cauldron-fill-chances.patch | 4 +- ...to-allow-mobs-to-pathfind-over-rails.patch | 6 +- .../0224-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 | 4 +- ...xtinguish-fire-blocks-with-snowballs.patch | 8 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 6 +- .../server/0240-Signs-allow-color-codes.patch | 4 +- ...-twisting-vines-configurable-max-gro.patch | 10 +- .../0242-Mobs-always-drop-experience.patch | 274 ++++++------ ...t-spiders-from-climbing-world-border.patch | 6 +- ...oe-to-replant-crops-and-nether-warts.patch | 6 +- ...aring-jeb-produces-random-color-wool.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0249-Mob-head-visibility-percent.patch | 14 +- ...-Stop-bees-from-dying-after-stinging.patch | 6 +- ...Configurable-farmland-trample-height.patch | 6 +- ...Configurable-player-pickup-exp-delay.patch | 8 +- patches/server/0256-Allow-void-trading.patch | 10 +- .../0258-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0262-Lobotomize-stuck-villagers.patch | 6 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...awner-not-spawning-water-animals-cor.patch | 4 +- ...fig-for-mob-last-hurt-by-player-time.patch | 6 +- .../0267-Anvil-repair-damage-options.patch | 4 +- ...e-turtle-egg-trampling-with-feather-.patch | 4 +- ...event-horses-from-standing-when-hurt.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0274-Stonecutter-damage.patch | 6 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- ...0276-Add-config-for-snow-on-blue-ice.patch | 4 +- 193 files changed, 978 insertions(+), 1244 deletions(-) diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index c34d80f19..ef4947ad2 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -172,7 +172,7 @@ index fbd604602024522bdd73aa1bde6fe2ccec63e442..516d26bcff64c828d3ec1607d3b774b5 .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..b3bfc56859d00f9e27bd1d230dd19b92985b5718 +index 0000000000000000000000000000000000000000..e8bcb30f5236b4327883855275eb05d9f4f436e5 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,170 @@ @@ -250,8 +250,8 @@ index 0000000000000000000000000000000000000000..b3bfc56859d00f9e27bd1d230dd19b92 + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 27); -+ set("config-version", 27); ++ version = getInt("config-version", 28); ++ set("config-version", 28); + + readConfig(PurpurConfig.class, null); + } @@ -348,15 +348,17 @@ index 0000000000000000000000000000000000000000..b3bfc56859d00f9e27bd1d230dd19b92 +} 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..0ce93836629522c2ff2a57226583009302271daf +index 0000000000000000000000000000000000000000..18cceb978c812162622f7285bbe18e647eb08017 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,91 @@ +@@ -0,0 +1,94 @@ +package org.purpurmc.purpur; + ++import gg.pufferfish.pufferfish.PufferfishConfig; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; ++import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; @@ -376,6 +378,7 @@ index 0000000000000000000000000000000000000000..0ce93836629522c2ff2a572265830093 +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; ++import java.util.Locale; +import java.util.Map; +import java.util.function.Predicate; +import java.util.logging.Level; diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 5a9ec1749..c58553926 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index 783b81e5252a689683264a494a30fb668b43a986..d4b05231b6b631f382d7e5fe6c42eba3 this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f8a813817d630993670092f0681a5bd8965cbb19..dade21560eb26011f8d59d277ffdc0b65d6e6c80 100644 +index c018f89decbd2ee158367adb408335ab3ab18e22..3d94e1c0abd49d59847c9aa17c6161b3da3fb649 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -218,6 +218,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -5204,7 +5204,7 @@ index 1d8ec0f85ec42f2dcd9405df83b526ae1c59de6f..d437630610b3561029a88a075ab3ed0a event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b3bfc56859d00f9e27bd1d230dd19b92985b5718..e8150d1bec60f7e32d5475c8402fd7b53df359e7 100644 +index e8bcb30f5236b4327883855275eb05d9f4f436e5..a288e2ec4f087571873568ead9b968b1525d106c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -167,4 +167,9 @@ public class PurpurConfig { @@ -5218,10 +5218,10 @@ index b3bfc56859d00f9e27bd1d230dd19b92985b5718..e8150d1bec60f7e32d5475c8402fd7b5 + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ce93836629522c2ff2a57226583009302271daf..4efbb008bd31a0316d3ceead6be27c6d38dd9f50 100644 +index 18cceb978c812162622f7285bbe18e647eb08017..2521c6f055b1631979cf281dc158c5f25623c259 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -88,4 +88,706 @@ public class PurpurWorldConfig { +@@ -91,4 +91,706 @@ public class PurpurWorldConfig { final Map value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index cba2be9c2..2285970a3 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -1464,10 +1464,10 @@ index 2ae9a5da91ad20f1b566a686dcc8d4f14c62ecc5..8bfa041297db79e8f1452ce7059d1536 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0f710aad0 100644 +index 2521c6f055b1631979cf281dc158c5f25623c259..74029209c431a709341161da6a0ac719188d5fac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -109,94 +109,166 @@ public class PurpurWorldConfig { +@@ -112,94 +112,166 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; @@ -1634,7 +1634,7 @@ index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0 } public boolean dolphinRidable = false; -@@ -204,80 +276,161 @@ public class PurpurWorldConfig { +@@ -207,80 +279,161 @@ public class PurpurWorldConfig { public int dolphinSpitCooldown = 20; public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; @@ -1796,7 +1796,7 @@ index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0 } public boolean frogRidable = false; -@@ -295,147 +448,316 @@ public class PurpurWorldConfig { +@@ -298,147 +451,316 @@ public class PurpurWorldConfig { public boolean ghastRidableInWater = false; public boolean ghastControllable = true; public double ghastMaxY = 320D; @@ -2113,7 +2113,7 @@ index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0 } public boolean phantomRidable = false; -@@ -445,6 +767,10 @@ public class PurpurWorldConfig { +@@ -448,6 +770,10 @@ public class PurpurWorldConfig { public float phantomFlameDamage = 1.0F; public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; @@ -2124,7 +2124,7 @@ index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -453,180 +779,350 @@ public class PurpurWorldConfig { +@@ -456,180 +782,350 @@ 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); @@ -2475,7 +2475,7 @@ index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0 } public boolean tadpoleRidable = false; -@@ -641,64 +1137,125 @@ public class PurpurWorldConfig { +@@ -644,64 +1140,125 @@ public class PurpurWorldConfig { public boolean traderLlamaRidable = false; public boolean traderLlamaRidableInWater = false; public boolean traderLlamaControllable = true; @@ -2601,7 +2601,7 @@ index 4efbb008bd31a0316d3ceead6be27c6d38dd9f50..bf4c17c61dcc230286fe9ce4cb0855f0 } public boolean wardenRidable = false; -@@ -713,81 +1270,165 @@ public class PurpurWorldConfig { +@@ -716,81 +1273,165 @@ public class PurpurWorldConfig { public boolean witchRidable = false; public boolean witchRidableInWater = false; public boolean witchControllable = true; diff --git a/patches/server/0013-AFK-API.patch b/patches/server/0013-AFK-API.patch index 8bef5d8c4..415dba8f6 100644 --- a/patches/server/0013-AFK-API.patch +++ b/patches/server/0013-AFK-API.patch @@ -255,7 +255,7 @@ index 8deb966c33b890560c8f5cc875d8225e29aa42e9..16aa402f7b9ff8c2f1748bc4c82005cc // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1717eb5f8fdaf8432113a297602f2eaa10559583..ef8f2dd75b04534c454205cadf2bb5b0fbc5764b 100644 +index 6ea78ee90223e30d22403bc1eb0b20f994ba81d1..5a1da82889ae4326ceaadab2975402c98659b9e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -169,8 +169,16 @@ public class PurpurConfig { @@ -276,10 +276,10 @@ index 1717eb5f8fdaf8432113a297602f2eaa10559583..ef8f2dd75b04534c454205cadf2bb5b0 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 bf4c17c61dcc230286fe9ce4cb0855f0f710aad0..f4f1ebe68143270a940ac839c3b6df2775b3a0ca 100644 +index 74029209c431a709341161da6a0ac719188d5fac..034205c6e2887aee5d879db46fcf95480e0d7908 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -89,6 +89,24 @@ public class PurpurWorldConfig { +@@ -92,6 +92,24 @@ public class PurpurWorldConfig { return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0020-Player-invulnerabilities.patch b/patches/server/0020-Player-invulnerabilities.patch index 98fed52ab..a4ea1741d 100644 --- a/patches/server/0020-Player-invulnerabilities.patch +++ b/patches/server/0020-Player-invulnerabilities.patch @@ -146,10 +146,10 @@ index 16aa402f7b9ff8c2f1748bc4c82005ccf093ceb4..5cd36fef58afdc60d58acde8809f6507 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f4f1ebe68143270a940ac839c3b6df2775b3a0ca..9dcdc3c57c774d260fb4849e7a90922101c0dd49 100644 +index 034205c6e2887aee5d879db46fcf95480e0d7908..6bb51d0ec5d110c8a6690c1df25a730d50df0f72 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,8 @@ public class PurpurWorldConfig { +@@ -97,6 +97,8 @@ public class PurpurWorldConfig { public boolean idleTimeoutCountAsSleeping = false; public boolean idleTimeoutUpdateTabList = false; public boolean idleTimeoutTargetPlayer = true; @@ -158,7 +158,7 @@ index f4f1ebe68143270a940ac839c3b6df2775b3a0ca..9dcdc3c57c774d260fb4849e7a909221 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -105,6 +107,8 @@ public class PurpurWorldConfig { +@@ -108,6 +110,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/0022-Configurable-villager-brain-ticks.patch b/patches/server/0022-Configurable-villager-brain-ticks.patch index a2b7c6b72..276f4d42a 100644 --- a/patches/server/0022-Configurable-villager-brain-ticks.patch +++ b/patches/server/0022-Configurable-villager-brain-ticks.patch @@ -36,10 +36,10 @@ index ef08ec3eb88ee1ab624e2bd38aaff5e8f97720f2..4cb1cf2b51f1c58e2600996f1d67dcef this.getBrain().tick((ServerLevel) this.level, this); // Paper } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9dcdc3c57c774d260fb4849e7a90922101c0dd49..45f3d6daa4e3a90c55168da092595324af0a5a19 100644 +index 6bb51d0ec5d110c8a6690c1df25a730d50df0f72..707ebaa9568d2875ead797feccd80da1cb9fc6a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1236,6 +1236,8 @@ public class PurpurWorldConfig { +@@ -1239,6 +1239,8 @@ public class PurpurWorldConfig { public boolean villagerRidableInWater = false; public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; @@ -48,7 +48,7 @@ index 9dcdc3c57c774d260fb4849e7a90922101c0dd49..45f3d6daa4e3a90c55168da092595324 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1246,6 +1248,8 @@ public class PurpurWorldConfig { +@@ -1249,6 +1251,8 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); diff --git a/patches/server/0024-Silk-touch-spawners.patch b/patches/server/0024-Silk-touch-spawners.patch index 103499b02..94d1ca62b 100644 --- a/patches/server/0024-Silk-touch-spawners.patch +++ b/patches/server/0024-Silk-touch-spawners.patch @@ -127,10 +127,10 @@ index 39bc91423c830d69eff1996881373296f322f06a..e0d8bd28576f16822a584f3514dbcb8f int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45f3d6daa4e3a90c55168da092595324af0a5a19..10b8183cf8af86676efd5486f09493eac59840d2 100644 +index 707ebaa9568d2875ead797feccd80da1cb9fc6a2..cc194b3560229101fcf2836cbb950082d3d35397 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -111,6 +111,38 @@ public class PurpurWorldConfig { +@@ -114,6 +114,38 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); } diff --git a/patches/server/0025-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0025-MC-168772-Fix-Add-turtle-egg-block-options.patch index 7797e513f..ade8e56ff 100644 --- a/patches/server/0025-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0025-MC-168772-Fix-Add-turtle-egg-block-options.patch @@ -50,10 +50,10 @@ index 7d25fb0fc64a4f559fe206198fde900afa06f258..1a12fee99a8b69fc6c01e1e217575c7c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10b8183cf8af86676efd5486f09493eac59840d2..39991fb579e6b0df221f62d544f4d0ab79d2a769 100644 +index cc194b3560229101fcf2836cbb950082d3d35397..b22e855393e5f3d3099db3bba60ad62c1163ca2b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -143,6 +143,15 @@ public class PurpurWorldConfig { +@@ -146,6 +146,15 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0029-Giants-AI-settings.patch b/patches/server/0029-Giants-AI-settings.patch index 51919d489..c2e8a5d3a 100644 --- a/patches/server/0029-Giants-AI-settings.patch +++ b/patches/server/0029-Giants-AI-settings.patch @@ -120,10 +120,10 @@ index c1c5e884f00398032196ee71b55b348fcfce21ce..ed032918fb33d60c2d60d4db9275dddf } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 39991fb579e6b0df221f62d544f4d0ab79d2a769..9b7d1b8c058f55045bb525511509c5e03e6aebaf 100644 +index b22e855393e5f3d3099db3bba60ad62c1163ca2b..2cf4bab37d7789f9d22ae1d9edbdabbe8fa79ab5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -531,6 +531,10 @@ public class PurpurWorldConfig { +@@ -534,6 +534,10 @@ public class PurpurWorldConfig { public double giantMovementSpeed = 0.5D; public double giantAttackDamage = 50.0D; public double giantMaxHealth = 100.0D; @@ -134,7 +134,7 @@ index 39991fb579e6b0df221f62d544f4d0ab79d2a769..9b7d1b8c058f55045bb525511509c5e0 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -547,6 +551,10 @@ public class PurpurWorldConfig { +@@ -550,6 +554,10 @@ public class PurpurWorldConfig { set("mobs.giant.attributes.max_health", oldValue); } giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); diff --git a/patches/server/0030-Zombie-horse-naturally-spawn.patch b/patches/server/0030-Zombie-horse-naturally-spawn.patch index 937c167a7..3d5b83c3b 100644 --- a/patches/server/0030-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0030-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dade21560eb26011f8d59d277ffdc0b65d6e6c80..1140edb12dba385ff572b2cd2ab1a4b32eab2a1a 100644 +index 3d94e1c0abd49d59847c9aa17c6161b3da3fb649..1952608dc00f3d47aa6fe3dfd54957ca064a9374 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -792,9 +792,15 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -28,10 +28,10 @@ index dade21560eb26011f8d59d277ffdc0b65d6e6c80..1140edb12dba385ff572b2cd2ab1a4b3 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 9b7d1b8c058f55045bb525511509c5e03e6aebaf..c9b639f8ec010146a325b007807b98019fcb3c2f 100644 +index 2cf4bab37d7789f9d22ae1d9edbdabbe8fa79ab5..408f80e6046a45ff3f7526f603e5c68d222057d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1454,6 +1454,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1457,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -39,7 +39,7 @@ index 9b7d1b8c058f55045bb525511509c5e03e6aebaf..c9b639f8ec010146a325b007807b9801 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1469,6 +1470,7 @@ public class PurpurWorldConfig { +@@ -1472,6 +1473,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/0031-Charged-creeper-naturally-spawn.patch b/patches/server/0031-Charged-creeper-naturally-spawn.patch index 39aa4567e..0c8f3ee91 100644 --- a/patches/server/0031-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0031-Charged-creeper-naturally-spawn.patch @@ -24,10 +24,10 @@ index 0bf2355b7ac80227c06b3e85f1645559275a96e5..2a5f7fb0e60f41b6627255146ca18b27 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c9b639f8ec010146a325b007807b98019fcb3c2f..e9b357ac289f7e72b4bbbcfdf71c9eac51b73cbd 100644 +index 408f80e6046a45ff3f7526f603e5c68d222057d4..c14e710ca4137912978212d69b9dad78d5613f83 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 { +@@ -325,6 +325,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = false; public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index c9b639f8ec010146a325b007807b98019fcb3c2f..e9b357ac289f7e72b4bbbcfdf71c9eac private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -332,6 +333,7 @@ public class PurpurWorldConfig { +@@ -335,6 +336,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch index 877fa1a59..ef1a7d17c 100644 --- a/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch @@ -38,10 +38,10 @@ index eaf040f10e33fdfb57391b6e7bc6901c87270853..47dc84052f1fb0017ff2e608c3f6d8b9 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9b357ac289f7e72b4bbbcfdf71c9eac51b73cbd..a30300602f23001f14ff8e82854f653db2cb1e79 100644 +index c14e710ca4137912978212d69b9dad78d5613f83..ecc43e84b839d66a0636623708633a5a71b95127 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -965,6 +965,8 @@ public class PurpurWorldConfig { +@@ -968,6 +968,8 @@ public class PurpurWorldConfig { public boolean rabbitRidableInWater = false; public boolean rabbitControllable = true; public double rabbitMaxHealth = 3.0D; @@ -50,7 +50,7 @@ index e9b357ac289f7e72b4bbbcfdf71c9eac51b73cbd..a30300602f23001f14ff8e82854f653d private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -975,6 +977,8 @@ public class PurpurWorldConfig { +@@ -978,6 +980,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0034-Tulips-change-fox-type.patch b/patches/server/0034-Tulips-change-fox-type.patch index b44b88355..d1b41bf63 100644 --- a/patches/server/0034-Tulips-change-fox-type.patch +++ b/patches/server/0034-Tulips-change-fox-type.patch @@ -75,10 +75,10 @@ index 8d25d79be606b173a59264706172561165f82143..f03bd9a9129f0d45d36ef56a726d513a // 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 a30300602f23001f14ff8e82854f653db2cb1e79..878321a8f3665c0b1577cc49ede54e7041187af7 100644 +index ecc43e84b839d66a0636623708633a5a71b95127..81e031ca9345a0dd3e3afb78880d1ae4a936247e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -486,6 +486,7 @@ public class PurpurWorldConfig { +@@ -489,6 +489,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = false; public boolean foxControllable = true; public double foxMaxHealth = 10.0D; @@ -86,7 +86,7 @@ index a30300602f23001f14ff8e82854f653db2cb1e79..878321a8f3665c0b1577cc49ede54e70 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -496,6 +497,7 @@ public class PurpurWorldConfig { +@@ -499,6 +500,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0035-Breedable-Polar-Bears.patch b/patches/server/0035-Breedable-Polar-Bears.patch index 09ef2ad83..1246c7c40 100644 --- a/patches/server/0035-Breedable-Polar-Bears.patch +++ b/patches/server/0035-Breedable-Polar-Bears.patch @@ -59,10 +59,10 @@ index 798269a1098008e14fc2548e480c815fa4ff4d25..e68782ac48fd9ee11080dfd76c88d9a4 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 878321a8f3665c0b1577cc49ede54e7041187af7..e35cec7207a48ec6632a1546e39bd3c2dc8b042e 100644 +index 81e031ca9345a0dd3e3afb78880d1ae4a936247e..5dbba6fcb3cf0750520e4ea55489cf6e1f04f7d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -937,6 +937,8 @@ public class PurpurWorldConfig { +@@ -940,6 +940,8 @@ public class PurpurWorldConfig { public boolean polarBearRidableInWater = false; public boolean polarBearControllable = true; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index 878321a8f3665c0b1577cc49ede54e7041187af7..e35cec7207a48ec6632a1546e39bd3c2 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -947,6 +949,9 @@ public class PurpurWorldConfig { +@@ -950,6 +952,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/0036-Chickens-can-retaliate.patch b/patches/server/0036-Chickens-can-retaliate.patch index 52489b1f4..f19b88090 100644 --- a/patches/server/0036-Chickens-can-retaliate.patch +++ b/patches/server/0036-Chickens-can-retaliate.patch @@ -51,10 +51,10 @@ index 8503a3393026134df18601ed87dcec1f3e6680b8..96dceb9943c4320e0edfba47cc211d60 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e35cec7207a48ec6632a1546e39bd3c2dc8b042e..442e8dceeee7cd7e05bad5ce722b0dce121978ae 100644 +index 5dbba6fcb3cf0750520e4ea55489cf6e1f04f7d4..5c739edfd8b81493248beddb712bbc24a7098ea4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -276,6 +276,7 @@ public class PurpurWorldConfig { +@@ -279,6 +279,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index e35cec7207a48ec6632a1546e39bd3c2dc8b042e..442e8dceeee7cd7e05bad5ce722b0dce private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -286,6 +287,7 @@ public class PurpurWorldConfig { +@@ -289,6 +290,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0037-Add-option-to-set-armorstand-step-height.patch b/patches/server/0037-Add-option-to-set-armorstand-step-height.patch index cf6f43285..f572b2590 100644 --- a/patches/server/0037-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0037-Add-option-to-set-armorstand-step-height.patch @@ -17,10 +17,10 @@ index 150afceb491cfd254c0f1b84800e6df14cf26676..ba9e851eebb25edf94efe8dfbd591e26 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 442e8dceeee7cd7e05bad5ce722b0dce121978ae..1c47c36d1fd31a270b28f1e92a6855a6a236ffa6 100644 +index 5c739edfd8b81493248beddb712bbc24a7098ea4..a95aea65d8aafe90d8ba15a7580536c155dcd862 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -89,6 +89,11 @@ public class PurpurWorldConfig { +@@ -92,6 +92,11 @@ public class PurpurWorldConfig { return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0038-Cat-spawning-options.patch b/patches/server/0038-Cat-spawning-options.patch index c3a825eb3..0c0a19163 100644 --- a/patches/server/0038-Cat-spawning-options.patch +++ b/patches/server/0038-Cat-spawning-options.patch @@ -51,10 +51,10 @@ index 8808cb9f5df43d781cbb9c7943ff2f222e3a6969..f7e3ee98b006a53c3c6bf87fc90e5ef4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c47c36d1fd31a270b28f1e92a6855a6a236ffa6..b06c801bee4dade7d655ec3f29dd38713db201e4 100644 +index a95aea65d8aafe90d8ba15a7580536c155dcd862..1d6a90f54d415e328804c70b6381ee4010aba7b1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -249,6 +249,9 @@ public class PurpurWorldConfig { +@@ -252,6 +252,9 @@ public class PurpurWorldConfig { public boolean catRidableInWater = false; public boolean catControllable = true; public double catMaxHealth = 10.0D; @@ -64,7 +64,7 @@ index 1c47c36d1fd31a270b28f1e92a6855a6a236ffa6..b06c801bee4dade7d655ec3f29dd3871 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -259,6 +262,9 @@ public class PurpurWorldConfig { +@@ -262,6 +265,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0040-Cows-eat-mushrooms.patch b/patches/server/0040-Cows-eat-mushrooms.patch index 50ea272b1..af12bab7b 100644 --- a/patches/server/0040-Cows-eat-mushrooms.patch +++ b/patches/server/0040-Cows-eat-mushrooms.patch @@ -114,10 +114,10 @@ index dd4d5e2e7cbfed18cf3b4664dbe08eaf9d95f61e..732c560383da3b8a270139758f29734d 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 b06c801bee4dade7d655ec3f29dd38713db201e4..fcdfad2d539a65365e05ce9d49fd90e6febabecd 100644 +index 1d6a90f54d415e328804c70b6381ee4010aba7b1..1ed669848112c1b323b2a52b26666570361632d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -319,6 +319,7 @@ public class PurpurWorldConfig { +@@ -322,6 +322,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = false; public boolean cowControllable = true; public double cowMaxHealth = 10.0D; @@ -125,7 +125,7 @@ index b06c801bee4dade7d655ec3f29dd38713db201e4..fcdfad2d539a65365e05ce9d49fd90e6 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -329,6 +330,7 @@ public class PurpurWorldConfig { +@@ -332,6 +333,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0042-Pigs-give-saddle-back.patch b/patches/server/0042-Pigs-give-saddle-back.patch index 776e1be41..42d533f97 100644 --- a/patches/server/0042-Pigs-give-saddle-back.patch +++ b/patches/server/0042-Pigs-give-saddle-back.patch @@ -27,10 +27,10 @@ index a02476bdc34a4e3e0389abaf08687393cc3bff97..d4348bd3877813295d01d0171fee2d59 if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fcdfad2d539a65365e05ce9d49fd90e6febabecd..3e7b24a03cb84255d05d8262fdce814731ba2cf5 100644 +index 1ed669848112c1b323b2a52b26666570361632d1..4672bcf648751b813cb22853251c535c5adaa13f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -888,6 +888,7 @@ public class PurpurWorldConfig { +@@ -891,6 +891,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public boolean pigControllable = true; public double pigMaxHealth = 10.0D; @@ -38,7 +38,7 @@ index fcdfad2d539a65365e05ce9d49fd90e6febabecd..3e7b24a03cb84255d05d8262fdce8147 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -898,6 +899,7 @@ public class PurpurWorldConfig { +@@ -901,6 +902,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0043-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0043-Snowman-drop-and-put-back-pumpkin.patch index b000bb88f..3d34f655b 100644 --- a/patches/server/0043-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0043-Snowman-drop-and-put-back-pumpkin.patch @@ -32,10 +32,10 @@ index e2f0f1d7ed8004a03f14887750a470e08ee1f42d..b4459d68397cc5bac4f7ef79a2dfb18f 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 3e7b24a03cb84255d05d8262fdce814731ba2cf5..3184fa1fb2cbd3862162a23e30a9994606b4b85b 100644 +index 4672bcf648751b813cb22853251c535c5adaa13f..fb7248785d466d6c996dc97ae2d301086e2e3d29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1151,6 +1151,8 @@ public class PurpurWorldConfig { +@@ -1154,6 +1154,8 @@ public class PurpurWorldConfig { public boolean snowGolemControllable = true; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -44,7 +44,7 @@ index 3e7b24a03cb84255d05d8262fdce814731ba2cf5..3184fa1fb2cbd3862162a23e30a99946 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1162,6 +1164,8 @@ public class PurpurWorldConfig { +@@ -1165,6 +1167,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/0044-Ender-dragon-always-drop-full-exp.patch b/patches/server/0044-Ender-dragon-always-drop-full-exp.patch index bd5732ed2..724b66be9 100644 --- a/patches/server/0044-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0044-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index c1b67d5dc5fd533fb2aa28a5c7d9dd87cc7412d8..9ce2527054f5163eae3d1216427378dc } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3184fa1fb2cbd3862162a23e30a9994606b4b85b..7b48454ddf2d838e8c1d418f8218fbf9b1578d38 100644 +index fb7248785d466d6c996dc97ae2d301086e2e3d29..283982b9676736b27afc152f0563e0731178e400 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -432,6 +432,7 @@ public class PurpurWorldConfig { +@@ -435,6 +435,7 @@ public class PurpurWorldConfig { public boolean enderDragonControllable = true; public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index 3184fa1fb2cbd3862162a23e30a9994606b4b85b..7b48454ddf2d838e8c1d418f8218fbf9 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -447,6 +448,7 @@ public class PurpurWorldConfig { +@@ -450,6 +451,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/0045-Signs-editable-on-right-click.patch b/patches/server/0045-Signs-editable-on-right-click.patch index 60df97e24..7f56f7508 100644 --- a/patches/server/0045-Signs-editable-on-right-click.patch +++ b/patches/server/0045-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 7b48454ddf2d838e8c1d418f8218fbf9b1578d38..0584304bceb4d4da8854265700f3528e91a99980 100644 +index 283982b9676736b27afc152f0563e0731178e400..93a94161696bc7f7e2e02164c9d8b5895f94aa69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -148,6 +148,11 @@ public class PurpurWorldConfig { +@@ -151,6 +151,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0046-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0046-Allow-soil-to-moisten-from-water-directly-under-it.patch index f20a53fda..14fd32d4e 100644 --- a/patches/server/0046-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0046-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,10 +18,10 @@ index d089887030ac7c7a79abca97134ba9291e244059..4208833252a5b5c74d294dc3435869d7 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0584304bceb4d4da8854265700f3528e91a99980..c21f24c3ecbde5dfd7a81f221e6e6ce157295660 100644 +index 93a94161696bc7f7e2e02164c9d8b5895f94aa69..805434c62063cfa9b26d92431fa62b10504ad0f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -148,6 +148,11 @@ public class PurpurWorldConfig { +@@ -151,6 +151,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0047-Minecart-settings-and-WASD-controls.patch b/patches/server/0047-Minecart-settings-and-WASD-controls.patch index 47f64a1d8..8f5247369 100644 --- a/patches/server/0047-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0047-Minecart-settings-and-WASD-controls.patch @@ -148,10 +148,10 @@ index 939aca929038b90738c9b78c2fc3611088b18e72..2fe9daf2a1a4a007c983115503915981 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 c21f24c3ecbde5dfd7a81f221e6e6ce157295660..2611af43afada9bd46bed7cd342e818afeb95c1c 100644 +index 805434c62063cfa9b26d92431fa62b10504ad0f8..8e6bc5815e9624c6eb24e66cdba6d95989de4aae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,68 @@ public class PurpurWorldConfig { +@@ -97,6 +97,68 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch index 046f60f46..3dad5dc16 100644 --- a/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch @@ -25,10 +25,10 @@ index 6c769141376f6995d6572d5e3cf3a999ff954e82..ccc034d345d4c7ea1b8317023e2e410d // 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 2611af43afada9bd46bed7cd342e818afeb95c1c..85fdd1712640b4b3f87810294f49f1565e6fd750 100644 +index 8e6bc5815e9624c6eb24e66cdba6d95989de4aae..ec5821991becc54f132b97806000759268558450 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,11 @@ public class PurpurWorldConfig { +@@ -97,6 +97,11 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch index 1f19dd29e..8a2a96d84 100644 --- a/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0049-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 85fdd1712640b4b3f87810294f49f1565e6fd750..f6292685e1a198d6e8ec4a1c77343a8d76565078 100644 +index ec5821991becc54f132b97806000759268558450..9b38a406705f1733827a4b74e304c2e5d370ac60 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -95,8 +95,10 @@ public class PurpurWorldConfig { +@@ -98,8 +98,10 @@ public class PurpurWorldConfig { } public boolean disableDropsOnCrammingDeath = false; diff --git a/patches/server/0055-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0055-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index 2d42fd6e5..9baa4d527 100644 --- a/patches/server/0055-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0055-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,10 +18,10 @@ index 1b31b32d42eeb54680b902cd7e82d10ba7daa5d0..5be708a76642d4133757c5d181b3c541 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 f6292685e1a198d6e8ec4a1c77343a8d76565078..ca4c6ed817cb2b4b53ea48ecc962564d3576d7d9 100644 +index 9b38a406705f1733827a4b74e304c2e5d370ac60..3aa9497d07d58cc5a1b3e66943a313ad05364ff1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,9 +96,11 @@ public class PurpurWorldConfig { +@@ -99,9 +99,11 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; diff --git a/patches/server/0056-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0056-Add-enderman-and-creeper-griefing-controls.patch index 00ecb2334..5c4607f25 100644 --- a/patches/server/0056-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0056-Add-enderman-and-creeper-griefing-controls.patch @@ -38,10 +38,10 @@ index d86aeb3f91a01206e7cb13caae3e5c571a73952c..ad47267eb6797e1591841cb7a576fb65 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ca4c6ed817cb2b4b53ea48ecc962564d3576d7d9..9c7f40cb3af6dd288ff296b5db503da53b789f78 100644 +index 3aa9497d07d58cc5a1b3e66943a313ad05364ff1..47c1ec44380a90f7f7fb0b6fd6f287796f536a5e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -419,6 +419,7 @@ public class PurpurWorldConfig { +@@ -422,6 +422,7 @@ public class PurpurWorldConfig { public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index ca4c6ed817cb2b4b53ea48ecc962564d3576d7d9..9c7f40cb3af6dd288ff296b5db503da5 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -430,6 +431,7 @@ public class PurpurWorldConfig { +@@ -433,6 +434,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 ca4c6ed817cb2b4b53ea48ecc962564d3576d7d9..9c7f40cb3af6dd288ff296b5db503da5 } public boolean dolphinRidable = false; -@@ -536,6 +538,7 @@ public class PurpurWorldConfig { +@@ -539,6 +541,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = false; public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index ca4c6ed817cb2b4b53ea48ecc962564d3576d7d9..9c7f40cb3af6dd288ff296b5db503da5 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -546,6 +549,7 @@ public class PurpurWorldConfig { +@@ -549,6 +552,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0057-Villagers-follow-emerald-blocks.patch b/patches/server/0057-Villagers-follow-emerald-blocks.patch index 3803d4a9c..9475f43d9 100644 --- a/patches/server/0057-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0057-Villagers-follow-emerald-blocks.patch @@ -54,10 +54,10 @@ index 8bfa041297db79e8f1452ce7059d1536a6e2854f..615fdf709b81693cced9a208cc96a33f 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 9c7f40cb3af6dd288ff296b5db503da53b789f78..3708e26b4ed8766a835decff5c97b6f687391bed 100644 +index 47c1ec44380a90f7f7fb0b6fd6f287796f536a5e..bc8faf0d8bb6c92e667bf61d5efb459121afe180 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1408,6 +1408,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1411,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; @@ -65,7 +65,7 @@ index 9c7f40cb3af6dd288ff296b5db503da53b789f78..3708e26b4ed8766a835decff5c97b6f6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1420,6 +1421,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1424,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 9c7f40cb3af6dd288ff296b5db503da53b789f78..3708e26b4ed8766a835decff5c97b6f6 } public boolean vindicatorRidable = false; -@@ -1442,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1447,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = false; public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index 9c7f40cb3af6dd288ff296b5db503da53b789f78..3708e26b4ed8766a835decff5c97b6f6 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1452,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1455,6 +1458,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/0058-Allow-leashing-villagers.patch b/patches/server/0058-Allow-leashing-villagers.patch index 9dc4f95b4..ab808e17c 100644 --- a/patches/server/0058-Allow-leashing-villagers.patch +++ b/patches/server/0058-Allow-leashing-villagers.patch @@ -49,10 +49,10 @@ index 615fdf709b81693cced9a208cc96a33fb686c9a1..8756e0d8d0077308f5fb74bf45fe093d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3708e26b4ed8766a835decff5c97b6f687391bed..a361faa6723067fb0f9bac1fc9036d92cb0cd9ef 100644 +index bc8faf0d8bb6c92e667bf61d5efb459121afe180..489a51fb7a80b1e576b5c6d23c41cbe6a7254251 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1409,6 +1409,7 @@ public class PurpurWorldConfig { +@@ -1412,6 +1412,7 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index 3708e26b4ed8766a835decff5c97b6f687391bed..a361faa6723067fb0f9bac1fc9036d92 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1422,6 +1423,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1426,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 3708e26b4ed8766a835decff5c97b6f687391bed..a361faa6723067fb0f9bac1fc9036d92 } public boolean vindicatorRidable = false; -@@ -1445,6 +1447,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1450,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index 3708e26b4ed8766a835decff5c97b6f687391bed..a361faa6723067fb0f9bac1fc9036d92 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1456,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1459,6 +1462,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/0059-Implement-infinite-liquids.patch b/patches/server/0059-Implement-infinite-liquids.patch index ffb1ce278..cf91a70d4 100644 --- a/patches/server/0059-Implement-infinite-liquids.patch +++ b/patches/server/0059-Implement-infinite-liquids.patch @@ -81,10 +81,10 @@ index ac33ba631f4b0ae0e08bff5748440ef5b76c2117..29068ca2df90ab0351b91cd0aa3e224c @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 a361faa6723067fb0f9bac1fc9036d92cb0cd9ef..91c4776aab25fc42ff41a215015493f782e4d78c 100644 +index 489a51fb7a80b1e576b5c6d23c41cbe6a7254251..69f249b8647542c1502cf2407ec7737b09566ebb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -224,6 +224,13 @@ public class PurpurWorldConfig { +@@ -227,6 +227,13 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } @@ -98,7 +98,7 @@ index a361faa6723067fb0f9bac1fc9036d92cb0cd9ef..91c4776aab25fc42ff41a215015493f7 public boolean signRightClickEdit = false; private void signSettings() { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); -@@ -238,6 +245,13 @@ public class PurpurWorldConfig { +@@ -241,6 +248,13 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } diff --git a/patches/server/0060-Make-lava-flow-speed-configurable.patch b/patches/server/0060-Make-lava-flow-speed-configurable.patch index 484e0bb05..fc29ed141 100644 --- a/patches/server/0060-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0060-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index d96c52a55cad5f6127b17e1307fe341e8bdd1335..87643b76ea46ddfe0281e8a97a5b0996 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91c4776aab25fc42ff41a215015493f782e4d78c..25e377ce3d916d931143bc54585d12c39e31f581 100644 +index 69f249b8647542c1502cf2407ec7737b09566ebb..bfd7592780565f851a0d3da0c4531eb7a50a4b3c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -226,9 +226,13 @@ public class PurpurWorldConfig { +@@ -229,9 +229,13 @@ public class PurpurWorldConfig { public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; diff --git a/patches/server/0061-Add-player-death-exp-control-options.patch b/patches/server/0061-Add-player-death-exp-control-options.patch index 3a564df04..f990122c0 100644 --- a/patches/server/0061-Add-player-death-exp-control-options.patch +++ b/patches/server/0061-Add-player-death-exp-control-options.patch @@ -31,10 +31,10 @@ index 74f14215280005a4d6fb35a77e2f1c4858250f2f..e0ea8b1b3ccde9616a721d677a8217b2 return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25e377ce3d916d931143bc54585d12c39e31f581..12ac9c973d39713b62106be8040a09b094ba38f4 100644 +index bfd7592780565f851a0d3da0c4531eb7a50a4b3c..699fb31a9ce01e88b0a1fb2af99b74ec64856eb0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -172,6 +172,8 @@ public class PurpurWorldConfig { +@@ -175,6 +175,8 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public int playerSpawnInvulnerableTicks = 60; public boolean playerInvulnerableWhileAcceptingResourcePack = false; @@ -43,7 +43,7 @@ index 25e377ce3d916d931143bc54585d12c39e31f581..12ac9c973d39713b62106be8040a09b0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -185,6 +187,8 @@ public class PurpurWorldConfig { +@@ -188,6 +190,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/0062-Configurable-void-damage-height-and-damage.patch b/patches/server/0062-Configurable-void-damage-height-and-damage.patch index fdf5644ff..7400a4cf4 100644 --- a/patches/server/0062-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0062-Configurable-void-damage-height-and-damage.patch @@ -31,10 +31,10 @@ index bc19439abb1cbf548b1eda2a6527d9e825ea34ab..40c716bd22d54f7f669d570d1bebcb18 protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 12ac9c973d39713b62106be8040a09b094ba38f4..7944d3ed8c17ee80ea9913188fb45feda274e036 100644 +index 699fb31a9ce01e88b0a1fb2af99b74ec64856eb0..dfd0af9ed3c8bffc08f6fd0f39885db6f26aa901 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -97,10 +97,14 @@ public class PurpurWorldConfig { +@@ -100,10 +100,14 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; diff --git a/patches/server/0064-Dispenser-curse-of-binding-protection.patch b/patches/server/0064-Dispenser-curse-of-binding-protection.patch index 892212aa2..19d0ae893 100644 --- a/patches/server/0064-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0064-Dispenser-curse-of-binding-protection.patch @@ -43,10 +43,10 @@ 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 7944d3ed8c17ee80ea9913188fb45feda274e036..3481c204c118d3990b158e9dbd1313e37e701184 100644 +index dfd0af9ed3c8bffc08f6fd0f39885db6f26aa901..61e0ab842e2e0a5856a39cb3a2a0c7837b02353e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -227,6 +227,11 @@ public class PurpurWorldConfig { +@@ -230,6 +230,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0065-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0065-Add-option-for-boats-to-eject-players-on-land.patch index 3305a825c..bfad47c41 100644 --- a/patches/server/0065-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0065-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,10 +17,10 @@ index eb753323f67badb1bed28405c07b03078e322b44..c9ce0f1f798ee73e985798e7e7271aa5 } 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 3481c204c118d3990b158e9dbd1313e37e701184..dacd070f4b0925a4c8649f5e8caafd01d00cba8f 100644 +index 61e0ab842e2e0a5856a39cb3a2a0c7837b02353e..6f888c569f6054e2e1dbf550d914476fe062417f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,12 +94,14 @@ public class PurpurWorldConfig { +@@ -97,12 +97,14 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0066-Mending-mends-most-damages-equipment-first.patch b/patches/server/0066-Mending-mends-most-damages-equipment-first.patch index aeb9d0e09..84488cd7d 100644 --- a/patches/server/0066-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0066-Mending-mends-most-damages-equipment-first.patch @@ -73,10 +73,10 @@ index 22925b2f44fc510832ef07290d3109f0394f7d30..4afa30753a90d9bbd3c71b21cb4a8dea public static Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, (stack) -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dacd070f4b0925a4c8649f5e8caafd01d00cba8f..0edb6ec9678f0fc8a1236622490ff67dfb93dd55 100644 +index 6f888c569f6054e2e1dbf550d914476fe062417f..74244b61ef528df49f2f71a3d52522b397d6e7e1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,7 @@ public class PurpurWorldConfig { +@@ -97,6 +97,7 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } @@ -84,7 +84,7 @@ index dacd070f4b0925a4c8649f5e8caafd01d00cba8f..0edb6ec9678f0fc8a1236622490ff67d public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; -@@ -101,6 +102,7 @@ public class PurpurWorldConfig { +@@ -104,6 +105,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { diff --git a/patches/server/0068-Implement-elytra-settings.patch b/patches/server/0068-Implement-elytra-settings.patch index 91fb8023b..825b3bbb4 100644 --- a/patches/server/0068-Implement-elytra-settings.patch +++ b/patches/server/0068-Implement-elytra-settings.patch @@ -99,10 +99,10 @@ 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 0edb6ec9678f0fc8a1236622490ff67dfb93dd55..3a15647c0ddc5a234f1cea5778e336caea3f3f24 100644 +index 74244b61ef528df49f2f71a3d52522b397d6e7e1..aecaf3bfa1153caa66153a560575336b844e5e55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -111,6 +111,19 @@ public class PurpurWorldConfig { +@@ -114,6 +114,19 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } diff --git a/patches/server/0069-Item-entity-immunities.patch b/patches/server/0069-Item-entity-immunities.patch index 22dc4fbc9..90aa06311 100644 --- a/patches/server/0069-Item-entity-immunities.patch +++ b/patches/server/0069-Item-entity-immunities.patch @@ -128,10 +128,10 @@ index fea44ba6a6584b4a510af6a58cab07eecec6b68b..f3bf5199bc7ddf8a3d0dc67a184e7690 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a15647c0ddc5a234f1cea5778e336caea3f3f24..fb1d389cdfa47726718552fd92cf0035858792df 100644 +index aecaf3bfa1153caa66153a560575336b844e5e55..298289ec1f000391cec03734f238f2fb558a8a50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -124,6 +124,49 @@ public class PurpurWorldConfig { +@@ -127,6 +127,49 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0073-Configurable-jockey-options.patch b/patches/server/0073-Configurable-jockey-options.patch index c5100c226..b87f850a9 100644 --- a/patches/server/0073-Configurable-jockey-options.patch +++ b/patches/server/0073-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index bc3ffb8867d5f7c2fa548d31256341d388bf8112..6c1dd723373f9b1b920548de85aeb6ce @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da2ba6a3f9 100644 +index 298289ec1f000391cec03734f238f2fb558a8a50..fee17cd019a98e685a2783387fee2061870fc066 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -574,6 +574,9 @@ public class PurpurWorldConfig { +@@ -577,6 +577,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -585,6 +588,9 @@ public class PurpurWorldConfig { +@@ -588,6 +591,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 fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da } public boolean elderGuardianRidable = false; -@@ -833,6 +839,9 @@ public class PurpurWorldConfig { +@@ -836,6 +842,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -844,6 +853,9 @@ public class PurpurWorldConfig { +@@ -847,6 +856,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 fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da } public boolean illusionerRidable = false; -@@ -1653,6 +1665,9 @@ public class PurpurWorldConfig { +@@ -1656,6 +1668,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1664,6 +1679,9 @@ public class PurpurWorldConfig { +@@ -1667,6 +1682,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 fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da } public boolean zombieHorseRidableInWater = false; -@@ -1698,6 +1716,9 @@ public class PurpurWorldConfig { +@@ -1701,6 +1719,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1709,6 +1730,9 @@ public class PurpurWorldConfig { +@@ -1712,6 +1733,9 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -250,7 +250,7 @@ index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da } public boolean zombifiedPiglinRidable = false; -@@ -1716,6 +1740,9 @@ public class PurpurWorldConfig { +@@ -1719,6 +1743,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index fb1d389cdfa47726718552fd92cf0035858792df..04e27b028782b46db7fc88d1ba14a4da private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1727,5 +1754,8 @@ public class PurpurWorldConfig { +@@ -1730,5 +1757,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/0074-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0074-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 5d73eba52..7ef5559a4 100644 --- a/patches/server/0074-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0074-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -258,10 +258,10 @@ index a3b871797c3e006f66978a73da01fede52fc8c49..9c82953b45471a40faea41f164feabbd 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 04e27b028782b46db7fc88d1ba14a4da2ba6a3f9..4fad53692a12bf47dc7074df1b3956e81ccdab30 100644 +index fee17cd019a98e685a2783387fee2061870fc066..1c55bd66f132c93dc0e2aa09cb4c52cfc5b4715e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1051,6 +1051,9 @@ public class PurpurWorldConfig { +@@ -1054,6 +1054,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -271,7 +271,7 @@ index 04e27b028782b46db7fc88d1ba14a4da2ba6a3f9..4fad53692a12bf47dc7074df1b3956e8 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1072,6 +1075,9 @@ public class PurpurWorldConfig { +@@ -1075,6 +1078,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0075-Add-phantom-spawning-options.patch b/patches/server/0075-Add-phantom-spawning-options.patch index 59e1199e8..f36c88868 100644 --- a/patches/server/0075-Add-phantom-spawning-options.patch +++ b/patches/server/0075-Add-phantom-spawning-options.patch @@ -48,10 +48,10 @@ index 6b5c31470499e25d01936106839c2fff21b113c8..cbf4a7ca1f09d156eed12030fafb7240 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 4fad53692a12bf47dc7074df1b3956e81ccdab30..9903ab606d08d51643dfbf45e48a2296f312e0de 100644 +index 1c55bd66f132c93dc0e2aa09cb4c52cfc5b4715e..3f2d97e54fa79c0143459a88d9a8a63757883fd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1054,6 +1054,18 @@ public class PurpurWorldConfig { +@@ -1057,6 +1057,18 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -70,7 +70,7 @@ index 4fad53692a12bf47dc7074df1b3956e81ccdab30..9903ab606d08d51643dfbf45e48a2296 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1078,6 +1090,18 @@ public class PurpurWorldConfig { +@@ -1081,6 +1093,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/0076-Implement-bed-explosion-options.patch b/patches/server/0076-Implement-bed-explosion-options.patch index 42f21b5e7..8d7c3e527 100644 --- a/patches/server/0076-Implement-bed-explosion-options.patch +++ b/patches/server/0076-Implement-bed-explosion-options.patch @@ -27,10 +27,10 @@ index 654a859a37bf991c7a7fa8a44a3d20f8feb223db..e1d274a9be856f6fa5be00958c35b7d7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9903ab606d08d51643dfbf45e48a2296f312e0de..5b393a3cad84a7618bf481be9480b095a561f155 100644 +index 3f2d97e54fa79c0143459a88d9a8a63757883fd7..b1aef35ae90d698d67f06053f5ace5721f5b2cde 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -287,6 +287,22 @@ public class PurpurWorldConfig { +@@ -290,6 +290,22 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0077-Implement-respawn-anchor-explosion-options.patch b/patches/server/0077-Implement-respawn-anchor-explosion-options.patch index ec3ae59bc..5d8653226 100644 --- a/patches/server/0077-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0077-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index c2f3d3a09327e7cb7d3167609eb3ce68eadf6443..12b25aec1167620ed7048c0c8631b0b5 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 5b393a3cad84a7618bf481be9480b095a561f155..8cef70934821898e8445edc247adf718e224ec3c 100644 +index b1aef35ae90d698d67f06053f5ace5721f5b2cde..4180a1215daff7383acd9c77adb4e813ed9a4359 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -324,6 +324,22 @@ public class PurpurWorldConfig { +@@ -327,6 +327,22 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0080-Entity-lifespan.patch b/patches/server/0080-Entity-lifespan.patch index 6fe18c808..e84ef5cd3 100644 --- a/patches/server/0080-Entity-lifespan.patch +++ b/patches/server/0080-Entity-lifespan.patch @@ -95,10 +95,10 @@ index 1e4629de69b762f89efe54a93f28292d3657bccb..fe97b5b327af1189b166243c42be9989 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8cef70934821898e8445edc247adf718e224ec3c..16639d1ec58413298c7e12d64838d21f8d5fdedd 100644 +index 4180a1215daff7383acd9c77adb4e813ed9a4359..74bdd1a79dd3a911d3d4fb4b7a31454f64aa274a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -124,6 +124,11 @@ public class PurpurWorldConfig { +@@ -127,6 +127,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0081-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0081-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index e6a23541f..70006c030 100644 --- a/patches/server/0081-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0081-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -56,10 +56,10 @@ index dc6177e8d5c6f6615ccbfa55a2e0a8c891fc6b52..d75a3d62eeb151c2451b20feb7fd088c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16639d1ec58413298c7e12d64838d21f8d5fdedd..e44b6b03e90a52f5b3e411fb78a3050287a23431 100644 +index 74bdd1a79dd3a911d3d4fb4b7a31454f64aa274a..68d87cd69a830a4b5e15b31a43ab0a80f07fe7cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -243,6 +243,7 @@ public class PurpurWorldConfig { +@@ -246,6 +246,7 @@ public class PurpurWorldConfig { public boolean playerInvulnerableWhileAcceptingResourcePack = false; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -67,7 +67,7 @@ index 16639d1ec58413298c7e12d64838d21f8d5fdedd..e44b6b03e90a52f5b3e411fb78a30502 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -258,6 +259,7 @@ public class PurpurWorldConfig { +@@ -261,6 +262,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/0082-Squid-EAR-immunity.patch b/patches/server/0082-Squid-EAR-immunity.patch index a290bec17..727ac98b9 100644 --- a/patches/server/0082-Squid-EAR-immunity.patch +++ b/patches/server/0082-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 e44b6b03e90a52f5b3e411fb78a3050287a23431..0c937d5b07101735b43c15398b1c8b2e45dcec66 100644 +index 68d87cd69a830a4b5e15b31a43ab0a80f07fe7cc..0479eb38b18712028fd255e2749997d8f6008a7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1430,6 +1430,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1433,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index e44b6b03e90a52f5b3e411fb78a3050287a23431..0c937d5b07101735b43c15398b1c8b2e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1439,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1442,6 +1443,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0083-Phantoms-burn-in-light.patch b/patches/server/0083-Phantoms-burn-in-light.patch index 8b66f3deb..7ff793a90 100644 --- a/patches/server/0083-Phantoms-burn-in-light.patch +++ b/patches/server/0083-Phantoms-burn-in-light.patch @@ -53,10 +53,10 @@ index 9c82953b45471a40faea41f164feabbd2af02984..82d56a6968f3bbea5a2d32c2a7a84a8b 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 0c937d5b07101735b43c15398b1c8b2e45dcec66..2da33e0b656b0265bcfdd814b53e132cb88b0dee 100644 +index 0479eb38b18712028fd255e2749997d8f6008a7a..feed341e67e3580e13d5c3c705f3aeb87d8a9031 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1105,6 +1105,9 @@ public class PurpurWorldConfig { +@@ -1108,6 +1108,9 @@ public class PurpurWorldConfig { public int phantomSpawnOverheadRadius = 10; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -66,7 +66,7 @@ index 0c937d5b07101735b43c15398b1c8b2e45dcec66..2da33e0b656b0265bcfdd814b53e132c private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1141,6 +1144,9 @@ public class PurpurWorldConfig { +@@ -1144,6 +1147,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/0084-Configurable-villager-breeding.patch b/patches/server/0084-Configurable-villager-breeding.patch index a23f7c6e1..141fe1704 100644 --- a/patches/server/0084-Configurable-villager-breeding.patch +++ b/patches/server/0084-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 2087b4a4fbc4076c5ec59aaf73f1367ffcd0ef7c..09a7af00e05f5369c1c87c51f121ed34 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2da33e0b656b0265bcfdd814b53e132cb88b0dee..d224e0586472779ee0205a939e2f0173fa0aed8d 100644 +index feed341e67e3580e13d5c3c705f3aeb87d8a9031..37fc8cca1034949c63fce0edd662748f12982517 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1590,6 +1590,7 @@ public class PurpurWorldConfig { +@@ -1593,6 +1593,7 @@ public class PurpurWorldConfig { public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index 2da33e0b656b0265bcfdd814b53e132cb88b0dee..d224e0586472779ee0205a939e2f0173 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1604,6 +1605,7 @@ public class PurpurWorldConfig { +@@ -1607,6 +1608,7 @@ 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/0085-Redstone-deactivates-spawners.patch b/patches/server/0085-Redstone-deactivates-spawners.patch index c732e4479..3c8ce1f40 100644 --- a/patches/server/0085-Redstone-deactivates-spawners.patch +++ b/patches/server/0085-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index ee619590aa49323059947fbaee9e88d61df99789..deffa277272c34adb39d7c3e69e91502 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d224e0586472779ee0205a939e2f0173fa0aed8d..6da346a866493631914f16ae2a4f60632fd1b897 100644 +index 37fc8cca1034949c63fce0edd662748f12982517..addbc5f93292874717e5d394e9ebd7a7a0d69394 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -352,6 +352,11 @@ public class PurpurWorldConfig { +@@ -355,6 +355,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0086-Totems-work-in-inventory.patch b/patches/server/0086-Totems-work-in-inventory.patch index 81a262b43..763cbcf42 100644 --- a/patches/server/0086-Totems-work-in-inventory.patch +++ b/patches/server/0086-Totems-work-in-inventory.patch @@ -29,10 +29,10 @@ index d75a3d62eeb151c2451b20feb7fd088c513a2571..2b7d14e3de4520188c1701ac00044a64 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 6da346a866493631914f16ae2a4f60632fd1b897..529193b0b6b0e2883688c3b1e3ca4bbe315267f8 100644 +index addbc5f93292874717e5d394e9ebd7a7a0d69394..0f36235678efa995a10474e6f7652f1782e693d7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -244,6 +244,7 @@ public class PurpurWorldConfig { +@@ -247,6 +247,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -40,7 +40,7 @@ index 6da346a866493631914f16ae2a4f60632fd1b897..529193b0b6b0e2883688c3b1e3ca4bbe private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -260,6 +261,7 @@ public class PurpurWorldConfig { +@@ -263,6 +264,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/0087-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0087-Add-vindicator-johnny-spawn-chance.patch index dc5a4e1fe..61b369743 100644 --- a/patches/server/0087-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0087-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,10 @@ index c3b8bce2d8e1dccb619267923964e06abfed8762..021550a0465dd1fd152b4c2e76301405 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 529193b0b6b0e2883688c3b1e3ca4bbe315267f8..5761da1c9f712c93b40bb9c67910fb6736150b10 100644 +index 0f36235678efa995a10474e6f7652f1782e693d7..2ceefab6594d70e0585817d7bc386caed077c377 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1619,6 +1619,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1622,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = false; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index 529193b0b6b0e2883688c3b1e3ca4bbe315267f8..5761da1c9f712c93b40bb9c67910fb67 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1629,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1633,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0089-Dispensers-place-anvils-option.patch b/patches/server/0089-Dispensers-place-anvils-option.patch index 28dbc353b..a790c0016 100644 --- a/patches/server/0089-Dispensers-place-anvils-option.patch +++ b/patches/server/0089-Dispensers-place-anvils-option.patch @@ -41,10 +41,10 @@ index 3d2b5f040715a0e4fac0e6786bd11a4d715330ce..9aef3cfd930594c1a2c92a02a18133d0 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 5761da1c9f712c93b40bb9c67910fb6736150b10..b44d77391406d9046c13d9aa4330b5649708ec70 100644 +index 2ceefab6594d70e0585817d7bc386caed077c377..8137db4239792b114b7f5886a502e6a10176304f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -313,8 +313,10 @@ public class PurpurWorldConfig { +@@ -316,8 +316,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0090-Allow-anvil-colors.patch b/patches/server/0090-Allow-anvil-colors.patch index c8f7e5477..ac51b290b 100644 --- a/patches/server/0090-Allow-anvil-colors.patch +++ b/patches/server/0090-Allow-anvil-colors.patch @@ -27,10 +27,10 @@ index c1ed57bae737fca803c2dd8666207dbffc6758c3..10cd589e427f847936f29e33edee3923 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b44d77391406d9046c13d9aa4330b5649708ec70..fdad39e4a639c46e3ce15bbf77a854f532a4d655 100644 +index 8137db4239792b114b7f5886a502e6a10176304f..f619f15d5f1e71af80b9df73d3632eeef38a9d5d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -296,6 +296,11 @@ public class PurpurWorldConfig { +@@ -299,6 +299,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0091-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0091-Add-option-to-disable-dolphin-treasure-searching.patch index afec6d488..60defa69f 100644 --- a/patches/server/0091-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0091-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index b3e53f922a424a407adb0111c29c8be6f89f8115..b52245d881186f91174819326abb0cf9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fdad39e4a639c46e3ce15bbf77a854f532a4d655..1f1a4a2022ac3111c3761e51662de12ba28c32ec 100644 +index f619f15d5f1e71af80b9df73d3632eeef38a9d5d..c5b921450f257785f0e089e3744cf309affe1f75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -584,6 +584,7 @@ public class PurpurWorldConfig { +@@ -587,6 +587,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index fdad39e4a639c46e3ce15bbf77a854f532a4d655..1f1a4a2022ac3111c3761e51662de12b private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -596,6 +597,7 @@ public class PurpurWorldConfig { +@@ -599,6 +600,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0093-Stop-squids-floating-on-top-of-water.patch b/patches/server/0093-Stop-squids-floating-on-top-of-water.patch index 1ee03d5bc..5cbbca450 100644 --- a/patches/server/0093-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0093-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 1f1a4a2022ac3111c3761e51662de12ba28c32ec..8f15e760ab50bc8add8de89a4922e99613dfb076 100644 +index c5b921450f257785f0e089e3744cf309affe1f75..5869ce00116c8293510d6318be2fcf322cabbf27 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1453,6 +1453,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1456,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 1f1a4a2022ac3111c3761e51662de12ba28c32ec..8f15e760ab50bc8add8de89a4922e996 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1463,6 +1464,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1467,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/0095-Entities-can-use-portals-configuration.patch b/patches/server/0095-Entities-can-use-portals-configuration.patch index 3cb02c54d..7bc086ddb 100644 --- a/patches/server/0095-Entities-can-use-portals-configuration.patch +++ b/patches/server/0095-Entities-can-use-portals-configuration.patch @@ -27,10 +27,10 @@ index d0e0811601684199206f4c6e23e077a2c987e86b..8873e947665a877255d92548f7e894f6 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 8f15e760ab50bc8add8de89a4922e99613dfb076..a4a590c456b5e3554605f3428f93d3a8e1bd5ba9 100644 +index 5869ce00116c8293510d6318be2fcf322cabbf27..994c96e757b5d985844d3ee40f5b5611db3cab6c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -97,6 +97,7 @@ public class PurpurWorldConfig { +@@ -100,6 +100,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; @@ -38,7 +38,7 @@ index 8f15e760ab50bc8add8de89a4922e99613dfb076..a4a590c456b5e3554605f3428f93d3a8 public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; -@@ -105,6 +106,7 @@ public class PurpurWorldConfig { +@@ -108,6 +109,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/0097-Customizable-wither-health-and-healing.patch b/patches/server/0097-Customizable-wither-health-and-healing.patch index 3018d7256..13f324c5d 100644 --- a/patches/server/0097-Customizable-wither-health-and-healing.patch +++ b/patches/server/0097-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 7c2c5b5205c7b422903fb6984f2b411d20189b22..c39e6ab8ffb850eb6ba783d237daad7e 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 a4a590c456b5e3554605f3428f93d3a8e1bd5ba9..88b49ee7171c0ad7be83eeac2aba2573e9707e4f 100644 +index 994c96e757b5d985844d3ee40f5b5611db3cab6c..c32a57542363aeebde4cb1d43b1a460d6fa6b98c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1696,6 +1696,8 @@ public class PurpurWorldConfig { +@@ -1699,6 +1699,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index a4a590c456b5e3554605f3428f93d3a8e1bd5ba9..88b49ee7171c0ad7be83eeac2aba2573 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1711,6 +1713,8 @@ public class PurpurWorldConfig { +@@ -1714,6 +1716,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0098-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0098-Allow-toggling-special-MobSpawners-per-world.patch index 9d5c2ef75..e6dc96201 100644 --- a/patches/server/0098-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0098-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1140edb12dba385ff572b2cd2ab1a4b32eab2a1a..ea71f71918c19d03f584939d17901d2ffff7ad0e 100644 +index 1952608dc00f3d47aa6fe3dfd54957ca064a9374..fe4909978c6b81f87a4585c8b42c1b71bf638830 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -505,7 +505,24 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -67,10 +67,10 @@ index daa7c4bd8a3f6c28f02b7117b061f0def29e3743..d4699d7eefafffd2d4e0a03d62d5094f 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 88b49ee7171c0ad7be83eeac2aba2573e9707e4f..35529a02afe42607ebcd6ab532324561429ab14a 100644 +index c32a57542363aeebde4cb1d43b1a460d6fa6b98c..80d1beff9f66619c37c992072a7046b6f4614f12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -68,6 +68,12 @@ public class PurpurWorldConfig { +@@ -71,6 +71,12 @@ public class PurpurWorldConfig { return PurpurConfig.config.getBoolean("world-settings." + worldName + "." + path, PurpurConfig.config.getBoolean("world-settings.default." + path)); } @@ -83,7 +83,7 @@ index 88b49ee7171c0ad7be83eeac2aba2573e9707e4f..35529a02afe42607ebcd6ab532324561 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -236,6 +242,21 @@ public class PurpurWorldConfig { +@@ -239,6 +245,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0099-Raid-cooldown-setting.patch b/patches/server/0099-Raid-cooldown-setting.patch index f590ca6fe..19ccfdb20 100644 --- a/patches/server/0099-Raid-cooldown-setting.patch +++ b/patches/server/0099-Raid-cooldown-setting.patch @@ -52,10 +52,10 @@ index fa8fcdfea51a35e4a482d3d7b18159099da62706..38459f822e21601a167edab871b07a85 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 35529a02afe42607ebcd6ab532324561429ab14a..7a222701ef7fcf2e89376774537833e1ea53f526 100644 +index 80d1beff9f66619c37c992072a7046b6f4614f12..10be99da087706094e93144252ea666dc1238979 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -108,6 +108,7 @@ public class PurpurWorldConfig { +@@ -111,6 +111,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -63,7 +63,7 @@ index 35529a02afe42607ebcd6ab532324561429ab14a..7a222701ef7fcf2e89376774537833e1 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -117,6 +118,7 @@ public class PurpurWorldConfig { +@@ -120,6 +121,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); diff --git a/patches/server/0100-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0100-Despawn-rate-config-options-per-projectile-type.patch index 847174d64..d656ec1ca 100644 --- a/patches/server/0100-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0100-Despawn-rate-config-options-per-projectile-type.patch @@ -3,344 +3,75 @@ From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Mon, 14 Sep 2020 10:09:05 -0700 Subject: [PATCH] Despawn rate config options per projectile type -Default values of -1 respect vanilla behaviour. +This patch's implementation has been removed in favor of Pufferfish's entity-timeouts. +The config remains for migration purposes. -diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index bc01e5014e1355a225bdf5c47f2965290b45e2d2..63662eb3b3e4a79aea506df671721a83528340b9 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -63,7 +63,7 @@ public abstract class AbstractArrow extends Projectile { - protected int inGroundTime; - public AbstractArrow.Pickup pickup; - public int shakeTime; -- public int life; -+ // public int life; // Purpur - moved to Projectile - private double baseDamage; - public int knockback; - private SoundEvent soundEvent; -@@ -334,12 +334,28 @@ public abstract class AbstractArrow extends Projectile { - - } - -- protected void tickDespawn() { -- ++this.life; -- if (this.life >= (pickup == Pickup.CREATIVE_ONLY ? level.paperConfig().entities.spawning.creativeArrowDespawnRate.value() : (pickup == Pickup.DISALLOWED ? level.paperConfig().entities.spawning.nonPlayerArrowDespawnRate.value() : ((this instanceof ThrownTrident) ? level.spigotConfig.tridentDespawnRate : level.spigotConfig.arrowDespawnRate)))) { // Spigot // Paper - TODO: Extract this to init? -- this.discard(); -+ // Purpur start -+ protected int getPurpurDespawnRate() { -+ if (pickup == Pickup.CREATIVE_ONLY) { -+ return level.paperConfig().entities.spawning.creativeArrowDespawnRate.value(); -+ } -+ if (pickup == Pickup.DISALLOWED) { -+ return level.paperConfig().entities.spawning.nonPlayerArrowDespawnRate.value(); - } -+ if (this instanceof ThrownTrident) { -+ return level.spigotConfig.tridentDespawnRate; -+ } -+ return level.spigotConfig.arrowDespawnRate; -+ } - -+ // Arrow despawn ticking is handled differently -+ protected boolean shouldAlwaysTickDespawn() { -+ return false; -+ }; -+ // Purpur end +diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +index a125abc75ed2bbd905c8fdec442416a45264f531..e76c7e04274d8e94a3e5d6576e42364b2320a9ee 100644 +--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java ++++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +@@ -121,6 +121,22 @@ public class PufferfishConfig { + config.setComment(key, String.join("\n", comment), CommentType.BLOCK); + } + } + -+ protected void tickDespawn() { -+ tickDespawnCounter(); // Purpur - } - - private void resetPiercedEntities() { -diff --git a/src/main/java/net/minecraft/world/entity/projectile/DragonFireball.java b/src/main/java/net/minecraft/world/entity/projectile/DragonFireball.java -index 6afe37e42d88701af38df5793a9ea9d7d2cda5c5..1de27407c92d496715899fcafb3794df9f5ef6cd 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/DragonFireball.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/DragonFireball.java -@@ -81,4 +81,11 @@ public class DragonFireball extends AbstractHurtingProjectile { - protected boolean shouldBurn() { - return false; - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.dragonFireballDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -index 5406925cd66f46ab8744123c670d72cea7bfc3a1..2bd14d74fa2fed39dad27b4417794f00eb068328 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -@@ -358,4 +358,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier { - public boolean isAttackable() { - return false; - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.fireworkDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -index f5886a88fd98ede5e85a91eccccb05ac33eb40e2..f8378da592ecf22d8c7d5e07794a13992fd95f35 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -@@ -661,4 +661,11 @@ public class FishingHook extends Projectile { - - private OpenWaterType() {} - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.fishingHookDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -index 5237b699e000b4fed99be39b0a7e2daab9c8bf42..e69213b43c8aa5a7c04add7a87482d531fbf52d2 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -@@ -77,4 +77,11 @@ public class LargeFireball extends Fireball { - } - - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.largeFireballDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -index 1a945a32c3d3705a318ebca72a365931a8c001b7..c7fdcfae1ba823046fdfe78aa97b4a7ab20c086d 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -@@ -100,4 +100,11 @@ public class LlamaSpit extends Projectile { - - this.setDeltaMovement(d0, d1, d2); - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.llamaSpitDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 39ba6ca32b827daee300e1240bd76fd8f680ea02..0cfbb462e3c359d216e35a972e98585d17c65586 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -33,6 +33,7 @@ public abstract class Projectile extends Entity { - public Entity cachedOwner; - private boolean leftOwner; - private boolean hasBeenShot; -+ public int life; // Purpur - moved from AbstractArrow - - // CraftBukkit start - protected boolean hitCancelled = false; -@@ -72,6 +73,23 @@ public abstract class Projectile extends Entity { - } - // Pufferfish start - -+ // Purpur start -+ protected final void tickDespawnCounter() { -+ if (this.getPurpurDespawnRate() != -1) { -+ ++this.life; -+ if (this.life >= this.getPurpurDespawnRate()) { -+ this.discard(); -+ } -+ } -+ } -+ -+ protected abstract int getPurpurDespawnRate(); -+ -+ protected boolean shouldAlwaysTickDespawn() { -+ return true; -+ }; -+ // Purpur end -+ - public void setOwner(@Nullable Entity entity) { - if (entity != null) { - this.ownerUUID = entity.getUUID(); -@@ -148,6 +166,8 @@ public abstract class Projectile extends Entity { - this.leftOwner = this.checkLeftOwner(); - } - -+ if (this.shouldAlwaysTickDespawn()) tickDespawnCounter(); // Purpur -+ - super.tick(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java b/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java -index 0e66418720ca833e676295edc7e28473ce9d9f23..b9ac126103c496c9b23a9f96d5ed1a058aebf667 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java -@@ -62,6 +62,13 @@ public class ShulkerBullet extends Projectile { - projectileSource = (org.bukkit.entity.LivingEntity) owner.getBukkitEntity(); // CraftBukkit - } - -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.shulkerBulletDespawnRate; -+ } -+ // Purpur end -+ - // CraftBukkit start - public Entity getTarget() { - return this.finalTarget; -diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index 00ac1cdc4734cc57f15433c5c6e7a3a545739d33..db6ae655400ea75dc8b8d53b31bf27e401518279 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -@@ -93,4 +93,11 @@ public class SmallFireball extends Fireball { - public boolean hurt(DamageSource source, float amount) { - return false; - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.smallFireballDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index a725851060f13e734dbd2fbf8c83c9e1af57a8b7..ed2f039c4042861bcfa2e41d8281eefd37daa9fa 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -@@ -67,4 +67,11 @@ public class Snowball extends ThrowableItemProjectile { - } - - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.snowballDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -index 77941e3981e49cf5662b3e3c86a9c419080b17c8..8c6243aab556c993b43ab52e216bcb0a70d1a686 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -@@ -107,4 +107,11 @@ public class ThrownEgg extends ThrowableItemProjectile { - protected Item getDefaultItem() { - return Items.EGG; - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.eggDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 23f77dfc6df93ef6a70e14a7e410263d39fae2cb..22d5f5aac2f4c7ce8f490d4851ef3d637a9c7d06 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -121,4 +121,11 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { - - return super.changeDimension(destination); - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.enderPearlDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java -index dcbbff3a8dfcac869f07025e0e8e3d9c47956093..d6b522aa7c7ce87caf55f91ee9d661e055506c01 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java -@@ -56,4 +56,11 @@ public class ThrownExperienceBottle extends ThrowableItemProjectile { - } - - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.expBottleDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java -index fee09e6ff72cf1da389d5811dd005642cd50a5b4..0f387c4f6fb49c5266feeec3504a4ec7c870ba37 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java -@@ -305,4 +305,11 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie - } - - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.potionDespawnRate; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 2867e841e73a3edfdeb83af9d96e0d0cd4116a68..8613008090a9d7cf5cd7c2a598f2c725b5b0cdc6 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -136,4 +136,11 @@ public class WitherSkull extends AbstractHurtingProjectile { - protected boolean shouldBurn() { - return false; - } -+ -+ // Purpur start -+ @Override -+ protected int getPurpurDespawnRate() { -+ return this.level.purpurConfig.witherSkullDespawnRate; -+ } -+ // Purpur end - } ++ // Purpur start ++ public static int getInt(String key, int def) { ++ return config.getInt(key, def); ++ } ++ public static void setInt(String key, int value) { ++ config.set(key, value); ++ } ++ public static void save() { ++ try { ++ config.save(new File("pufferfish.yml")); ++ } catch (IOException e) { ++ e.printStackTrace(); ++ } ++ } ++ // Purpur end + + private static boolean getBoolean(String key, boolean defaultValue, String... comment) { + return getBoolean(key, null, defaultValue, comment); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7a222701ef7fcf2e89376774537833e1ea53f526..e3f3ccafb76d73908b400afd0dda809f1d592168 100644 +index 10be99da087706094e93144252ea666dc1238979..ed58cb6d17e1f79a8d0cf05be1921a51795c0762 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -289,6 +289,35 @@ public class PurpurWorldConfig { +@@ -292,6 +292,39 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } -+ public int dragonFireballDespawnRate = -1; -+ public int eggDespawnRate = -1; -+ public int enderPearlDespawnRate = -1; -+ public int expBottleDespawnRate = -1; -+ public int fireworkDespawnRate = -1; -+ public int fishingHookDespawnRate = -1; -+ public int largeFireballDespawnRate = -1; -+ public int llamaSpitDespawnRate = -1; -+ public int potionDespawnRate = -1; -+ public int shulkerBulletDespawnRate = -1; -+ public int smallFireballDespawnRate = -1; -+ public int snowballDespawnRate = -1; -+ public int witherSkullDespawnRate = -1; ++ private static boolean projectileDespawnRateSettingsMigrated = false; + private void projectileDespawnRateSettings() { -+ dragonFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.dragon_fireball", dragonFireballDespawnRate); -+ eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate); -+ enderPearlDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.ender_pearl", enderPearlDespawnRate); -+ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate); -+ fireworkDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.firework_rocket", fireworkDespawnRate); -+ fishingHookDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fishing_bobber", fishingHookDespawnRate); -+ largeFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireball", largeFireballDespawnRate); -+ llamaSpitDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.llama_spit", llamaSpitDespawnRate); -+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate); -+ shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate); -+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate); -+ snowballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.snowball", snowballDespawnRate); -+ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); ++ if (PurpurConfig.version < 28 && !projectileDespawnRateSettingsMigrated) { ++ migrateProjectileDespawnRateSettings(EntityType.DRAGON_FIREBALL); ++ migrateProjectileDespawnRateSettings(EntityType.EGG); ++ migrateProjectileDespawnRateSettings(EntityType.ENDER_PEARL); ++ migrateProjectileDespawnRateSettings(EntityType.EXPERIENCE_BOTTLE); ++ migrateProjectileDespawnRateSettings(EntityType.FIREWORK_ROCKET); ++ migrateProjectileDespawnRateSettings(EntityType.FISHING_BOBBER); ++ migrateProjectileDespawnRateSettings(EntityType.FIREBALL); ++ migrateProjectileDespawnRateSettings(EntityType.LLAMA_SPIT); ++ migrateProjectileDespawnRateSettings(EntityType.POTION); ++ migrateProjectileDespawnRateSettings(EntityType.SHULKER_BULLET); ++ migrateProjectileDespawnRateSettings(EntityType.SMALL_FIREBALL); ++ migrateProjectileDespawnRateSettings(EntityType.SNOWBALL); ++ migrateProjectileDespawnRateSettings(EntityType.WITHER_SKULL); ++ PufferfishConfig.save(); ++ set("gameplay-mechanics.projectile-despawn-rates", null); ++ // pufferfish's entity_timeout is a global config ++ // we only want to migrate values from the ++ // default world (first world loaded) ++ projectileDespawnRateSettingsMigrated = true; ++ } ++ } ++ private void migrateProjectileDespawnRateSettings(EntityType type) { ++ String pufferName = "entity_timeouts." + type.id.toUpperCase(Locale.ROOT); ++ int value = getInt("gameplay-mechanics.projectile-despawn-rates." + type.id, -1); ++ if (value != -1 && PufferfishConfig.getInt(pufferName, -1) == -1) { ++ PufferfishConfig.setInt(pufferName, value); ++ type.ttl = value; ++ } + } + public boolean silkTouchEnabled = false; diff --git a/patches/server/0101-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0101-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 6c30e2184..6313ebaeb 100644 --- a/patches/server/0101-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0101-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -71,10 +71,10 @@ index 7be6cb6ad9a8b5f695b1a13564a37917a914b983..efe74738b5a90f822901488aa99f9810 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 e3f3ccafb76d73908b400afd0dda809f1d592168..7bfbbe1018dbdbddaa7d97ad3009d2e3849078e9 100644 +index ed58cb6d17e1f79a8d0cf05be1921a51795c0762..751709e96178bf4e945ed757e3fe33a5fbe5ffd2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1825,6 +1825,7 @@ public class PurpurWorldConfig { +@@ -1832,6 +1832,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index e3f3ccafb76d73908b400afd0dda809f1d592168..7bfbbe1018dbdbddaa7d97ad3009d2e3 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1839,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1846,6 +1847,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/0103-Flying-squids-Oh-my.patch b/patches/server/0103-Flying-squids-Oh-my.patch index 2c4447a3d..3ebbe279a 100644 --- a/patches/server/0103-Flying-squids-Oh-my.patch +++ b/patches/server/0103-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 709aaa9dc834d91219ce1087d8f89ef5bf3d915c..4850960c7c4f38c7d81b8945f8c87504 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 7bfbbe1018dbdbddaa7d97ad3009d2e3849078e9..7f0ef2dfe8e326c53dd32b976c2a978d3f2ace07 100644 +index 751709e96178bf4e945ed757e3fe33a5fbe5ffd2..f24cab0386524bb8203249aff2f5120dbd895403 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -872,10 +872,12 @@ public class PurpurWorldConfig { +@@ -879,10 +879,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index 7bfbbe1018dbdbddaa7d97ad3009d2e3849078e9..7f0ef2dfe8e326c53dd32b976c2a978d } public boolean goatRidable = false; -@@ -1508,6 +1510,7 @@ public class PurpurWorldConfig { +@@ -1515,6 +1517,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 7bfbbe1018dbdbddaa7d97ad3009d2e3849078e9..7f0ef2dfe8e326c53dd32b976c2a978d private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1519,6 +1522,7 @@ public class PurpurWorldConfig { +@@ -1526,6 +1529,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/0104-Infinity-bow-settings.patch b/patches/server/0104-Infinity-bow-settings.patch index 631a6abfb..8a06b5b2c 100644 --- a/patches/server/0104-Infinity-bow-settings.patch +++ b/patches/server/0104-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 7f0ef2dfe8e326c53dd32b976c2a978d3f2ace07..d2b73baf72ab84bb13471da549be8ab9d38e4074 100644 +index f24cab0386524bb8203249aff2f5120dbd895403..c1ac7c44868445bf5cc250ec108fd84c957434c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -139,6 +139,17 @@ public class PurpurWorldConfig { +@@ -142,6 +142,17 @@ public class PurpurWorldConfig { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } diff --git a/patches/server/0105-Configurable-daylight-cycle.patch b/patches/server/0105-Configurable-daylight-cycle.patch index a32c68bbc..5c3cdcba4 100644 --- a/patches/server/0105-Configurable-daylight-cycle.patch +++ b/patches/server/0105-Configurable-daylight-cycle.patch @@ -31,7 +31,7 @@ index 11d5b4d1e0400e9e2baacbf9690ce1ababe85139..ce90ecb258c954146fbe7a9f393cbe29 } ServerPlayer entityplayer = (ServerPlayer) entityhuman; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ea71f71918c19d03f584939d17901d2ffff7ad0e..156bac4f1c6d4577a424e773cb175a2f737b99cf 100644 +index fe4909978c6b81f87a4585c8b42c1b71bf638830..5dff48719ff166990a3d5668a50d8531e59f092b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -210,6 +210,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -88,10 +88,10 @@ index ea71f71918c19d03f584939d17901d2ffff7ad0e..156bac4f1c6d4577a424e773cb175a2f 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 d2b73baf72ab84bb13471da549be8ab9d38e4074..568f2ed666dcd7571bad045e67bfe22f2bb90c9b 100644 +index c1ac7c44868445bf5cc250ec108fd84c957434c6..47386b053f056d0dc4cd60b2ba07ecaed3b2188b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -121,6 +121,13 @@ public class PurpurWorldConfig { +@@ -124,6 +124,13 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } diff --git a/patches/server/0107-Furnace-uses-lava-from-underneath.patch b/patches/server/0107-Furnace-uses-lava-from-underneath.patch index 287323255..e1506cc7d 100644 --- a/patches/server/0107-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0107-Furnace-uses-lava-from-underneath.patch @@ -47,10 +47,10 @@ index 4977f3fad3bfc12fd4c5f9fbe8beea2895247c57..c617a8aacbbefb37d53d0e005e822469 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 568f2ed666dcd7571bad045e67bfe22f2bb90c9b..633dc2149bc691b20238f5a7e54d3e9a45f474ce 100644 +index 47386b053f056d0dc4cd60b2ba07ecaed3b2188b..4f466edede5d344baeda141fa0dc5f68669c67a5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -401,6 +401,17 @@ public class PurpurWorldConfig { +@@ -408,6 +408,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 65001eb08..2a4029465 100644 --- a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index 4208833252a5b5c74d294dc3435869d71d774e37..a3ff99c461dd862733816d9d1204cf8b return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 633dc2149bc691b20238f5a7e54d3e9a45f474ce..cde4ae628a62fc3303191a845ab93e4d8224d4c4 100644 +index 4f466edede5d344baeda141fa0dc5f68669c67a5..383a6f1e7b54ea8c7e4ecf9098434df33ccd2e3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -397,8 +397,10 @@ public class PurpurWorldConfig { +@@ -404,8 +404,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 c654267a0..d59094ae0 100644 --- a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch @@ -95,10 +95,10 @@ index 072c72385c2ec279d03daed003a992b381178fbb..924b66511f81ee7b448dadf81b78a0e5 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cde4ae628a62fc3303191a845ab93e4d8224d4c4..5236d3bc8acb317d819f59cd5873c6e0d14f091f 100644 +index 383a6f1e7b54ea8c7e4ecf9098434df33ccd2e3e..101c8ea510343c9f5c4742721a5622190d17358b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -109,6 +109,7 @@ public class PurpurWorldConfig { +@@ -112,6 +112,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -106,7 +106,7 @@ index cde4ae628a62fc3303191a845ab93e4d8224d4c4..5236d3bc8acb317d819f59cd5873c6e0 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -119,6 +120,7 @@ public class PurpurWorldConfig { +@@ -122,6 +123,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/server/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0111-Make-entity-breeding-times-configurable.patch index acdd27c1d..cef1f1d15 100644 --- a/patches/server/0111-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0111-Make-entity-breeding-times-configurable.patch @@ -491,10 +491,10 @@ index e99ffbf30652e188e88f8e17ed41d39ff25c9f73..c335a32832c6eef95658fbf632b943bb @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda87a4d776 100644 +index 101c8ea510343c9f5c4742721a5622190d17358b..2d5c235b27417b02a1bf3da6a95277fe1574907d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -490,10 +490,12 @@ public class PurpurWorldConfig { +@@ -497,10 +497,12 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; @@ -507,7 +507,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean batRidable = false; -@@ -526,6 +528,7 @@ public class PurpurWorldConfig { +@@ -533,6 +535,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -515,7 +515,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -537,6 +540,7 @@ public class PurpurWorldConfig { +@@ -544,6 +547,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -523,7 +523,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean blazeRidable = false; -@@ -564,6 +568,7 @@ public class PurpurWorldConfig { +@@ -571,6 +575,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -531,7 +531,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -577,6 +582,7 @@ public class PurpurWorldConfig { +@@ -584,6 +589,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -539,7 +539,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean caveSpiderRidable = false; -@@ -600,6 +606,7 @@ public class PurpurWorldConfig { +@@ -607,6 +613,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -547,7 +547,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -611,6 +618,7 @@ public class PurpurWorldConfig { +@@ -618,6 +625,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -555,7 +555,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean codRidable = false; -@@ -632,6 +640,7 @@ public class PurpurWorldConfig { +@@ -639,6 +647,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -563,7 +563,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -643,6 +652,7 @@ public class PurpurWorldConfig { +@@ -650,6 +659,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -571,7 +571,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean creeperRidable = false; -@@ -694,6 +704,7 @@ public class PurpurWorldConfig { +@@ -701,6 +711,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -579,7 +579,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -709,6 +720,7 @@ public class PurpurWorldConfig { +@@ -716,6 +727,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -587,7 +587,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean drownedRidable = false; -@@ -828,6 +840,7 @@ public class PurpurWorldConfig { +@@ -835,6 +847,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -595,7 +595,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -839,17 +852,20 @@ public class PurpurWorldConfig { +@@ -846,17 +859,20 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -616,7 +616,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean ghastRidable = false; -@@ -917,11 +933,13 @@ public class PurpurWorldConfig { +@@ -924,11 +940,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = false; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -630,7 +630,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean guardianRidable = false; -@@ -942,6 +960,7 @@ public class PurpurWorldConfig { +@@ -949,6 +967,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = false; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -638,7 +638,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -952,6 +971,7 @@ public class PurpurWorldConfig { +@@ -959,6 +978,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -646,7 +646,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean horseRidableInWater = false; -@@ -961,6 +981,7 @@ public class PurpurWorldConfig { +@@ -968,6 +988,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -654,7 +654,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -976,6 +997,7 @@ public class PurpurWorldConfig { +@@ -983,6 +1004,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -662,7 +662,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean huskRidable = false; -@@ -1053,6 +1075,7 @@ public class PurpurWorldConfig { +@@ -1060,6 +1082,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -670,7 +670,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1070,6 +1093,7 @@ public class PurpurWorldConfig { +@@ -1077,6 +1100,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -678,7 +678,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean magmaCubeRidable = false; -@@ -1098,6 +1122,7 @@ public class PurpurWorldConfig { +@@ -1105,6 +1129,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = false; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -686,7 +686,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1108,6 +1133,7 @@ public class PurpurWorldConfig { +@@ -1115,6 +1140,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -694,7 +694,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean muleRidableInWater = false; -@@ -1117,6 +1143,7 @@ public class PurpurWorldConfig { +@@ -1124,6 +1150,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -702,7 +702,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1132,12 +1159,14 @@ public class PurpurWorldConfig { +@@ -1139,12 +1166,14 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -717,7 +717,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1148,12 +1177,14 @@ public class PurpurWorldConfig { +@@ -1155,12 +1184,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -732,7 +732,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1164,6 +1195,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1202,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -740,7 +740,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean parrotRidable = false; -@@ -1259,6 +1291,7 @@ public class PurpurWorldConfig { +@@ -1266,6 +1298,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -748,7 +748,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1270,6 +1303,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1310,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -756,7 +756,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean piglinRidable = false; -@@ -1326,6 +1360,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1367,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -764,7 +764,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1339,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1381,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -772,7 +772,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean pufferfishRidable = false; -@@ -1361,6 +1397,7 @@ public class PurpurWorldConfig { +@@ -1368,6 +1404,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -780,7 +780,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1373,6 +1410,7 @@ public class PurpurWorldConfig { +@@ -1380,6 +1417,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -788,7 +788,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean ravagerRidable = false; -@@ -1409,6 +1447,7 @@ public class PurpurWorldConfig { +@@ -1416,6 +1454,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = false; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -796,7 +796,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1419,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1426,6 +1465,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -804,7 +804,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean shulkerRidable = false; -@@ -1594,6 +1634,7 @@ public class PurpurWorldConfig { +@@ -1601,6 +1641,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -812,7 +812,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1604,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1652,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -820,7 +820,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean tadpoleRidable = false; -@@ -1624,6 +1666,7 @@ public class PurpurWorldConfig { +@@ -1631,6 +1673,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -828,7 +828,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1641,6 +1684,7 @@ public class PurpurWorldConfig { +@@ -1648,6 +1691,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -836,7 +836,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean tropicalFishRidable = false; -@@ -1661,6 +1705,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1712,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = false; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -844,7 +844,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1671,6 +1716,7 @@ public class PurpurWorldConfig { +@@ -1678,6 +1723,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -852,7 +852,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean vexRidable = false; -@@ -1700,6 +1746,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1753,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -860,7 +860,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1715,6 +1762,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1769,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -868,7 +868,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda } public boolean vindicatorRidable = false; -@@ -1826,6 +1874,7 @@ public class PurpurWorldConfig { +@@ -1833,6 +1881,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -876,7 +876,7 @@ index 5236d3bc8acb317d819f59cd5873c6e0d14f091f..4a2c5afda4f59542412b0ef54bfa4cda private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1836,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1843,6 +1892,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 4895b0959..dd0e38d2e 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 4c5671cd4c26c23e61b2196577c554f504a03c55..678e0cb7e5b704ce01eda96b2d74694d if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a2c5afda4f59542412b0ef54bfa4cda87a4d776..f6e3c210779406ec179495cfb97b59df57384d36 100644 +index 2d5c235b27417b02a1bf3da6a95277fe1574907d..b5aa728d4e10cd37a268234c9fd7acdcb0e57956 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,8 +96,10 @@ public class PurpurWorldConfig { +@@ -99,8 +99,10 @@ public class PurpurWorldConfig { } public float armorstandStepHeight = 0.0F; @@ -156,7 +156,7 @@ index 4a2c5afda4f59542412b0ef54bfa4cda87a4d776..f6e3c210779406ec179495cfb97b59df } public boolean useBetterMending = false; -@@ -105,6 +107,7 @@ public class PurpurWorldConfig { +@@ -108,6 +110,7 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; @@ -164,7 +164,7 @@ index 4a2c5afda4f59542412b0ef54bfa4cda87a4d776..f6e3c210779406ec179495cfb97b59df public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -116,6 +119,7 @@ public class PurpurWorldConfig { +@@ -119,6 +122,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 8c60a5f1c..7da571083 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 f6e3c210779406ec179495cfb97b59df57384d36..3d140a8a2e3b3ea968f2f2862f981dc463ac8f7b 100644 +index b5aa728d4e10cd37a268234c9fd7acdcb0e57956..3feffa81d9336c0c625934953522618007143d62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -97,9 +97,11 @@ public class PurpurWorldConfig { +@@ -100,9 +100,11 @@ public class PurpurWorldConfig { public float armorstandStepHeight = 0.0F; public boolean armorstandSetNameVisible = 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 688291382..7f3c67078 100644 --- a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 9458cab33d4ff468d3d009cc1c3b3736f21f649b..4443a4a300d17e8568a81bcb9af89251 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d140a8a2e3b3ea968f2f2862f981dc463ac8f7b..e6f8050ab3701c549970f1811449c0a8e9e27bd2 100644 +index 3feffa81d9336c0c625934953522618007143d62..61e6085089b1e7d181303663a2dfd0477f1972b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -796,6 +796,7 @@ public class PurpurWorldConfig { +@@ -803,6 +803,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 3d140a8a2e3b3ea968f2f2862f981dc463ac8f7b..e6f8050ab3701c549970f1811449c0a8 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -807,6 +808,7 @@ public class PurpurWorldConfig { +@@ -814,6 +815,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 70cd466c6..4d8d8bd2b 100644 --- a/patches/server/0115-Add-configurable-snowball-damage.patch +++ b/patches/server/0115-Add-configurable-snowball-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add configurable snowball damage diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index ed2f039c4042861bcfa2e41d8281eefd37daa9fa..d5d84893c77b4e60a19032d765d76bfd24cbbb2b 100644 +index a725851060f13e734dbd2fbf8c83c9e1af57a8b7..74f798baafc53cd7dd1d4f58bc9a3581ba4f21da 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java @@ -54,7 +54,7 @@ public class Snowball extends ThrowableItemProjectile { @@ -18,11 +18,11 @@ index ed2f039c4042861bcfa2e41d8281eefd37daa9fa..d5d84893c77b4e60a19032d765d76bfd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e6f8050ab3701c549970f1811449c0a8e9e27bd2..0c8671fabefe5c2cecf62d4f84fd15233329fd5f 100644 +index 61e6085089b1e7d181303663a2dfd0477f1972b9..dfccdbbaa1bb6f3716c18e90f5464b42623e4fe4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -315,6 +315,11 @@ public class PurpurWorldConfig { - totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); +@@ -351,6 +351,11 @@ public class PurpurWorldConfig { + } } + public int snowballDamage = -1; @@ -30,6 +30,6 @@ index e6f8050ab3701c549970f1811449c0a8e9e27bd2..0c8671fabefe5c2cecf62d4f84fd1523 + snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); + } + - public int dragonFireballDespawnRate = -1; - public int eggDespawnRate = -1; - public int enderPearlDespawnRate = -1; + public boolean silkTouchEnabled = false; + public String silkTouchSpawnerName = "Spawner"; + public List silkTouchSpawnerLore = new ArrayList<>(); diff --git a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch index 827ab0612..10d904bd4 100644 --- a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch @@ -18,10 +18,10 @@ index fe97b5b327af1189b166243c42be99892226cd9e..5a907375d1497229d3b566b30c34248e } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c8671fabefe5c2cecf62d4f84fd15233329fd5f..f9a428b2d21093c95467b7d02f22e1923c6fcf50 100644 +index dfccdbbaa1bb6f3716c18e90f5464b42623e4fe4..2375db9b994ffbd7371e92731bdb31095d40f9f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -150,8 +150,10 @@ public class PurpurWorldConfig { +@@ -153,8 +153,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 cb4ee89d5..5bf43088d 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 8e5aa1666ca929780670ce513d969973a513e21e..fe2d7acece87d5b825f3f3668c11c0ef if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f9a428b2d21093c95467b7d02f22e1923c6fcf50..38ecc62dab7c34831b09ec489f909678d56807ac 100644 +index 2375db9b994ffbd7371e92731bdb31095d40f9f5..e23ff0ebd09937fcf7c32c2157717c8dff7727d7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -106,6 +106,7 @@ public class PurpurWorldConfig { +@@ -109,6 +109,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; @@ -38,7 +38,7 @@ index f9a428b2d21093c95467b7d02f22e1923c6fcf50..38ecc62dab7c34831b09ec489f909678 public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; -@@ -118,6 +119,7 @@ public class PurpurWorldConfig { +@@ -121,6 +122,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 88ce7176e..1c61ae4dd 100644 --- a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index b4459d68397cc5bac4f7ef79a2dfb18f3eb24f77..b9025929fcc89e72aa820953b91a6542 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38ecc62dab7c34831b09ec489f909678d56807ac..b7f7a1c4da6d866e65fbadd63e7487036af25238 100644 +index e23ff0ebd09937fcf7c32c2157717c8dff7727d7..8b3e3f49b69591c06657b99fc8f83c5d2f851989 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1580,6 +1580,10 @@ public class PurpurWorldConfig { +@@ -1587,6 +1587,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 38ecc62dab7c34831b09ec489f909678d56807ac..b7f7a1c4da6d866e65fbadd63e748703 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1593,6 +1597,10 @@ public class PurpurWorldConfig { +@@ -1600,6 +1604,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 59c6c6d4b..bb097674b 100644 --- a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -181,10 +181,10 @@ index b1f20cb356e6b4e89fdddf4e48f2fd932bdb5170..352a7df156c638684a12a864eb5a9d06 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7f7a1c4da6d866e65fbadd63e7487036af25238..a0a094d200949a0c9e121f9094bb64682046bac9 100644 +index 8b3e3f49b69591c06657b99fc8f83c5d2f851989..9046711e7b68567792962dc80f577253e0c8a9c4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1772,6 +1772,8 @@ public class PurpurWorldConfig { +@@ -1779,6 +1779,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -193,7 +193,7 @@ index b7f7a1c4da6d866e65fbadd63e7487036af25238..a0a094d200949a0c9e121f9094bb6468 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1788,6 +1790,8 @@ public class PurpurWorldConfig { +@@ -1795,6 +1797,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index d91cfe04a..a778a461e 100644 --- a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 6c1dd723373f9b1b920548de85aeb6cef0120fa7..1f0003fb08a45af02e6d38e28fa548ab } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0a094d200949a0c9e121f9094bb64682046bac9..942df6380276fd427d0c68cfe95ada5ff80df9a6 100644 +index 9046711e7b68567792962dc80f577253e0c8a9c4..77d5e5481db4a427bde6eca89fc9324f8692ea70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2018,6 +2018,7 @@ public class PurpurWorldConfig { +@@ -2025,6 +2025,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index a0a094d200949a0c9e121f9094bb64682046bac9..942df6380276fd427d0c68cfe95ada5f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2032,5 +2033,6 @@ public class PurpurWorldConfig { +@@ -2039,5 +2040,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 e29e48cab..577a0b6b2 100644 --- a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -222,10 +222,10 @@ index a3bec00368aef0f8cc6aa21cce1389938d15f91b..704667760ab1593647e3f03bdd17ad32 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 942df6380276fd427d0c68cfe95ada5ff80df9a6..abaccd1447baa66d1aa73f1090448d5a05f85bf0 100644 +index 77d5e5481db4a427bde6eca89fc9324f8692ea70..e2a62c904424e80f955cff2706bef3688b10788e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1903,6 +1903,8 @@ public class PurpurWorldConfig { +@@ -1910,6 +1910,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -234,7 +234,7 @@ index 942df6380276fd427d0c68cfe95ada5ff80df9a6..abaccd1447baa66d1aa73f1090448d5a public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1914,6 +1916,8 @@ public class PurpurWorldConfig { +@@ -1921,6 +1923,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 72d9c52df..9b5fe4cf0 100644 --- a/patches/server/0124-Configurable-default-collar-color.patch +++ b/patches/server/0124-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index f862d83db6127804b9254a33a73e6f186a1d1327..ffe8f80cfe3bec8fe79415015f529074 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index abaccd1447baa66d1aa73f1090448d5a05f85bf0..cd23d5085ed062b7d9fce71326356e9e389b39e1 100644 +index e2a62c904424e80f955cff2706bef3688b10788e..5ebdba256037477332016336499074662f2badf0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -584,6 +584,7 @@ public class PurpurWorldConfig { +@@ -591,6 +591,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index abaccd1447baa66d1aa73f1090448d5a05f85bf0..cd23d5085ed062b7d9fce71326356e9e private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -598,6 +599,11 @@ public class PurpurWorldConfig { +@@ -605,6 +606,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index abaccd1447baa66d1aa73f1090448d5a05f85bf0..cd23d5085ed062b7d9fce71326356e9e } public boolean caveSpiderRidable = false; -@@ -1903,6 +1909,7 @@ public class PurpurWorldConfig { +@@ -1910,6 +1916,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index abaccd1447baa66d1aa73f1090448d5a05f85bf0..cd23d5085ed062b7d9fce71326356e9e public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1916,6 +1923,11 @@ public class PurpurWorldConfig { +@@ -1923,6 +1930,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 426d9a9c6..5659ae5d2 100644 --- a/patches/server/0125-Phantom-flames-on-swoop.patch +++ b/patches/server/0125-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 82d56a6968f3bbea5a2d32c2a7a84a8ba36d3d15..f23ca987666fd23621d3d731fd1a4ab2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd23d5085ed062b7d9fce71326356e9e389b39e1..2c8e2faeab641f1019f31339707c62e82c5e9276 100644 +index 5ebdba256037477332016336499074662f2badf0..79b0331ae3da328ed051daf8efc6e298b9a57a7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1268,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1275,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index cd23d5085ed062b7d9fce71326356e9e389b39e1..2c8e2faeab641f1019f31339707c62e8 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1307,6 +1308,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1315,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 7eada6ad0..ce890d151 100644 --- a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index c6b57d45383441aa35510e759ce3cb82bc98f305..330ff3bc5fd8625e37b79e1204eddbe8 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c8e2faeab641f1019f31339707c62e82c5e9276..98875193e44706b180663151a2e3864bd5272ff4 100644 +index 79b0331ae3da328ed051daf8efc6e298b9a57a7e..e6da09c147c00e50176c41ce26b06ae34dedea9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -406,6 +406,11 @@ public class PurpurWorldConfig { +@@ -413,6 +413,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 f5947906e..3b63f7f3d 100644 --- a/patches/server/0128-Striders-give-saddle-back.patch +++ b/patches/server/0128-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index eb2083d67f9486a24d2f0aa4bf1f5ba8a00e23a3..df9d16a6493a57b6034cd56bf8dbe38f if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98875193e44706b180663151a2e3864bd5272ff4..aeacb1b81bcce83188008d3e531e72f739d1e928 100644 +index e6da09c147c00e50176c41ce26b06ae34dedea9c..87f6a4c76e169c9f85d02eba46e6ca31a059b414 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1673,6 +1673,7 @@ public class PurpurWorldConfig { +@@ -1680,6 +1680,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 98875193e44706b180663151a2e3864bd5272ff4..aeacb1b81bcce83188008d3e531e72f7 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1684,6 +1685,7 @@ public class PurpurWorldConfig { +@@ -1691,6 +1692,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 3865d7a24..513189f6e 100644 --- a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index e0ea8b1b3ccde9616a721d677a8217b25aadfefe..b416c8606ef53aa49458bb6f36689068 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aeacb1b81bcce83188008d3e531e72f739d1e928..881e9c611f7f5fc56af316cbf1ff73b680b6e4ce 100644 +index 87f6a4c76e169c9f85d02eba46e6ca31a059b414..aeb2d15277803a03eabcfb816664d6f9d168714f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -289,6 +289,19 @@ public class PurpurWorldConfig { +@@ -292,6 +292,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 9100e9a6f..6e27f5204 100644 --- a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch @@ -262,7 +262,7 @@ index 9a14ac198433e9bdfa2dabd4d3ae88ba17fd86ea..592a1a95b4cdfd731574299d2096f279 protected boolean canReplaceCurrentItem(ItemStack stack) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -index e69213b43c8aa5a7c04add7a87482d531fbf52d2..f51ea103238b4a50439f5162a248cd9aa7f1a19b 100644 +index 5237b699e000b4fed99be39b0a7e2daab9c8bf42..efa9424f8e2716f073e89b03f3d85e1b7774af9f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java @@ -18,20 +18,20 @@ public class LargeFireball extends Fireball { @@ -290,10 +290,10 @@ index e69213b43c8aa5a7c04add7a87482d531fbf52d2..f51ea103238b4a50439f5162a248cd9a // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 0cfbb462e3c359d216e35a972e98585d17c65586..d576943e4f0f0e416d59cebcd475d231ebb1ae07 100644 +index 39ba6ca32b827daee300e1240bd76fd8f680ea02..41adf8762919dffbac6adc4e9a6c120e48c3dd43 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -328,6 +328,6 @@ public abstract class Projectile extends Entity { +@@ -308,6 +308,6 @@ public abstract class Projectile extends Entity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); @@ -302,7 +302,7 @@ index 0cfbb462e3c359d216e35a972e98585d17c65586..d576943e4f0f0e416d59cebcd475d231 } } diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index db6ae655400ea75dc8b8d53b31bf27e401518279..d2932bf496b0eff90e2f0738b23864cd6db5a495 100644 +index 00ac1cdc4734cc57f15433c5c6e7a3a545739d33..f1601114647b62b0b10064ed43058cb867740a63 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java @@ -24,7 +24,7 @@ public class SmallFireball extends Fireball { @@ -315,7 +315,7 @@ index db6ae655400ea75dc8b8d53b31bf27e401518279..d2932bf496b0eff90e2f0738b23864cd // CraftBukkit end } diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 8613008090a9d7cf5cd7c2a598f2c725b5b0cdc6..a66e9826b8283366cec5adb54f79efee47d9df22 100644 +index 2867e841e73a3edfdeb83af9d96e0d0cd4116a68..1654b08f76e02e20a8ce5de618f8def82f1feeeb 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -93,7 +93,7 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -393,10 +393,10 @@ index 1a12fee99a8b69fc6c01e1e217575c7c19e13155..4907e0acb7d01b7f57b75579e58ce743 return true; // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0bf235ae28 100644 +index aeb2d15277803a03eabcfb816664d6f9d168714f..8371e153e55020ffd855f5cb876e3edd5e10f991 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -109,8 +109,11 @@ public class PurpurWorldConfig { +@@ -112,8 +112,11 @@ public class PurpurWorldConfig { public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; @@ -408,7 +408,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -122,8 +125,11 @@ public class PurpurWorldConfig { +@@ -125,8 +128,11 @@ public class PurpurWorldConfig { boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); @@ -420,7 +420,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b 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); -@@ -431,9 +437,11 @@ public class PurpurWorldConfig { +@@ -438,9 +444,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -432,7 +432,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -460,6 +468,11 @@ public class PurpurWorldConfig { +@@ -467,6 +475,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -444,7 +444,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -489,10 +502,12 @@ public class PurpurWorldConfig { +@@ -496,10 +509,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -457,7 +457,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean waterInfinite = true; -@@ -700,6 +715,7 @@ public class PurpurWorldConfig { +@@ -707,6 +722,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -465,7 +465,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -712,6 +728,7 @@ public class PurpurWorldConfig { +@@ -719,6 +735,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 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean dolphinRidable = false; -@@ -806,6 +823,7 @@ public class PurpurWorldConfig { +@@ -813,6 +830,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -481,7 +481,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -822,6 +840,7 @@ public class PurpurWorldConfig { +@@ -829,6 +847,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 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean endermanRidable = false; -@@ -830,6 +849,7 @@ public class PurpurWorldConfig { +@@ -837,6 +856,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -497,7 +497,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -842,6 +862,7 @@ public class PurpurWorldConfig { +@@ -849,6 +869,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 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean endermiteRidable = false; -@@ -864,6 +885,7 @@ public class PurpurWorldConfig { +@@ -871,6 +892,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = false; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -513,7 +513,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -874,6 +896,7 @@ public class PurpurWorldConfig { +@@ -881,6 +903,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -521,7 +521,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean foxRidable = false; -@@ -882,6 +905,7 @@ public class PurpurWorldConfig { +@@ -889,6 +912,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -529,7 +529,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -894,6 +918,7 @@ public class PurpurWorldConfig { +@@ -901,6 +925,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 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean frogRidable = false; -@@ -1353,6 +1378,7 @@ public class PurpurWorldConfig { +@@ -1360,6 +1385,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = false; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -545,7 +545,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1363,6 +1389,7 @@ public class PurpurWorldConfig { +@@ -1370,6 +1396,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -553,7 +553,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean piglinBruteRidable = false; -@@ -1385,6 +1412,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1419,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = false; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -561,7 +561,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1395,6 +1423,7 @@ public class PurpurWorldConfig { +@@ -1402,6 +1430,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -569,7 +569,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean polarBearRidable = false; -@@ -1441,6 +1470,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1477,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -577,7 +577,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1454,12 +1484,14 @@ public class PurpurWorldConfig { +@@ -1461,12 +1491,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -592,7 +592,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1470,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1509,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -600,7 +600,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean salmonRidable = false; -@@ -1491,6 +1524,7 @@ public class PurpurWorldConfig { +@@ -1498,6 +1531,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -608,7 +608,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1502,6 +1536,7 @@ public class PurpurWorldConfig { +@@ -1509,6 +1543,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -616,7 +616,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean shulkerRidable = false; -@@ -1524,6 +1559,7 @@ public class PurpurWorldConfig { +@@ -1531,6 +1566,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = false; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -624,7 +624,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1534,6 +1570,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1577,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -632,7 +632,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean skeletonRidable = false; -@@ -1610,6 +1647,7 @@ public class PurpurWorldConfig { +@@ -1617,6 +1654,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -640,7 +640,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1627,6 +1665,7 @@ public class PurpurWorldConfig { +@@ -1634,6 +1672,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -648,7 +648,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean squidRidable = false; -@@ -1802,6 +1841,7 @@ public class PurpurWorldConfig { +@@ -1809,6 +1848,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -656,7 +656,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1820,6 +1860,7 @@ public class PurpurWorldConfig { +@@ -1827,6 +1867,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -664,7 +664,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean vindicatorRidable = false; -@@ -1892,6 +1933,7 @@ public class PurpurWorldConfig { +@@ -1899,6 +1940,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -672,7 +672,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1909,6 +1951,7 @@ public class PurpurWorldConfig { +@@ -1916,6 +1958,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -680,7 +680,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b } public boolean witherSkeletonRidable = false; -@@ -1980,6 +2023,7 @@ public class PurpurWorldConfig { +@@ -1987,6 +2030,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -688,7 +688,7 @@ index 881e9c611f7f5fc56af316cbf1ff73b680b6e4ce..8b97adcc2461641d89d3340084d15d0b private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1995,6 +2039,7 @@ public class PurpurWorldConfig { +@@ -2002,6 +2046,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 21f01aebf..53cf80620 100644 --- a/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,10 +22,10 @@ index 58e8905a4b98e2e1ee372b99bdc3de9815063ac9..443bf39734ba2b0a7cdf0362d415ff17 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, blockposition, data.getValue(NoteBlock.INSTRUMENT), data.getValue(NoteBlock.NOTE)); // Paper - move event into block event handler // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8b97adcc2461641d89d3340084d15d0bf235ae28..f16a377ebf9134083827862cf0455719a0b9d859 100644 +index 8371e153e55020ffd855f5cb876e3edd5e10f991..f856cdf0d762426cdd316dcaf935f6ca0b502f62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -112,6 +112,7 @@ public class PurpurWorldConfig { +@@ -115,6 +115,7 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; public boolean milkCuresBadOmen = true; @@ -33,7 +33,7 @@ index 8b97adcc2461641d89d3340084d15d0bf235ae28..f16a377ebf9134083827862cf0455719 public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; -@@ -128,6 +129,7 @@ public class PurpurWorldConfig { +@@ -131,6 +132,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 d262dd94d..ada0715c3 100644 --- a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch @@ -108,10 +108,10 @@ index 6e061bf2951f0bd86364da3129f365799edda24c..3cc4f0020829ac935c325d5df7a16aab } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f16a377ebf9134083827862cf0455719a0b9d859..863194a8f34f999965bb0e71de79bc5e50ca1671 100644 +index f856cdf0d762426cdd316dcaf935f6ca0b502f62..53a2926f0437b84c7da7fa5beee5d20d97a20966 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -111,6 +111,7 @@ public class PurpurWorldConfig { +@@ -114,6 +114,7 @@ public class PurpurWorldConfig { public boolean entitiesCanUsePortals = true; public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; @@ -119,7 +119,7 @@ index f16a377ebf9134083827862cf0455719a0b9d859..863194a8f34f999965bb0e71de79bc5e public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; -@@ -128,6 +129,7 @@ public class PurpurWorldConfig { +@@ -131,6 +132,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 a6cf5e15d..2dca796d4 100644 --- a/patches/server/0135-Farmland-trampling-changes.patch +++ b/patches/server/0135-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index d92ea9f29b9d919871662977d3e3eb41ddf2eb35..e5a3e3a4367dfb924624a913b816b3fd if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 863194a8f34f999965bb0e71de79bc5e50ca1671..7f8aa662059ebb28825380f37df45408a5d626bc 100644 +index 53a2926f0437b84c7da7fa5beee5d20d97a20966..8821ac74c9999235bbfc9e5d480f78f6c3edba35 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -444,10 +444,16 @@ public class PurpurWorldConfig { +@@ -451,10 +451,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0136-Movement-options-for-armor-stands.patch b/patches/server/0136-Movement-options-for-armor-stands.patch index b34a7bf1f..3aa8339f6 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 9dcb46959c723723a369cde50427cbee0349f5a1..6bd31ed84049bc36a060b5e01b0599bf + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f8aa662059ebb28825380f37df45408a5d626bc..22e2a2f1cbd06efcf964e7f844427b1e7cae57e1 100644 +index 8821ac74c9999235bbfc9e5d480f78f6c3edba35..a3c4433a5fe19ca6475f98214768b097e3495353 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -98,10 +98,16 @@ public class PurpurWorldConfig { +@@ -101,10 +101,16 @@ public class PurpurWorldConfig { public float armorstandStepHeight = 0.0F; public boolean armorstandSetNameVisible = false; public boolean armorstandFixNametags = false; diff --git a/patches/server/0137-Fix-stuck-in-portals.patch b/patches/server/0137-Fix-stuck-in-portals.patch index d14d2f3ec..a1911fd51 100644 --- a/patches/server/0137-Fix-stuck-in-portals.patch +++ b/patches/server/0137-Fix-stuck-in-portals.patch @@ -37,10 +37,10 @@ index e2e8128fc7a88ddf5599e6cb5dc84d5858c062e7..42822c44dbe18f1cffb269b35eb554ef this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 22e2a2f1cbd06efcf964e7f844427b1e7cae57e1..3fb8b19465851ba32c89282f80256c0c63312550 100644 +index a3c4433a5fe19ca6475f98214768b097e3495353..da34e98f9c62336a07d9ee16b36819ef840738d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -329,6 +329,7 @@ public class PurpurWorldConfig { +@@ -332,6 +332,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -48,11 +48,11 @@ index 22e2a2f1cbd06efcf964e7f844427b1e7cae57e1..3fb8b19465851ba32c89282f80256c0c private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -346,6 +347,7 @@ public class PurpurWorldConfig { +@@ -349,6 +350,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); + playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; 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 2ac6aab55..a8cca19d2 100644 --- a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch @@ -1197,10 +1197,10 @@ index 8756e0d8d0077308f5fb74bf45fe093d0f043c99..6dd8856816bebb2766203589048cc68b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8a9cf944e 100644 +index da34e98f9c62336a07d9ee16b36819ef840738d6..6d54dd2fa746e4daf5c43ecc33f5f4afc370f73a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -557,11 +557,13 @@ public class PurpurWorldConfig { +@@ -564,11 +564,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1214,7 +1214,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean batRidable = false; -@@ -576,6 +578,7 @@ public class PurpurWorldConfig { +@@ -583,6 +585,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1222,7 +1222,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -587,6 +590,7 @@ public class PurpurWorldConfig { +@@ -594,6 +597,7 @@ public class PurpurWorldConfig { set("mobs.bat.attributes.max_health", oldValue); } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); @@ -1230,7 +1230,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean beeRidable = false; -@@ -595,6 +599,7 @@ public class PurpurWorldConfig { +@@ -602,6 +606,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1238,7 +1238,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -607,6 +612,7 @@ public class PurpurWorldConfig { +@@ -614,6 +619,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1246,7 +1246,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean blazeRidable = false; -@@ -614,6 +620,7 @@ public class PurpurWorldConfig { +@@ -621,6 +627,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1254,7 +1254,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -625,6 +632,7 @@ public class PurpurWorldConfig { +@@ -632,6 +639,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1262,7 +1262,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean catRidable = false; -@@ -636,6 +644,7 @@ public class PurpurWorldConfig { +@@ -643,6 +651,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1270,7 +1270,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -655,12 +664,14 @@ public class PurpurWorldConfig { +@@ -662,12 +671,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1285,7 +1285,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -671,6 +682,7 @@ public class PurpurWorldConfig { +@@ -678,6 +689,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1293,7 +1293,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean chickenRidable = false; -@@ -679,6 +691,7 @@ public class PurpurWorldConfig { +@@ -686,6 +698,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1301,7 +1301,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -691,11 +704,13 @@ public class PurpurWorldConfig { +@@ -698,11 +711,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1315,7 +1315,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -705,6 +720,7 @@ public class PurpurWorldConfig { +@@ -712,6 +727,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1323,7 +1323,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean cowRidable = false; -@@ -713,6 +729,7 @@ public class PurpurWorldConfig { +@@ -720,6 +736,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1331,7 +1331,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -725,6 +742,7 @@ public class PurpurWorldConfig { +@@ -732,6 +749,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1339,7 +1339,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean creeperRidable = false; -@@ -734,6 +752,7 @@ public class PurpurWorldConfig { +@@ -741,6 +759,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1347,7 +1347,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -747,6 +766,7 @@ public class PurpurWorldConfig { +@@ -754,6 +773,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1355,7 +1355,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean dolphinRidable = false; -@@ -756,6 +776,7 @@ public class PurpurWorldConfig { +@@ -763,6 +783,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1363,7 +1363,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -769,6 +790,7 @@ public class PurpurWorldConfig { +@@ -776,6 +797,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1371,7 +1371,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean donkeyRidableInWater = false; -@@ -779,6 +801,7 @@ public class PurpurWorldConfig { +@@ -786,6 +808,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1379,7 +1379,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -795,6 +818,7 @@ public class PurpurWorldConfig { +@@ -802,6 +825,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1387,7 +1387,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean drownedRidable = false; -@@ -805,6 +829,7 @@ public class PurpurWorldConfig { +@@ -812,6 +836,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1395,7 +1395,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -819,11 +844,13 @@ public class PurpurWorldConfig { +@@ -826,11 +851,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1409,7 +1409,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -833,6 +860,7 @@ public class PurpurWorldConfig { +@@ -840,6 +867,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1417,7 +1417,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean enderDragonRidable = false; -@@ -842,6 +870,7 @@ public class PurpurWorldConfig { +@@ -849,6 +877,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1425,7 +1425,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -859,6 +888,7 @@ public class PurpurWorldConfig { +@@ -866,6 +895,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1433,7 +1433,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean endermanRidable = false; -@@ -868,6 +898,7 @@ public class PurpurWorldConfig { +@@ -875,6 +905,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1441,7 +1441,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -881,12 +912,14 @@ public class PurpurWorldConfig { +@@ -888,12 +919,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1456,7 +1456,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -897,6 +930,7 @@ public class PurpurWorldConfig { +@@ -904,6 +937,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1464,7 +1464,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean evokerRidable = false; -@@ -904,6 +938,7 @@ public class PurpurWorldConfig { +@@ -911,6 +945,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1472,7 +1472,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -915,6 +950,7 @@ public class PurpurWorldConfig { +@@ -922,6 +957,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1480,7 +1480,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean foxRidable = false; -@@ -924,6 +960,7 @@ public class PurpurWorldConfig { +@@ -931,6 +967,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1488,7 +1488,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -937,6 +974,7 @@ public class PurpurWorldConfig { +@@ -944,6 +981,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1496,7 +1496,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean frogRidable = false; -@@ -957,6 +995,7 @@ public class PurpurWorldConfig { +@@ -964,6 +1002,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1504,7 +1504,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -968,6 +1007,7 @@ public class PurpurWorldConfig { +@@ -975,6 +1014,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1512,7 +1512,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean giantRidable = false; -@@ -980,6 +1020,7 @@ public class PurpurWorldConfig { +@@ -987,6 +1027,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1520,7 +1520,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1000,17 +1041,20 @@ public class PurpurWorldConfig { +@@ -1007,17 +1048,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1541,7 +1541,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean goatRidable = false; -@@ -1018,17 +1062,20 @@ public class PurpurWorldConfig { +@@ -1025,17 +1069,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1562,7 +1562,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1038,6 +1085,7 @@ public class PurpurWorldConfig { +@@ -1045,6 +1092,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1570,7 +1570,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean hoglinRidable = false; -@@ -1045,6 +1093,7 @@ public class PurpurWorldConfig { +@@ -1052,6 +1100,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1578,7 +1578,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1056,6 +1105,7 @@ public class PurpurWorldConfig { +@@ -1063,6 +1112,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1586,7 +1586,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean horseRidableInWater = false; -@@ -1066,6 +1116,7 @@ public class PurpurWorldConfig { +@@ -1073,6 +1123,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1594,7 +1594,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1082,6 +1133,7 @@ public class PurpurWorldConfig { +@@ -1089,6 +1140,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1602,7 +1602,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean huskRidable = false; -@@ -1092,6 +1144,7 @@ public class PurpurWorldConfig { +@@ -1099,6 +1151,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1610,7 +1610,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1106,6 +1159,7 @@ public class PurpurWorldConfig { +@@ -1113,6 +1166,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1618,7 +1618,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean illusionerRidable = false; -@@ -1114,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1121,6 +1175,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1626,7 +1626,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1130,6 +1185,7 @@ public class PurpurWorldConfig { +@@ -1137,6 +1192,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1634,7 +1634,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean ironGolemRidable = false; -@@ -1137,6 +1193,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1200,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1642,7 +1642,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1148,6 +1205,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1212,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1650,7 +1650,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean llamaRidable = false; -@@ -1160,6 +1218,7 @@ public class PurpurWorldConfig { +@@ -1167,6 +1225,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1658,7 +1658,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1178,6 +1237,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1244,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1666,7 +1666,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean magmaCubeRidable = false; -@@ -1187,6 +1247,7 @@ public class PurpurWorldConfig { +@@ -1194,6 +1254,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1674,7 +1674,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1200,6 +1261,7 @@ public class PurpurWorldConfig { +@@ -1207,6 +1268,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1682,7 +1682,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean mooshroomRidable = false; -@@ -1207,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1214,6 +1276,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1690,7 +1690,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1218,6 +1281,7 @@ public class PurpurWorldConfig { +@@ -1225,6 +1288,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1698,7 +1698,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean muleRidableInWater = false; -@@ -1228,6 +1292,7 @@ public class PurpurWorldConfig { +@@ -1235,6 +1299,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1706,7 +1706,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1244,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1251,6 +1316,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1714,7 +1714,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean ocelotRidable = false; -@@ -1251,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1324,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1722,7 +1722,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1262,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1269,6 +1336,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1730,7 +1730,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean pandaRidable = false; -@@ -1269,6 +1337,7 @@ public class PurpurWorldConfig { +@@ -1276,6 +1344,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1738,7 +1738,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1280,6 +1349,7 @@ public class PurpurWorldConfig { +@@ -1287,6 +1356,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1746,7 +1746,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean parrotRidable = false; -@@ -1287,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1294,6 +1364,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1754,7 +1754,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1298,6 +1369,7 @@ public class PurpurWorldConfig { +@@ -1305,6 +1376,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1762,7 +1762,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean phantomRidable = false; -@@ -1330,6 +1402,7 @@ public class PurpurWorldConfig { +@@ -1337,6 +1409,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1770,7 +1770,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1370,6 +1443,7 @@ public class PurpurWorldConfig { +@@ -1377,6 +1450,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1778,7 +1778,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean pigRidable = false; -@@ -1378,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1385,6 +1459,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1786,7 +1786,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1390,6 +1465,7 @@ public class PurpurWorldConfig { +@@ -1397,6 +1472,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1794,7 +1794,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean piglinRidable = false; -@@ -1397,6 +1473,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1480,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1802,7 +1802,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1408,12 +1485,14 @@ public class PurpurWorldConfig { +@@ -1415,12 +1492,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1817,7 +1817,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1424,6 +1503,7 @@ public class PurpurWorldConfig { +@@ -1431,6 +1510,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1825,7 +1825,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean pillagerRidable = false; -@@ -1431,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1438,6 +1518,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1833,7 +1833,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1442,6 +1523,7 @@ public class PurpurWorldConfig { +@@ -1449,6 +1530,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1841,7 +1841,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean polarBearRidable = false; -@@ -1451,6 +1533,7 @@ public class PurpurWorldConfig { +@@ -1458,6 +1540,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1849,7 +1849,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1465,11 +1548,13 @@ public class PurpurWorldConfig { +@@ -1472,11 +1555,13 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1863,7 +1863,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1479,6 +1564,7 @@ public class PurpurWorldConfig { +@@ -1486,6 +1571,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1871,7 +1871,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean rabbitRidable = false; -@@ -1489,6 +1575,7 @@ public class PurpurWorldConfig { +@@ -1496,6 +1582,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1879,7 +1879,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1503,6 +1590,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1597,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1887,7 +1887,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean ravagerRidable = false; -@@ -1510,6 +1598,7 @@ public class PurpurWorldConfig { +@@ -1517,6 +1605,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1895,7 +1895,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1521,11 +1610,13 @@ public class PurpurWorldConfig { +@@ -1528,11 +1617,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1909,7 +1909,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1535,6 +1626,7 @@ public class PurpurWorldConfig { +@@ -1542,6 +1633,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1917,7 +1917,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean sheepRidable = false; -@@ -1543,6 +1635,7 @@ public class PurpurWorldConfig { +@@ -1550,6 +1642,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1925,7 +1925,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1555,12 +1648,14 @@ public class PurpurWorldConfig { +@@ -1562,12 +1655,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1940,7 +1940,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1571,6 +1666,7 @@ public class PurpurWorldConfig { +@@ -1578,6 +1673,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1948,7 +1948,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean silverfishRidable = false; -@@ -1578,6 +1674,7 @@ public class PurpurWorldConfig { +@@ -1585,6 +1681,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1956,7 +1956,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1589,12 +1686,14 @@ public class PurpurWorldConfig { +@@ -1596,12 +1693,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1971,7 +1971,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1605,6 +1704,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1711,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1979,7 +1979,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean skeletonHorseRidableInWater = true; -@@ -1615,6 +1715,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1722,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1987,7 +1987,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1630,6 +1731,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1738,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean slimeRidable = false; -@@ -1639,6 +1741,7 @@ public class PurpurWorldConfig { +@@ -1646,6 +1748,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1652,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1659,6 +1762,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean snowGolemRidable = false; -@@ -1666,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1777,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1684,6 +1789,7 @@ public class PurpurWorldConfig { +@@ -1691,6 +1796,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean squidRidable = false; -@@ -1692,6 +1798,7 @@ public class PurpurWorldConfig { +@@ -1699,6 +1805,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1704,12 +1811,14 @@ public class PurpurWorldConfig { +@@ -1711,12 +1818,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1720,12 +1829,14 @@ public class PurpurWorldConfig { +@@ -1727,12 +1836,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1736,6 +1847,7 @@ public class PurpurWorldConfig { +@@ -1743,6 +1854,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean striderRidable = false; -@@ -1744,6 +1856,7 @@ public class PurpurWorldConfig { +@@ -1751,6 +1863,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1756,6 +1869,7 @@ public class PurpurWorldConfig { +@@ -1763,6 +1876,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean tadpoleRidable = false; -@@ -1777,6 +1891,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1898,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1795,11 +1910,13 @@ public class PurpurWorldConfig { +@@ -1802,11 +1917,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1809,6 +1926,7 @@ public class PurpurWorldConfig { +@@ -1816,6 +1933,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean turtleRidable = false; -@@ -1816,6 +1934,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1941,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1827,6 +1946,7 @@ public class PurpurWorldConfig { +@@ -1834,6 +1953,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean vexRidable = false; -@@ -1834,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1841,6 +1961,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1845,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1973,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean villagerRidable = false; -@@ -1860,6 +1982,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1989,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1879,6 +2002,7 @@ public class PurpurWorldConfig { +@@ -1886,6 +2009,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean vindicatorRidable = false; -@@ -1886,6 +2010,7 @@ public class PurpurWorldConfig { +@@ -1893,6 +2017,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1897,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -1904,6 +2029,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean wanderingTraderRidable = false; -@@ -1905,6 +2031,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +2038,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1917,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1924,6 +2051,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean wardenRidable = false; -@@ -1932,6 +2060,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2067,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = false; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1942,6 +2071,7 @@ public class PurpurWorldConfig { +@@ -1949,6 +2078,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean witherRidable = false; -@@ -1952,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -1959,6 +2089,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1970,12 +2101,14 @@ public class PurpurWorldConfig { +@@ -1977,12 +2108,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1986,6 +2119,7 @@ public class PurpurWorldConfig { +@@ -1993,6 +2126,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean wolfRidable = false; -@@ -1996,6 +2130,7 @@ public class PurpurWorldConfig { +@@ -2003,6 +2137,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2014,12 +2149,14 @@ public class PurpurWorldConfig { +@@ -2021,12 +2156,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2030,6 +2167,7 @@ public class PurpurWorldConfig { +@@ -2037,6 +2174,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean zombieRidable = false; -@@ -2042,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2187,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,7 +2285,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2058,6 +2197,7 @@ public class PurpurWorldConfig { +@@ -2065,6 +2204,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2293,7 +2293,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean zombieHorseRidableInWater = false; -@@ -2069,6 +2209,7 @@ public class PurpurWorldConfig { +@@ -2076,6 +2216,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2301,7 +2301,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2085,6 +2226,7 @@ public class PurpurWorldConfig { +@@ -2092,6 +2233,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean zombieVillagerRidable = false; -@@ -2095,6 +2237,7 @@ public class PurpurWorldConfig { +@@ -2102,6 +2244,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2109,6 +2252,7 @@ public class PurpurWorldConfig { +@@ -2116,6 +2259,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 } public boolean zombifiedPiglinRidable = false; -@@ -2120,6 +2264,7 @@ public class PurpurWorldConfig { +@@ -2127,6 +2271,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 3fb8b19465851ba32c89282f80256c0c63312550..ae397e14d579d4039d9a8b70a29d96b8 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2135,5 +2280,6 @@ public class PurpurWorldConfig { +@@ -2142,5 +2287,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 f503d60b3..708373cb4 100644 --- a/patches/server/0139-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0139-Config-to-always-tame-in-Creative.patch @@ -59,10 +59,10 @@ index dd514cbf2f03b688eb4d8cd49052f1775d3adebb..ed33573a96e96d557156fbe2f725e3d6 this.navigation.stop(); this.setTarget((LivingEntity) null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae397e14d579d4039d9a8b70a29d96b8a9cf944e..eaa12080ab5a533256837436d35bccdd4d9877e8 100644 +index 6d54dd2fa746e4daf5c43ecc33f5f4afc370f73a..6e07ea5ea28e20faf79ddfc9225fe462a5f97e29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -111,6 +111,7 @@ public class PurpurWorldConfig { +@@ -114,6 +114,7 @@ public class PurpurWorldConfig { } public boolean useBetterMending = false; @@ -70,7 +70,7 @@ index ae397e14d579d4039d9a8b70a29d96b8a9cf944e..eaa12080ab5a533256837436d35bccdd public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; -@@ -129,6 +130,7 @@ public class PurpurWorldConfig { +@@ -132,6 +133,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 e3cffbf2e..0ee144a6d 100644 --- a/patches/server/0140-End-crystal-explosion-options.patch +++ b/patches/server/0140-End-crystal-explosion-options.patch @@ -52,10 +52,10 @@ index e1493079d06a91f3e14e333e2a0408725a8f5bea..59d7f4ef118b2a87d1fe9cc1dd2fea89 this.onDestroyedBy(source); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eaa12080ab5a533256837436d35bccdd4d9877e8..a03de24458a11d5a09b30d7211eab9556d5d034f 100644 +index 6e07ea5ea28e20faf79ddfc9225fe462a5f97e29..72327a0a22768828bbc04ecccf300bd7160d3305 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -451,6 +451,35 @@ public class PurpurWorldConfig { +@@ -458,6 +458,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 c859fc3f2..90ce8742c 100644 --- a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 1329de5d3e6294d2eb7b6852b8cad19f0f4dba77..6818618cd2f702e894ac4098b4eb5afc } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a03de24458a11d5a09b30d7211eab9556d5d034f..64d115cd17f9239b34d1d4f91a77c33f28da79d5 100644 +index 72327a0a22768828bbc04ecccf300bd7160d3305..e10c925f5dbbe9ac73824e12446cd86c3d8b7188 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -902,6 +902,7 @@ public class PurpurWorldConfig { +@@ -909,6 +909,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index a03de24458a11d5a09b30d7211eab9556d5d034f..64d115cd17f9239b34d1d4f91a77c33f private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -920,6 +921,7 @@ public class PurpurWorldConfig { +@@ -927,6 +928,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 a03de24458a11d5a09b30d7211eab9556d5d034f..64d115cd17f9239b34d1d4f91a77c33f } public boolean endermanRidable = false; -@@ -2114,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2123,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index a03de24458a11d5a09b30d7211eab9556d5d034f..64d115cd17f9239b34d1d4f91a77c33f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2133,6 +2136,7 @@ public class PurpurWorldConfig { +@@ -2140,6 +2143,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 a9a06c6cd..002b63207 100644 --- a/patches/server/0142-Dont-run-with-scissors.patch +++ b/patches/server/0142-Dont-run-with-scissors.patch @@ -70,7 +70,7 @@ index d437630610b3561029a88a075ab3ed0ad3abcfe2..019e095647225f3d61f0759c8787171a if (cause != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 47f4c08c354c2d683dd0959c22c68eb78920a5da..cd2474c2bb19ef83a469daf8b28af7f9c14f0d81 100644 +index f04eeaf631ccd8a4445c8401c0eb2eac51bdddc2..b0bd88370ad1693afc52a69c5d0d0446027d4189 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -177,6 +177,7 @@ public class PurpurConfig { @@ -95,10 +95,10 @@ index 47f4c08c354c2d683dd0959c22c68eb78920a5da..cd2474c2bb19ef83a469daf8b28af7f9 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 64d115cd17f9239b34d1d4f91a77c33f28da79d5..4c2104933f76b314764bbbd050d9700f70851a44 100644 +index e10c925f5dbbe9ac73824e12446cd86c3d8b7188..c5d4aeb82f41d28ec36e484faf5b453667e63723 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -191,6 +191,8 @@ public class PurpurWorldConfig { +@@ -194,6 +194,8 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -107,7 +107,7 @@ index 64d115cd17f9239b34d1d4f91a77c33f28da79d5..4c2104933f76b314764bbbd050d9700f private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -228,6 +230,8 @@ public class PurpurWorldConfig { +@@ -231,6 +233,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 bf3f6495f..d38244022 100644 --- a/patches/server/0143-One-Punch-Man.patch +++ b/patches/server/0143-One-Punch-Man.patch @@ -30,10 +30,10 @@ index 6a7a83a3fc58cbb7e97c0ba13715a8e6ea5f6de6..e9ee22f12f542f0c2d1a4ecedc891d70 if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4c2104933f76b314764bbbd050d9700f70851a44..c003e9a99467b1a10139d1ef27eaa5d853ced27f 100644 +index c5d4aeb82f41d28ec36e484faf5b453667e63723..4ec3c8caa157d4f50028122c03a80c92a6785d8c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -336,6 +336,7 @@ public class PurpurWorldConfig { +@@ -339,6 +339,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -41,11 +41,11 @@ index 4c2104933f76b314764bbbd050d9700f70851a44..c003e9a99467b1a10139d1ef27eaa5d8 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -354,6 +355,7 @@ public class PurpurWorldConfig { +@@ -357,6 +358,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); + creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index ac73c1eeb..e4b40ce12 100644 --- a/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0144-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -8,7 +8,7 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG - Endermite spawn chance diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 22d5f5aac2f4c7ce8f490d4851ef3d637a9c7d06..33bfd33aa2fdf8e9da4dbd333721eb4449fddae4 100644 +index 23f77dfc6df93ef6a70e14a7e410263d39fae2cb..b72618209be2b99221686aef0d3732785bc55357 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -69,7 +69,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { @@ -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 c003e9a99467b1a10139d1ef27eaa5d853ced27f..90ff91029c4a25c63b316865a23facafac570d15 100644 +index 4ec3c8caa157d4f50028122c03a80c92a6785d8c..57450c6f3da1289b15ecc821614018506c60601f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -193,6 +193,10 @@ public class PurpurWorldConfig { +@@ -196,6 +196,10 @@ public class PurpurWorldConfig { public List itemImmuneToLightning = new ArrayList<>(); public boolean dontRunWithScissors = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index c003e9a99467b1a10139d1ef27eaa5d853ced27f..90ff91029c4a25c63b316865a23facaf private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -232,6 +236,10 @@ public class PurpurWorldConfig { +@@ -235,6 +239,10 @@ public class PurpurWorldConfig { }); dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch index 7d52f6875..acc4f4c93 100644 --- a/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0145-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,10 +18,10 @@ index 4980b0b46e75a4bc914cb3719d8b394fbcd8c224..c74e15d4776d98f288454eb609a798a1 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 90ff91029c4a25c63b316865a23facafac570d15..9d33d2e2d9135586149497e48c1581e2ccef61f4 100644 +index 57450c6f3da1289b15ecc821614018506c60601f..bfe0bf2572a48fee700bbbb2aa756ab61827b960 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -345,6 +345,7 @@ public class PurpurWorldConfig { +@@ -348,6 +348,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,11 +29,11 @@ index 90ff91029c4a25c63b316865a23facafac570d15..9d33d2e2d9135586149497e48c1581e2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -364,6 +365,7 @@ public class PurpurWorldConfig { +@@ -367,6 +368,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); + playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch index 9a0e7846d..998d9002a 100644 --- a/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0147-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 6c9b3bb54b163cb2a6c05993e792558e983feecc..99e4c23140b85d37c7b266c2fcf57c94 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9d33d2e2d9135586149497e48c1581e2ccef61f4..2f72f95cb086ef641710022cffa9a6396842b13c 100644 +index bfe0bf2572a48fee700bbbb2aa756ab61827b960..da1ce49cf9c590aa9e838315981ee74d20679675 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -948,6 +948,8 @@ public class PurpurWorldConfig { +@@ -955,6 +955,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 9d33d2e2d9135586149497e48c1581e2ccef61f4..2f72f95cb086ef641710022cffa9a639 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -957,11 +959,17 @@ public class PurpurWorldConfig { +@@ -964,11 +966,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 720980474..f577b9887 100644 --- a/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0148-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index 99e4c23140b85d37c7b266c2fcf57c94fd19ec7c..b0c4c90ab2d532a60911d53ac4764dcf } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f72f95cb086ef641710022cffa9a6396842b13c..ba7ecc009bd808d2c93017d2bdc1511f01291bcb 100644 +index da1ce49cf9c590aa9e838315981ee74d20679675..bd3328d3b41f7514fe02aba4cba7a74745565c67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -950,6 +950,8 @@ public class PurpurWorldConfig { +@@ -957,6 +957,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 2f72f95cb086ef641710022cffa9a6396842b13c..ba7ecc009bd808d2c93017d2bdc1511f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -970,6 +972,8 @@ public class PurpurWorldConfig { +@@ -977,6 +979,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0149-Tick-fluids-config.patch b/patches/server/0149-Tick-fluids-config.patch index 17b54e8f4..7f6b3f755 100644 --- a/patches/server/0149-Tick-fluids-config.patch +++ b/patches/server/0149-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba7ecc009bd808d2c93017d2bdc1511f01291bcb..593675412750aa4aa5a9a59d034911008612f191 100644 +index bd3328d3b41f7514fe02aba4cba7a74745565c67..07a3e3522539b0f42d7f8c5c7ff15dc8c0849553 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -123,6 +123,7 @@ public class PurpurWorldConfig { +@@ -126,6 +126,7 @@ public class PurpurWorldConfig { public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; @@ -47,7 +47,7 @@ index ba7ecc009bd808d2c93017d2bdc1511f01291bcb..593675412750aa4aa5a9a59d03491100 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -142,6 +143,7 @@ public class PurpurWorldConfig { +@@ -145,6 +146,7 @@ public class PurpurWorldConfig { noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0150-Config-to-disable-Llama-caravans.patch b/patches/server/0150-Config-to-disable-Llama-caravans.patch index 2cae1209c..4b1296aa6 100644 --- a/patches/server/0150-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0150-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 708f0bccffc05fac0d711df13dd1b5e173ff6109..b7b8d7587018759fc418043694abd38f this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 593675412750aa4aa5a9a59d034911008612f191..04b3db1368a5e1a689df7f21a57af3795e650a6b 100644 +index 07a3e3522539b0f42d7f8c5c7ff15dc8c0849553..e72e6e54b35cbd06abd1394432cddfa7a97067b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1282,6 +1282,7 @@ public class PurpurWorldConfig { +@@ -1289,6 +1289,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 593675412750aa4aa5a9a59d034911008612f191..04b3db1368a5e1a689df7f21a57af379 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1301,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1308,6 +1309,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch index c54048cf6..e3ffa530c 100644 --- a/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0151-Config-to-make-Creepers-explode-on-death.patch @@ -50,10 +50,10 @@ index fa4d5579dcdaad04fa2e6cd9ae47af1154739121..bd58b7d364b5e0361e7b8c67d1b26b7f private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 04b3db1368a5e1a689df7f21a57af3795e650a6b..dd47a7aa6c6dca97cad00c0226e93a78f596114d 100644 +index e72e6e54b35cbd06abd1394432cddfa7a97067b4..c8863a6f054efa1405c80fe3294d4f88c40b935a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -802,6 +802,7 @@ public class PurpurWorldConfig { +@@ -809,6 +809,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 04b3db1368a5e1a689df7f21a57af3795e650a6b..dd47a7aa6c6dca97cad00c0226e93a78 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -816,6 +817,7 @@ public class PurpurWorldConfig { +@@ -823,6 +824,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch index fe1f3f0e7..1282ee69f 100644 --- a/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0152-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index a68bf10353e5c19adfa86c2dd6290f2386af9a9d..38bc19edc2dcfa33b3191cfa3b69f00d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd47a7aa6c6dca97cad00c0226e93a78f596114d..36cc2736e023a6c0273a511be6a11aaecb5a140a 100644 +index c8863a6f054efa1405c80fe3294d4f88c40b935a..7a7d65a6789ac298391f9d716d022534e87da654 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1666,6 +1666,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1673,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index dd47a7aa6c6dca97cad00c0226e93a78f596114d..36cc2736e023a6c0273a511be6a11aae private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1678,6 +1679,23 @@ public class PurpurWorldConfig { +@@ -1685,6 +1686,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0153-Sneak-to-bulk-process-composter.patch b/patches/server/0153-Sneak-to-bulk-process-composter.patch index 16d4a684e..d05e69c71 100644 --- a/patches/server/0153-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0153-Sneak-to-bulk-process-composter.patch @@ -75,10 +75,10 @@ index 2b1983d61fd3ed856770146de5cdfd33b4f63a46..9315c819a0c113313a8e6f97e02b4d13 int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36cc2736e023a6c0273a511be6a11aaecb5a140a..92ee2a41275c5b308b90c2e67b3802861d1f7438 100644 +index 7a7d65a6789ac298391f9d716d022534e87da654..365863c0c97508bcff36df19999b9a8357ff2425 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -462,6 +462,11 @@ public class PurpurWorldConfig { +@@ -469,6 +469,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0154-Config-for-skipping-night.patch b/patches/server/0154-Config-for-skipping-night.patch index 37fc0f8bc..92dc1ca3b 100644 --- a/patches/server/0154-Config-for-skipping-night.patch +++ b/patches/server/0154-Config-for-skipping-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 156bac4f1c6d4577a424e773cb175a2f737b99cf..8696f8035508a26497a0715e47593d92f184337d 100644 +index 5dff48719ff166990a3d5668a50d8531e59f092b..7f6488296b064f09d8b5f01e5950012158833183 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -625,7 +625,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18,10 +18,10 @@ index 156bac4f1c6d4577a424e773cb175a2f737b99cf..8696f8035508a26497a0715e47593d92 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 92ee2a41275c5b308b90c2e67b3802861d1f7438..f07c2a1a3cfa05e500e581297e663c7e00dc7496 100644 +index 365863c0c97508bcff36df19999b9a8357ff2425..8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -348,6 +348,7 @@ public class PurpurWorldConfig { +@@ -351,6 +351,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,11 +29,11 @@ index 92ee2a41275c5b308b90c2e67b3802861d1f7438..f07c2a1a3cfa05e500e581297e663c7e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -368,6 +369,7 @@ public class PurpurWorldConfig { +@@ -371,6 +372,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); + playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0155-Add-config-for-villager-trading.patch b/patches/server/0155-Add-config-for-villager-trading.patch index 5c1144e27..dd8a65e59 100644 --- a/patches/server/0155-Add-config-for-villager-trading.patch +++ b/patches/server/0155-Add-config-for-villager-trading.patch @@ -31,10 +31,10 @@ index 6dd8856816bebb2766203589048cc68b3f5c8f5c..8d6930868a42b9fc98d7672bff433ec5 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f07c2a1a3cfa05e500e581297e663c7e00dc7496..fd22332802f798142d25b90b324741ca4319ae16 100644 +index 8bb0fb83ac3e8d75f469dbb9b617ef654eb3e946..a78e8939f9b2edcfdd3122a7d6b94df852903ff4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2075,6 +2075,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2082,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index f07c2a1a3cfa05e500e581297e663c7e00dc7496..fd22332802f798142d25b90b324741ca private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2095,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -2102,6 +2103,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 f07c2a1a3cfa05e500e581297e663c7e00dc7496..fd22332802f798142d25b90b324741ca } public boolean vindicatorRidable = false; -@@ -2124,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2131,6 +2133,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index f07c2a1a3cfa05e500e581297e663c7e00dc7496..fd22332802f798142d25b90b324741ca private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2137,6 +2140,7 @@ public class PurpurWorldConfig { +@@ -2144,6 +2147,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0157-Drowning-Settings.patch b/patches/server/0157-Drowning-Settings.patch index f461c27f8..48a1b4ca7 100644 --- a/patches/server/0157-Drowning-Settings.patch +++ b/patches/server/0157-Drowning-Settings.patch @@ -40,10 +40,10 @@ index e9ee22f12f542f0c2d1a4ecedc891d708491a8eb..4f9b44c1a1421969f454cb2984d0b7ce } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd22332802f798142d25b90b324741ca4319ae16..8b3538280abad92ce8619fccfb586ac9171fa41e 100644 +index a78e8939f9b2edcfdd3122a7d6b94df852903ff4..93a89a2adc151437324ecfed1fddce5206bd6446 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -158,6 +158,15 @@ public class PurpurWorldConfig { +@@ -161,6 +161,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0158-Break-individual-slabs-when-sneaking.patch b/patches/server/0158-Break-individual-slabs-when-sneaking.patch index 62c0f46be..de45023c2 100644 --- a/patches/server/0158-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0158-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index 18b603d646081926343dea108b55d641df1c2c34..fdbbd2e5d4fd970a4593b55f16bd0f82 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8b3538280abad92ce8619fccfb586ac9171fa41e..db5560f477e416b4b7c5887efbd215af2b24815a 100644 +index 93a89a2adc151437324ecfed1fddce5206bd6446..357045ed63587346d584c880aa942d14118b3ed8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -577,6 +577,11 @@ public class PurpurWorldConfig { +@@ -584,6 +584,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch index 507d57ea3..d8233523b 100644 --- a/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0159-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3bae return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db5560f477e416b4b7c5887efbd215af2b24815a..b4a28c2e29a4709f422e5526579e71d5e500f5e0 100644 +index 357045ed63587346d584c880aa942d14118b3ed8..96ad2c1f372ee51ce234605ad728c2922d403674 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -540,6 +540,13 @@ public class PurpurWorldConfig { +@@ -547,6 +547,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch index ae8859fd6..8be9f8353 100644 --- a/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0160-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,10 +17,10 @@ index 6bd31ed84049bc36a060b5e01b0599bf5f47765c..bdb0efdcac171a92a0e05557db7d099f public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b4a28c2e29a4709f422e5526579e71d5e500f5e0..c8daa26f4f773221364ba659fe26dab9d3a4b1b6 100644 +index 96ad2c1f372ee51ce234605ad728c2922d403674..354a41fb5a2426ce7835da1f0874445806fbb059 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -101,6 +101,7 @@ public class PurpurWorldConfig { +@@ -104,6 +104,7 @@ public class PurpurWorldConfig { public boolean armorstandMovement = true; public boolean armorstandWaterMovement = true; public boolean armorstandWaterFence = true; @@ -28,7 +28,7 @@ index b4a28c2e29a4709f422e5526579e71d5e500f5e0..c8daa26f4f773221364ba659fe26dab9 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); -@@ -108,6 +109,7 @@ public class PurpurWorldConfig { +@@ -111,6 +112,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); diff --git a/patches/server/0161-Option-to-make-doors-require-redstone.patch b/patches/server/0161-Option-to-make-doors-require-redstone.patch index 178dbc11e..d3f1a5419 100644 --- a/patches/server/0161-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0161-Option-to-make-doors-require-redstone.patch @@ -67,10 +67,10 @@ index aa5289f652392515952cc10f70627ed2cdc6c398..d1d3323559f12f60ef0564e2218ca153 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c8daa26f4f773221364ba659fe26dab9d3a4b1b6..8aaef0bd5ae9ec8b6e7556b6e9d81fd16beda0cb 100644 +index 354a41fb5a2426ce7835da1f0874445806fbb059..503a1b325d2e9854108b7578a113807aa2599689 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -487,6 +487,16 @@ public class PurpurWorldConfig { +@@ -494,6 +494,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0163-Configurable-sponge-absorption.patch b/patches/server/0163-Configurable-sponge-absorption.patch index c43524bf4..49acc7b38 100644 --- a/patches/server/0163-Configurable-sponge-absorption.patch +++ b/patches/server/0163-Configurable-sponge-absorption.patch @@ -43,10 +43,10 @@ index 7304b2659eb45bc4bc9fa7c43e6ca07221d0fc73..d96e3fbc0fd4275c29e7e6154ef66e9e } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8aaef0bd5ae9ec8b6e7556b6e9d81fd16beda0cb..a7250582f5b75d6f1b6d96ab503db87dbf16980a 100644 +index 503a1b325d2e9854108b7578a113807aa2599689..4cdec578d257ba37bc361b38e7b682e936a87296 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -606,6 +606,13 @@ public class PurpurWorldConfig { +@@ -613,6 +613,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0164-Projectile-offset-config.patch b/patches/server/0164-Projectile-offset-config.patch index 2a457127b..c2e46dcc2 100644 --- a/patches/server/0164-Projectile-offset-config.patch +++ b/patches/server/0164-Projectile-offset-config.patch @@ -96,11 +96,11 @@ 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 a7250582f5b75d6f1b6d96ab503db87dbf16980a..690db14fb2b32cfa53e0864704c1ba4d7cc95c5b 100644 +index 4cdec578d257ba37bc361b38e7b682e936a87296..2795d23a5d9ffc36b37c22feda33a1b966088d39 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -417,6 +417,23 @@ public class PurpurWorldConfig { - witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); +@@ -419,6 +419,23 @@ public class PurpurWorldConfig { + } } + public double bowProjectileOffset = 1.0D; @@ -120,6 +120,6 @@ index a7250582f5b75d6f1b6d96ab503db87dbf16980a..690db14fb2b32cfa53e0864704c1ba4d + snowballProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.snowball", snowballProjectileOffset); + } + - public boolean silkTouchEnabled = false; - public String silkTouchSpawnerName = "Spawner"; - public List silkTouchSpawnerLore = new ArrayList<>(); + public int snowballDamage = -1; + private void snowballSettings() { + snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); diff --git a/patches/server/0165-Config-for-powered-rail-activation-distance.patch b/patches/server/0165-Config-for-powered-rail-activation-distance.patch index 1673e36b9..9bd7d2e1a 100644 --- a/patches/server/0165-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0165-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 690db14fb2b32cfa53e0864704c1ba4d7cc95c5b..e87624e72af07eae74763130b60d18bc746c4f55 100644 +index 2795d23a5d9ffc36b37c22feda33a1b966088d39..f6a3c452cc75668ede7c5ddde338088e214c1476 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -592,6 +592,11 @@ public class PurpurWorldConfig { +@@ -599,6 +599,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0166-Piglin-portal-spawn-modifier.patch b/patches/server/0166-Piglin-portal-spawn-modifier.patch index fbc6eac2f..a459acfb5 100644 --- a/patches/server/0166-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0166-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 65fa00b3d4d35a4125f8de444e77ac54e9e28551..dd9badfb2879def258bf725a5d802f7d pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e87624e72af07eae74763130b60d18bc746c4f55..9ffa0e46acc4d9ba325433b0fecc813280ae9afe 100644 +index f6a3c452cc75668ede7c5ddde338088e214c1476..dfaf6027f7d457004dbe2c883a7c19a8dca2a35f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1610,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1617,6 +1617,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index e87624e72af07eae74763130b60d18bc746c4f55..9ffa0e46acc4d9ba325433b0fecc8132 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1622,6 +1623,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1630,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0168-Config-for-wither-explosion-radius.patch b/patches/server/0168-Config-for-wither-explosion-radius.patch index 475e116e2..8bb4da776 100644 --- a/patches/server/0168-Config-for-wither-explosion-radius.patch +++ b/patches/server/0168-Config-for-wither-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for wither explosion radius diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index a66e9826b8283366cec5adb54f79efee47d9df22..6cf8b12e94c17a8111eef5cc0157e4df594f15dc 100644 +index 1654b08f76e02e20a8ce5de618f8def82f1feeeb..7938a81fea35ef79fb1054e7b11175738063c896 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -97,7 +97,7 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -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 9ffa0e46acc4d9ba325433b0fecc813280ae9afe..ada571cec108251e891bd80aeab1a115ed50415f 100644 +index dfaf6027f7d457004dbe2c883a7c19a8dca2a35f..6ba44b14b94bc9657ff960cce6cce9809d651cbd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2244,6 +2244,7 @@ public class PurpurWorldConfig { +@@ -2251,6 +2251,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 9ffa0e46acc4d9ba325433b0fecc813280ae9afe..ada571cec108251e891bd80aeab1a115 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2264,6 +2265,7 @@ public class PurpurWorldConfig { +@@ -2271,6 +2272,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index f1aa5b653..10eab0776 100644 --- a/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0170-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -18,11 +18,11 @@ index 32995cb5efdad0bc34ecacacb78cccd21220ba8d..ee1ed9262e4f2a8f1889feb7b2d4f64a if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { level.playSound(player, blockPos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ada571cec108251e891bd80aeab1a115ed50415f..15635f65629a79d311b379acfd1bef52ea2aa7ca 100644 +index 6ba44b14b94bc9657ff960cce6cce9809d651cbd..df63de388fa4c7ea61617ac44d30892847ace264 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -434,6 +434,21 @@ public class PurpurWorldConfig { - snowballProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.snowball", snowballProjectileOffset); +@@ -441,6 +441,21 @@ public class PurpurWorldConfig { + snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } + public List shovelTurnsBlockToGrassPath = new ArrayList<>(); diff --git a/patches/server/0171-Configurable-piston-push-limit.patch b/patches/server/0171-Configurable-piston-push-limit.patch index 1dd627ec2..d8475987d 100644 --- a/patches/server/0171-Configurable-piston-push-limit.patch +++ b/patches/server/0171-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15635f65629a79d311b379acfd1bef52ea2aa7ca..95dd923b2102df7feb799b25f5daf57d012b3f31 100644 +index df63de388fa4c7ea61617ac44d30892847ace264..261b8f1dcae70370cfe91d54bb4012827facfbcc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -602,6 +602,11 @@ public class PurpurWorldConfig { +@@ -609,6 +609,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0173-Configurable-mob-blindness.patch b/patches/server/0173-Configurable-mob-blindness.patch index cca6fbf05..059ce7f84 100644 --- a/patches/server/0173-Configurable-mob-blindness.patch +++ b/patches/server/0173-Configurable-mob-blindness.patch @@ -28,10 +28,10 @@ index 4f9b44c1a1421969f454cb2984d0b7ce21357225..5fd7fc273f7b33e24d9b1a320c0bdd76 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95dd923b2102df7feb799b25f5daf57d012b3f31..9b4560b61f61d7693477a7b25356532f8082060b 100644 +index 261b8f1dcae70370cfe91d54bb4012827facfbcc..055ccefb43a42635fde5fb8dd787506d8b6382c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -126,6 +126,7 @@ public class PurpurWorldConfig { +@@ -129,6 +129,7 @@ public class PurpurWorldConfig { public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; @@ -39,7 +39,7 @@ index 95dd923b2102df7feb799b25f5daf57d012b3f31..9b4560b61f61d7693477a7b25356532f public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -146,6 +147,7 @@ public class PurpurWorldConfig { +@@ -149,6 +150,7 @@ public class PurpurWorldConfig { persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); diff --git a/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch index 4e1ae6929..a08f27081 100644 --- a/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0175-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index bd58b7d364b5e0361e7b8c67d1b26b7f8d3906d3..b19e130b56839c261dd71bbf62b052ed if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b4560b61f61d7693477a7b25356532f8082060b..77c18bfec6f035d24059e5591fa8eea6f84cb2b9 100644 +index 055ccefb43a42635fde5fb8dd787506d8b6382c5..26f98a2ea5dd4ba9207c6991c419dedab65775f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -894,6 +894,7 @@ public class PurpurWorldConfig { +@@ -901,6 +901,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 9b4560b61f61d7693477a7b25356532f8082060b..77c18bfec6f035d24059e5591fa8eea6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -909,6 +910,7 @@ public class PurpurWorldConfig { +@@ -916,6 +917,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0176-Iron-golem-calm-anger-options.patch b/patches/server/0176-Iron-golem-calm-anger-options.patch index 5ed0c71e1..c9df7fe48 100644 --- a/patches/server/0176-Iron-golem-calm-anger-options.patch +++ b/patches/server/0176-Iron-golem-calm-anger-options.patch @@ -26,10 +26,10 @@ index e3d725e656bc5ffc5fc92133794a80799fb21c48..fdad66c329ff8945a76a944deca7751a } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77c18bfec6f035d24059e5591fa8eea6f84cb2b9..8a83080a5530824ef94c0fb68a10528fe91025b2 100644 +index 26f98a2ea5dd4ba9207c6991c419dedab65775f2..ff0d9544276d3d71a0a5fd58d0ad683f60cebd48 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1352,6 +1352,8 @@ public class PurpurWorldConfig { +@@ -1359,6 +1359,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -38,7 +38,7 @@ index 77c18bfec6f035d24059e5591fa8eea6f84cb2b9..8a83080a5530824ef94c0fb68a10528f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1364,6 +1366,8 @@ public class PurpurWorldConfig { +@@ -1371,6 +1373,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0177-Breedable-parrots.patch b/patches/server/0177-Breedable-parrots.patch index 7e79eeeaa..3ffd6042d 100644 --- a/patches/server/0177-Breedable-parrots.patch +++ b/patches/server/0177-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 11291851f11127f6781b3c77c0d59534606eb9dd..4f4df0f5459e3f62db4b15c57a536dc2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a83080a5530824ef94c0fb68a10528fe91025b2..326af738e7475d9d78fb2bb6a877b86e895b0e48 100644 +index ff0d9544276d3d71a0a5fd58d0ad683f60cebd48..f024c2671738cc80069e616b615a6842110f0ce7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1522,6 +1522,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1529,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 8a83080a5530824ef94c0fb68a10528fe91025b2..326af738e7475d9d78fb2bb6a877b86e private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1534,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1542,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0178-Configurable-powered-rail-boost-modifier.patch b/patches/server/0178-Configurable-powered-rail-boost-modifier.patch index e24660fe3..aed8d5807 100644 --- a/patches/server/0178-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0178-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index 05031a1a8b9c42ea5cdf9d8ad9b6aeebe1fc823c..8c6e5e98dd5f425bd9322c01bba06c90 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 326af738e7475d9d78fb2bb6a877b86e895b0e48..286f783fa346f27660247747fb4ff9d81d1b7471 100644 +index f024c2671738cc80069e616b615a6842110f0ce7..f4e4298c6a9b1e7de684f9c2aa7934420ad8cd27 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -265,6 +265,7 @@ public class PurpurWorldConfig { +@@ -268,6 +268,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index 326af738e7475d9d78fb2bb6a877b86e895b0e48..286f783fa346f27660247747fb4ff9d8 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -317,6 +318,7 @@ public class PurpurWorldConfig { +@@ -320,6 +321,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch index 1e7345f44..3be2503f2 100644 --- a/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0179-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index b416c8606ef53aa49458bb6f36689068bc9b54cc..d9fe4f09e48f67fd4b79528a38fcaef9 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 286f783fa346f27660247747fb4ff9d81d1b7471..c71a70be7184327acc03460900b655b2aaa3080a 100644 +index f4e4298c6a9b1e7de684f9c2aa7934420ad8cd27..ab248e6442862d136c853d8053f15709e0f05dc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -364,6 +364,7 @@ public class PurpurWorldConfig { +@@ -367,6 +367,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,11 +29,11 @@ index 286f783fa346f27660247747fb4ff9d81d1b7471..c71a70be7184327acc03460900b655b2 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 { +@@ -388,6 +389,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); + playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch index beb9d6d3b..9200046f7 100644 --- a/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0180-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c71a70be7184327acc03460900b655b2aaa3080a..9f145c5d4564033a3555c41bc7500df31bf92ace 100644 +index ab248e6442862d136c853d8053f15709e0f05dc3..d945a8adf68cc7a8a84ce5d0461fc861eb75d305 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -535,6 +535,11 @@ public class PurpurWorldConfig { +@@ -542,6 +542,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch index a23e4ca80..6b1ceee8b 100644 --- a/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0183-ShulkerBox-allow-oversized-stacks.patch @@ -35,10 +35,10 @@ index 0ca6d495005bded447c3f940dfd571a003301cb0..f4c47f7a7f2572dedbaee4890c98e1f3 blockEntity.saveToItem(itemStack); if (shulkerBoxBlockEntity.hasCustomName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f145c5d4564033a3555c41bc7500df31bf92ace..b7967ccd13ff0bfb5ac687a57de4409d05d30bd7 100644 +index d945a8adf68cc7a8a84ce5d0461fc861eb75d305..d3c324e1192871540cc9568b70d519ae439c2a4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -644,6 +644,11 @@ public class PurpurWorldConfig { +@@ -651,6 +651,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch index 9cdf7d6ff..bf68db32c 100644 --- a/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0184-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7967ccd13ff0bfb5ac687a57de4409d05d30bd7..0576d3523a90c835a99485306ed032b0f28d6fd8 100644 +index d3c324e1192871540cc9568b70d519ae439c2a4b..974914ca4c7e172570a996f695e949d4b714d7b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -754,6 +754,8 @@ public class PurpurWorldConfig { +@@ -761,6 +761,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index b7967ccd13ff0bfb5ac687a57de4409d05d30bd7..0576d3523a90c835a99485306ed032b0 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -767,6 +769,8 @@ public class PurpurWorldConfig { +@@ -774,6 +776,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0186-Config-MobEffect-by-world.patch b/patches/server/0186-Config-MobEffect-by-world.patch index 77d5cf2d4..91364b485 100644 --- a/patches/server/0186-Config-MobEffect-by-world.patch +++ b/patches/server/0186-Config-MobEffect-by-world.patch @@ -40,10 +40,10 @@ index 17ffab92f4ae2c06fa9f9249a474d4b6c9c55090..bb15cf2aa35ce8754bba56f5b312d92b ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0576d3523a90c835a99485306ed032b0f28d6fd8..d9a1f1cdeb0c0b65edb11332fdc88b15080ac129 100644 +index 974914ca4c7e172570a996f695e949d4b714d7b7..a0c47d3afcf643a4288e0bf166cc921a8d3d3c42 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -321,6 +321,21 @@ public class PurpurWorldConfig { +@@ -324,6 +324,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0187-Beacon-Activation-Range-Configurable.patch b/patches/server/0187-Beacon-Activation-Range-Configurable.patch index 9afab9bc3..9d5adf316 100644 --- a/patches/server/0187-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0187-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 5f6eeb36f57bd342b18590c8f0ffb668d2bf273c..59259dd3d8d8fd02c02d7435a4443779 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d9a1f1cdeb0c0b65edb11332fdc88b15080ac129..8df2cf319c4804dc3de2f210609296be596ad131 100644 +index a0c47d3afcf643a4288e0bf166cc921a8d3d3c42..9d146065ca37c4af4fcf8ed32eb997ebb7d4cb64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -507,6 +507,17 @@ public class PurpurWorldConfig { +@@ -514,6 +514,17 @@ public class PurpurWorldConfig { anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); } diff --git a/patches/server/0188-Add-toggle-for-sand-duping-fix.patch b/patches/server/0188-Add-toggle-for-sand-duping-fix.patch index ba54bb813..ef5115b32 100644 --- a/patches/server/0188-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0188-Add-toggle-for-sand-duping-fix.patch @@ -27,10 +27,10 @@ index ef07967b64180c54338b8fb2ba1780adec87f333..71e4178bf7d553141719c8a6cb7488d3 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8df2cf319c4804dc3de2f210609296be596ad131..df6569a4d1d023143e14d5be694c9e2283ed550f 100644 +index 9d146065ca37c4af4fcf8ed32eb997ebb7d4cb64..ec6e01ef3b3d20dba9b2c55cc6370c780b1105a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -670,6 +670,11 @@ public class PurpurWorldConfig { +@@ -677,6 +677,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch index 5b70b5ca9..ba384d3d1 100644 --- a/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0189-Add-toggle-for-end-portal-safe-teleporting.patch @@ -45,10 +45,10 @@ index 04bae5085756842ce88710646a17e9dc1aad5994..e7658fa9806701505e15cbf1d28ea3bd entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df6569a4d1d023143e14d5be694c9e2283ed550f..5317dc8eab6b3ee49d7514bf9d4e06c2cb7c3cf5 100644 +index ec6e01ef3b3d20dba9b2c55cc6370c780b1105a6..8485e62dabd88df10635b9e1b58aae1c5d0b5bb7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -621,6 +621,11 @@ public class PurpurWorldConfig { +@@ -628,6 +628,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch index 06aa909df..e4fbfdd6e 100644 --- a/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch +++ b/patches/server/0192-Burp-after-eating-food-fills-hunger-bar-completely.patch @@ -55,10 +55,10 @@ index 2934b6de1f1fb914a532ee20184df99d1acd8e65..65421cfff05c0493f5fef1bdff03172c public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5317dc8eab6b3ee49d7514bf9d4e06c2cb7c3cf5..3f027244cc41ce2ab28425b92b15ba752d1d77e0 100644 +index 8485e62dabd88df10635b9e1b58aae1c5d0b5bb7..148876c6abc1104074e99e9d9080689ab93437b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -380,6 +380,7 @@ public class PurpurWorldConfig { +@@ -383,6 +383,7 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -66,11 +66,11 @@ index 5317dc8eab6b3ee49d7514bf9d4e06c2cb7c3cf5..3f027244cc41ce2ab28425b92b15ba75 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -402,6 +403,7 @@ public class PurpurWorldConfig { +@@ -405,6 +406,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); + playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0195-Shulker-spawn-from-bullet-options.patch b/patches/server/0195-Shulker-spawn-from-bullet-options.patch index 5e78b3131..e143a0853 100644 --- a/patches/server/0195-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0195-Shulker-spawn-from-bullet-options.patch @@ -61,10 +61,10 @@ index 2d3dbc228a6a7b88167a36ba739d9eb2f03472ba..7621978ab3d90d58e8b7c6807e0e0519 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f027244cc41ce2ab28425b92b15ba752d1d77e0..fd2d7270179fa111ea1dbf2f9f8447cd459b33e0 100644 +index 148876c6abc1104074e99e9d9080689ab93437b7..3010197f8f1c8666afbe3da6221ea115f090cf15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1898,6 +1898,11 @@ public class PurpurWorldConfig { +@@ -1905,6 +1905,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -76,7 +76,7 @@ index 3f027244cc41ce2ab28425b92b15ba752d1d77e0..fd2d7270179fa111ea1dbf2f9f8447cd private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1909,6 +1914,11 @@ public class PurpurWorldConfig { +@@ -1916,6 +1921,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch index 188bf1052..00f415f9d 100644 --- a/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0196-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 21c9733065f6ecb265e4df8a7080697356c796ac..1ce51253b755c2ea4dca94c567935b07 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT, CreativeModeTab.TAB_DECORATIONS); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd2d7270179fa111ea1dbf2f9f8447cd459b33e0..72712004bd5d176e0b7857de5b07487c088259fb 100644 +index 3010197f8f1c8666afbe3da6221ea115f090cf15..c66c9bb795b00f50137376e34b080e4656ab6322 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -212,6 +212,7 @@ public class PurpurWorldConfig { +@@ -215,6 +215,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index fd2d7270179fa111ea1dbf2f9f8447cd459b33e0..72712004bd5d176e0b7857de5b07487c private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -255,6 +256,7 @@ public class PurpurWorldConfig { +@@ -258,6 +259,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0197-Option-to-make-drowned-break-doors.patch b/patches/server/0197-Option-to-make-drowned-break-doors.patch index 5e21126b9..854a1147f 100644 --- a/patches/server/0197-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0197-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 037d77b47d0be69dfeda01f4a0d52ad72aea2c8d..6e0a575a95ac0bcbc9e3909178ea566a @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72712004bd5d176e0b7857de5b07487c088259fb..bcbfa86ea0df23d72c3117b9039f29907ff06a40 100644 +index c66c9bb795b00f50137376e34b080e4656ab6322..bd34d3fef3ad9631caaf5b04c6c46c5f1becea8a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1032,6 +1032,7 @@ public class PurpurWorldConfig { +@@ -1039,6 +1039,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 72712004bd5d176e0b7857de5b07487c088259fb..bcbfa86ea0df23d72c3117b9039f2990 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1047,6 +1048,7 @@ public class PurpurWorldConfig { +@@ -1054,6 +1055,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0198-Configurable-hunger-starvation-damage.patch b/patches/server/0198-Configurable-hunger-starvation-damage.patch index 01b3d16a8..88db10817 100644 --- a/patches/server/0198-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0198-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 65421cfff05c0493f5fef1bdff03172c9e33f33e..63584faeec4e5013be7a377e3203ec16 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bcbfa86ea0df23d72c3117b9039f29907ff06a40..901da4d174761d3fded38c9228d738934f338998 100644 +index bd34d3fef3ad9631caaf5b04c6c46c5f1becea8a..481f59adbd5c93629a681988cf288e267e8982cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2546,4 +2546,9 @@ public class PurpurWorldConfig { +@@ -2553,4 +2553,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0200-Armor-click-equip-options.patch b/patches/server/0200-Armor-click-equip-options.patch index e26befd57..4b66f14ff 100644 --- a/patches/server/0200-Armor-click-equip-options.patch +++ b/patches/server/0200-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 901da4d174761d3fded38c9228d738934f338998..027378dd64551ca29422235f804aa21e3546d7c8 100644 +index 481f59adbd5c93629a681988cf288e267e8982cb..bcb891f2530bcbfd7860e9f2bdf0a4b8e4a145f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -383,6 +383,8 @@ public class PurpurWorldConfig { +@@ -386,6 +386,8 @@ public class PurpurWorldConfig { public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; public boolean playerBurpWhenFull = false; @@ -70,7 +70,7 @@ index 901da4d174761d3fded38c9228d738934f338998..027378dd64551ca29422235f804aa21e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -406,6 +408,8 @@ public class PurpurWorldConfig { +@@ -409,6 +411,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); @@ -78,4 +78,4 @@ index 901da4d174761d3fded38c9228d738934f338998..027378dd64551ca29422235f804aa21e + playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0203-Tool-actionable-options.patch b/patches/server/0203-Tool-actionable-options.patch index b5efefa44..7fdf9984d 100644 --- a/patches/server/0203-Tool-actionable-options.patch +++ b/patches/server/0203-Tool-actionable-options.patch @@ -111,10 +111,10 @@ index 180aec596110309aade13d2080f8824d152b07cb..bf0e1f481b4c81f0663366bbe597b066 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 027378dd64551ca29422235f804aa21e3546d7c8..5ac1b7709a5fe26ad07b99671913e339a9a8288e 100644 +index bcb891f2530bcbfd7860e9f2bdf0a4b8e4a145f4..67344a5ae42d670ff8e86f62714b637d5252c160 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -510,6 +510,153 @@ public class PurpurWorldConfig { +@@ -517,6 +517,153 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch index ebfbaa4a8..7d3a0debb 100644 --- a/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0207-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -19,10 +19,10 @@ index 62d6c5b7590ff4faef5d8c7a8be03155b7338480..72d94c79db5a6d0d41220b34ba6a1787 CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ac1b7709a5fe26ad07b99671913e339a9a8288e..159e6247d6499cba126b7010e7b61164bf0d6d0f 100644 +index 67344a5ae42d670ff8e86f62714b637d5252c160..f228e69e8614039406297522199dd2733f65014a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -213,6 +213,7 @@ public class PurpurWorldConfig { +@@ -216,6 +216,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -30,7 +30,7 @@ index 5ac1b7709a5fe26ad07b99671913e339a9a8288e..159e6247d6499cba126b7010e7b61164 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -257,6 +258,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0208-Silk-touchable-budding-amethyst.patch b/patches/server/0208-Silk-touchable-budding-amethyst.patch index ee15f95de..b3ef7da94 100644 --- a/patches/server/0208-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0208-Silk-touchable-budding-amethyst.patch @@ -24,10 +24,10 @@ index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a90 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 159e6247d6499cba126b7010e7b61164bf0d6d0f..98bfdf9f8845ed919f2f6f062d4fc2eff95ddbe7 100644 +index f228e69e8614039406297522199dd2733f65014a..25556f3d399e9c9f0e28016a80f332b2b3e7a67c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -691,6 +691,11 @@ public class PurpurWorldConfig { +@@ -698,6 +698,11 @@ public class PurpurWorldConfig { } } @@ -39,7 +39,7 @@ index 159e6247d6499cba126b7010e7b61164bf0d6d0f..98bfdf9f8845ed919f2f6f062d4fc2ef public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2705,3 +2710,4 @@ public class PurpurWorldConfig { +@@ -2712,3 +2717,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0209-Big-dripleaf-tilt-delay.patch b/patches/server/0209-Big-dripleaf-tilt-delay.patch index 8acc71d3c..6e80deae6 100644 --- a/patches/server/0209-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0209-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 63aa6b82ba21ec8e8f362b390063e4e275a979a5..81ed6e69494337f402a6d9f854fb26fa if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98bfdf9f8845ed919f2f6f062d4fc2eff95ddbe7..71d969a78d14948ca7ed5b730a900692e5ee4bf2 100644 +index 25556f3d399e9c9f0e28016a80f332b2b3e7a67c..897bbfd91828124074a996dc63d17a2a7a196d2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -691,6 +691,22 @@ public class PurpurWorldConfig { +@@ -698,6 +698,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0210-Player-ridable-in-water-option.patch b/patches/server/0210-Player-ridable-in-water-option.patch index b6601eb69..636232ba4 100644 --- a/patches/server/0210-Player-ridable-in-water-option.patch +++ b/patches/server/0210-Player-ridable-in-water-option.patch @@ -21,10 +21,10 @@ index 1eb57eeaec24570cade410f40de9e8c244734217..870e794392b94d140db6d5650c3e7ae3 if (!this.isPassenger() && this.onGround && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71d969a78d14948ca7ed5b730a900692e5ee4bf2..e125753d1d5d592b623f141d87966862b6d9846e 100644 +index 897bbfd91828124074a996dc63d17a2a7a196d2c..c475c40279368e61683a338a8e9d8cacf14ed2ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -387,6 +387,7 @@ public class PurpurWorldConfig { +@@ -390,6 +390,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerArmorSwapping = false; public boolean playerArmorSwappingCreativeMakesCopy = true; @@ -32,11 +32,11 @@ index 71d969a78d14948ca7ed5b730a900692e5ee4bf2..e125753d1d5d592b623f141d87966862 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -412,6 +413,7 @@ public class PurpurWorldConfig { +@@ -415,6 +416,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); + playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index a411ca2a4..e5b27b679 100644 --- a/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0211-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -18,10 +18,10 @@ index b0c4c90ab2d532a60911d53ac4764dcf49fff6c8..372400d5ce38407b577e5ee403ce39fc boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e125753d1d5d592b623f141d87966862b6d9846e..bdf2ebb27cc67da95930c9971de3cf2e66bb14d3 100644 +index c475c40279368e61683a338a8e9d8cacf14ed2ef..4cc629ee614c4ff43181af6992786c4eac190f5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1285,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1292,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -29,7 +29,7 @@ index e125753d1d5d592b623f141d87966862b6d9846e..bdf2ebb27cc67da95930c9971de3cf2e private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1307,6 +1308,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1315,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0212-Add-compass-command.patch b/patches/server/0212-Add-compass-command.patch index 48e90a6af..ee2acbafa 100644 --- a/patches/server/0212-Add-compass-command.patch +++ b/patches/server/0212-Add-compass-command.patch @@ -59,7 +59,7 @@ index 3927087d5cea154c2e8dba370fea47bdba65d05d..a90ec8363a41033db421d42896e7203e // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5665689a93b3feb1c3622c9447f07a22cb57bbe8..312d29bc2fff8553fd2b58b0b89670d336bcc79d 100644 +index 021d2ba371303bc5de0d0b30dfc5332de39d179f..6c158fefeef4634d41816fe00c721cefaf7d7455 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -263,6 +263,11 @@ public class PurpurConfig { @@ -89,10 +89,10 @@ index 5665689a93b3feb1c3622c9447f07a22cb57bbe8..312d29bc2fff8553fd2b58b0b89670d3 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 bdf2ebb27cc67da95930c9971de3cf2e66bb14d3..1686fb653f35cfd42364a61012b47724ccea115f 100644 +index 4cc629ee614c4ff43181af6992786c4eac190f5a..26d9943ada0bec112c5fc1ccc67d1af2a5308001 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -214,6 +214,7 @@ public class PurpurWorldConfig { +@@ -217,6 +217,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index bdf2ebb27cc67da95930c9971de3cf2e66bb14d3..1686fb653f35cfd42364a61012b47724 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -259,6 +260,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch b/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch index 06dcca930..1a8826e2b 100644 --- a/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch +++ b/patches/server/0213-Config-to-prevent-horses-from-standing-with-riders.patch @@ -20,10 +20,10 @@ index a1ffa88c3796df2973a2fc0aeafda5f78208bf85..7466c437b2e996f16a08aaefc5c2b7cb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1686fb653f35cfd42364a61012b47724ccea115f..cbfaebf03d9de4086306e7feac0f894e2ec0a23f 100644 +index 26d9943ada0bec112c5fc1ccc67d1af2a5308001..f090de52394d0958cf73458db374f68fb75f5c58 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1515,6 +1515,7 @@ public class PurpurWorldConfig { +@@ -1522,6 +1522,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -31,7 +31,7 @@ index 1686fb653f35cfd42364a61012b47724ccea115f..cbfaebf03d9de4086306e7feac0f894e private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1532,6 +1533,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1540,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); diff --git a/patches/server/0214-Toggle-for-kinetic-damage.patch b/patches/server/0214-Toggle-for-kinetic-damage.patch index 51db557a3..6a77b4278 100644 --- a/patches/server/0214-Toggle-for-kinetic-damage.patch +++ b/patches/server/0214-Toggle-for-kinetic-damage.patch @@ -17,10 +17,10 @@ index 6959ea94bc2efc4417345365be4c506ee11c60bf..6e7af1939df4ff99d6d4645f7ed27011 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cbfaebf03d9de4086306e7feac0f894e2ec0a23f..1d1151f341f005be3ee4c4ec8cce04491628c331 100644 +index f090de52394d0958cf73458db374f68fb75f5c58..00df79d18755aa199f6dab25402aa30d8781a0bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -176,12 +176,14 @@ public class PurpurWorldConfig { +@@ -179,12 +179,14 @@ public class PurpurWorldConfig { public boolean elytraIgnoreUnbreaking = false; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0215-Add-Option-for-disable-observer-clocks.patch b/patches/server/0215-Add-Option-for-disable-observer-clocks.patch index 34ac0cef1..b95a171fc 100644 --- a/patches/server/0215-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0215-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index 25c2c44bde443ab08734253ed7c98c81a345e573..e6a8c78a1a76241bcc6f0dee07838cb4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d1151f341f005be3ee4c4ec8cce04491628c331..994bf424da78ac632e7967b14c2dabda4d4be00a 100644 +index 00df79d18755aa199f6dab25402aa30d8781a0bc..63a5e3cf2f185b07e053b162a890389732865f98 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -359,6 +359,11 @@ public class PurpurWorldConfig { +@@ -362,6 +362,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch index 269152c17..c14dedcfa 100644 --- a/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0216-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index c90cf19a4c29aa33c96a67bfab24cbbb56d783da..54b5749a5e40ed9042af1c4904afcdc4 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 994bf424da78ac632e7967b14c2dabda4d4be00a..eeb6d629c945b8c3066a344ddd19ce665a454fc1 100644 +index 63a5e3cf2f185b07e053b162a890389732865f98..bd31781285e5df2122ca0b499dca997e092e7cea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2691,6 +2691,8 @@ public class PurpurWorldConfig { +@@ -2698,6 +2698,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 994bf424da78ac632e7967b14c2dabda4d4be00a..eeb6d629c945b8c3066a344ddd19ce66 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2706,6 +2708,8 @@ public class PurpurWorldConfig { +@@ -2713,6 +2715,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0217-Option-for-sponges-to-work-on-lava.patch b/patches/server/0217-Option-for-sponges-to-work-on-lava.patch index 526995d3a..33ae03289 100644 --- a/patches/server/0217-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0217-Option-for-sponges-to-work-on-lava.patch @@ -18,10 +18,10 @@ index d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829..df04a571ebd3c04bc7b58c1ee5661a1f ++i; if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eeb6d629c945b8c3066a344ddd19ce665a454fc1..2bfd21b5dc2b96e68c90dff93ec34bb8c90da333 100644 +index bd31781285e5df2122ca0b499dca997e092e7cea..862b8f58b3da812f33406ae3b1858809c3c0b196 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -891,9 +891,11 @@ public class PurpurWorldConfig { +@@ -898,9 +898,11 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 64; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch index 0058b2854..717dd368d 100644 --- a/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0218-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 01397e9daf03a308707cc7e2bb85db68137d3021..0dd31e45252d54b8bfa3645b25c984de // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); //int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2bfd21b5dc2b96e68c90dff93ec34bb8c90da333..67f196626ee04c0366e3cd50413d4bb40016a870 100644 +index 862b8f58b3da812f33406ae3b1858809c3c0b196..2e75e7c7317cb9c57cb3f36e38d9334fa7e9378a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2536,6 +2536,7 @@ public class PurpurWorldConfig { +@@ -2543,6 +2543,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 2bfd21b5dc2b96e68c90dff93ec34bb8c90da333..67f196626ee04c0366e3cd50413d4bb4 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2557,6 +2558,7 @@ public class PurpurWorldConfig { +@@ -2564,6 +2565,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch index ddcb82474..7ea7280da 100644 --- a/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0219-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index 0fbabb84ef13e68b12212d9bfeb885c78893c116..56fa0e377b20ed063e47358be9e6bba8 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 67f196626ee04c0366e3cd50413d4bb40016a870..1fd330da3aca6231a00b735691a8fc81229b87d0 100644 +index 2e75e7c7317cb9c57cb3f36e38d9334fa7e9378a..29d09394eb6ee9fc7f412ffd9b0423b58a8b11fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -723,6 +723,11 @@ public class PurpurWorldConfig { +@@ -730,6 +730,11 @@ public class PurpurWorldConfig { buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch); } diff --git a/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch index c3d8ed55b..662c2494f 100644 --- a/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0220-Config-to-remove-curse-of-binding-with-weakness.patch @@ -26,10 +26,10 @@ index 12643d60f4bfa8e07901aa0a556a1a245b0a7fb4..96a4a9f9b673a07630493290f5d5315e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1fd330da3aca6231a00b735691a8fc81229b87d0..0cff6adbaeba661cec9727cbbc32765dec33e3f3 100644 +index 29d09394eb6ee9fc7f412ffd9b0423b58a8b11fc..497696a008d6508aee4f0facb36258af48c3fec2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -397,6 +397,7 @@ public class PurpurWorldConfig { +@@ -400,6 +400,7 @@ public class PurpurWorldConfig { public boolean playerArmorSwapping = false; public boolean playerArmorSwappingCreativeMakesCopy = true; public boolean playerRidableInWater = false; @@ -37,11 +37,11 @@ index 1fd330da3aca6231a00b735691a8fc81229b87d0..0cff6adbaeba661cec9727cbbc32765d private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -423,6 +424,7 @@ public class PurpurWorldConfig { +@@ -426,6 +427,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); + playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0221-Conduit-behavior-configuration.patch b/patches/server/0221-Conduit-behavior-configuration.patch index 949b4b0e8..de1b27038 100644 --- a/patches/server/0221-Conduit-behavior-configuration.patch +++ b/patches/server/0221-Conduit-behavior-configuration.patch @@ -44,10 +44,10 @@ index 05eab04e4aec4151018f25b59f92ddbbb4c09f87..8db906e021ca57c7f2a1e7002647e5c5 } CraftEventFactory.blockDamage = null; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0cff6adbaeba661cec9727cbbc32765dec33e3f3..1b2639f7d0995ef4cc1c02fbe02ce3d3711d348b 100644 +index 497696a008d6508aee4f0facb36258af48c3fec2..ce5c9920d5b4f8cbd65d00db4e664e3fc847aabb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2755,5 +2755,28 @@ public class PurpurWorldConfig { +@@ -2762,5 +2762,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0222-Cauldron-fill-chances.patch b/patches/server/0222-Cauldron-fill-chances.patch index 8fe1f61e6..da9bb0d1c 100644 --- a/patches/server/0222-Cauldron-fill-chances.patch +++ b/patches/server/0222-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index ef15adf66ea994d15a7d2718dd3d22cd07c31f98..dd87e3efdeafb211c1e44f8dc3348830 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b2639f7d0995ef4cc1c02fbe02ce3d3711d348b..35f5784bc147836f95e6136f1eed6ce228cfc920 100644 +index ce5c9920d5b4f8cbd65d00db4e664e3fc847aabb..f94960a51c983cf66efcfed7622c7c515ccada29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2778,5 +2778,16 @@ public class PurpurWorldConfig { +@@ -2785,5 +2785,16 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch index 39df8d125..372e9356a 100644 --- a/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0223-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index ede91a2fbe67480d2b6bcdeb776f87da0b69bdae..444bec169c0cd5fe1a23f1d14fae1a10 if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35f5784bc147836f95e6136f1eed6ce228cfc920..80b9246d659543381ea378430c8bd154c9d92d72 100644 +index f94960a51c983cf66efcfed7622c7c515ccada29..fc3847897170994bbd4e8908a6740a7030048dc8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -132,6 +132,7 @@ public class PurpurWorldConfig { +@@ -135,6 +135,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,7 +29,7 @@ index 35f5784bc147836f95e6136f1eed6ce228cfc920..80b9246d659543381ea378430c8bd154 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -153,6 +154,7 @@ public class PurpurWorldConfig { +@@ -156,6 +157,7 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0224-Shulker-change-color-with-dye.patch b/patches/server/0224-Shulker-change-color-with-dye.patch index 50508f349..b22670c47 100644 --- a/patches/server/0224-Shulker-change-color-with-dye.patch +++ b/patches/server/0224-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index ada070d8e1a2d328c02455eb9e5ad056046bcd0a..691b59f784e34b061ea156a3236c09f2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 80b9246d659543381ea378430c8bd154c9d92d72..c1d32420041d78aaf3ba5c5ba11191ed955578e1 100644 +index fc3847897170994bbd4e8908a6740a7030048dc8..3b2bfa5a72e4b0b5e6bb9e9f88645eda50877879 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2107,6 +2107,7 @@ public class PurpurWorldConfig { +@@ -2114,6 +2114,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 80b9246d659543381ea378430c8bd154c9d92d72..c1d32420041d78aaf3ba5c5ba11191ed private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2123,6 +2124,7 @@ public class PurpurWorldConfig { +@@ -2130,6 +2131,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index cf7c2942e..cd3e7feda 100644 --- a/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0227-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5de5e89d8ef092cc9de87fb53f363a5136426907..9b425b9443e491dc832548f5dc733bf3d29da801 100644 +index 9a3ec0c8f1eacb06d383b666c567853acf8204e4..692fa17277cf89aebb3d98269e6b0e8271feb0ba 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1143,6 +1143,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -25,10 +25,10 @@ index 5de5e89d8ef092cc9de87fb53f363a5136426907..9b425b9443e491dc832548f5dc733bf3 // 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 c1d32420041d78aaf3ba5c5ba11191ed955578e1..031f5a908707b54ecac0f9b55025c9d08444dc92 100644 +index 3b2bfa5a72e4b0b5e6bb9e9f88645eda50877879..12038651b988ec3b67feff352a494dc2a99b843a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -133,6 +133,8 @@ public class PurpurWorldConfig { +@@ -136,6 +136,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index c1d32420041d78aaf3ba5c5ba11191ed955578e1..031f5a908707b54ecac0f9b55025c9d0 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -155,6 +157,8 @@ public class PurpurWorldConfig { +@@ -158,6 +160,8 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 2ef45a7b5..c36ffee81 100644 --- a/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0228-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index bcc1ce196c1dbf60cf6ae73d95766dc41ed22012..ad0ee0d333ffd862fe74ac3a097c51d5 public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS))); public static final Block BIG_DRIPLEAF = register("big_dripleaf", new BigDripleafBlock(BlockBehaviour.Properties.of(Material.PLANT).strength(0.1F).sound(SoundType.BIG_DRIPLEAF))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 031f5a908707b54ecac0f9b55025c9d08444dc92..be6c531fa6f53bdf53040f8b6e1b7f13bd7e17ca 100644 +index 12038651b988ec3b67feff352a494dc2a99b843a..db2a2a2845cf9155875d0ae1a11fce0dc2b6b4e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -683,6 +683,11 @@ public class PurpurWorldConfig { +@@ -690,6 +690,11 @@ public class PurpurWorldConfig { anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); } @@ -60,7 +60,7 @@ index 031f5a908707b54ecac0f9b55025c9d08444dc92..be6c531fa6f53bdf53040f8b6e1b7f13 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -812,6 +817,11 @@ public class PurpurWorldConfig { +@@ -819,6 +824,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch index a67cfca26..1a07b5b44 100644 --- a/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0229-Shift-right-click-to-use-exp-for-mending.patch @@ -48,10 +48,10 @@ index aa41e4aed283297b923985f7ceee914cb62666a9..4d61504698a54af354fdf047426f8777 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index be6c531fa6f53bdf53040f8b6e1b7f13bd7e17ca..da7bace72794ae1188f18462f12e48a86b49ee5f 100644 +index db2a2a2845cf9155875d0ae1a11fce0dc2b6b4e7..95a643519ce3e4ef376acc2e8e2456595583db38 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -404,6 +404,7 @@ public class PurpurWorldConfig { +@@ -407,6 +407,7 @@ public class PurpurWorldConfig { public boolean playerArmorSwappingCreativeMakesCopy = true; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,11 +59,11 @@ index be6c531fa6f53bdf53040f8b6e1b7f13bd7e17ca..da7bace72794ae1188f18462f12e48a8 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -431,6 +432,7 @@ public class PurpurWorldConfig { +@@ -434,6 +435,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); + shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch index d22baabfb..ede83cfae 100644 --- a/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0230-Dolphins-naturally-aggressive-to-players-chance.patch @@ -47,10 +47,10 @@ index 1e95fa49a5dc8b756756924cbaf12d49ad33a274..89e3eec134868f727d776ee8144b2915 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da7bace72794ae1188f18462f12e48a86b49ee5f..51c1560a9169f5faad90421134d33af13b272d50 100644 +index 95a643519ce3e4ef376acc2e8e2456595583db38..8eeeef68f436f2e6a215c2aae89a2da5ab602c80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1191,6 +1191,7 @@ public class PurpurWorldConfig { +@@ -1198,6 +1198,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index da7bace72794ae1188f18462f12e48a86b49ee5f..51c1560a9169f5faad90421134d33af1 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1205,6 +1206,7 @@ public class PurpurWorldConfig { +@@ -1212,6 +1213,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch index e97e8be8c..33761080a 100644 --- a/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0231-Cows-naturally-aggressive-to-players-chance.patch @@ -59,10 +59,10 @@ index 00eec3f51e62858e7b85b3340e76bf66bfd4370f..b5002526f20fb8ae52783a6ba95ccd2d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51c1560a9169f5faad90421134d33af13b272d50..b88a695d1521ae3a2dbf1e1bba9f79a9e66abcda 100644 +index 8eeeef68f436f2e6a215c2aae89a2da5ab602c80..e152a7a12566bb43e34f4cdd1f3c36a23b168c1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1140,7 +1140,14 @@ public class PurpurWorldConfig { +@@ -1147,7 +1147,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -77,7 +77,7 @@ index 51c1560a9169f5faad90421134d33af13b272d50..b88a695d1521ae3a2dbf1e1bba9f79a9 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1153,6 +1160,8 @@ public class PurpurWorldConfig { +@@ -1160,6 +1167,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch index d26b1704d..570117b7d 100644 --- a/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0232-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 89435b0742064d77c7cc8bb871949acc9852f2c0..f04778287545e9619ee0359f1e51151d this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level.getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b88a695d1521ae3a2dbf1e1bba9f79a9e66abcda..a7870ac5214814d5b109b1b9534adcac8f4ec671 100644 +index e152a7a12566bb43e34f4cdd1f3c36a23b168c1e..56e64064e562caf69765e42781b83b9260db5f47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -702,11 +702,13 @@ public class PurpurWorldConfig { +@@ -709,11 +709,13 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; diff --git a/patches/server/0233-Halloween-options-and-optimizations.patch b/patches/server/0233-Halloween-options-and-optimizations.patch index 3381a6092..d571f5703 100644 --- a/patches/server/0233-Halloween-options-and-optimizations.patch +++ b/patches/server/0233-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 0748babe61be5e5082132af6c4a3bc82612b70b3..5b7a6fa9692933ceb40c36e2c684a98d this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7870ac5214814d5b109b1b9534adcac8f4ec671..07de23c955b523eb24b73062bed64484e63652e8 100644 +index 56e64064e562caf69765e42781b83b9260db5f47..9b622b8682055f869e43d5c37a9dd555871624f9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1533,6 +1533,13 @@ public class PurpurWorldConfig { +@@ -1540,6 +1540,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0236-Campfire-option-for-lit-when-placed.patch b/patches/server/0236-Campfire-option-for-lit-when-placed.patch index 266c863c3..3ac321753 100644 --- a/patches/server/0236-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0236-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index a4c44cb59dee29cf227dbb51bfc1576d89dfb2e3..551bacade8642e6aad17120d8a901bcc @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07de23c955b523eb24b73062bed64484e63652e8..09bc2158fa55dd7a1a28f864052fe75829d8295d 100644 +index 9b622b8682055f869e43d5c37a9dd555871624f9..77d5ad2985eb0f3d4a75f6129b4d44a81b637861 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -745,6 +745,11 @@ public class PurpurWorldConfig { +@@ -752,6 +752,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch index b9996a9c2..46db9e321 100644 --- a/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0237-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] options to extinguish fire blocks with snowballs diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index d5d84893c77b4e60a19032d765d76bfd24cbbb2b..ef265cec066ef3b84c2b3a4929af518308a409c3 100644 +index 74f798baafc53cd7dd1d4f58bc9a3581ba4f21da..c7c10c89871a3ee6d21da4bb19407a68759b3ade 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java @@ -58,6 +58,36 @@ public class Snowball extends ThrowableItemProjectile { @@ -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 09bc2158fa55dd7a1a28f864052fe75829d8295d..15808105f0e0d233c6bb9b731100cd4aded944f4 100644 +index 77d5ad2985eb0f3d4a75f6129b4d44a81b637861..f21fcef89306008af99b4ef086c87d5226689e5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -223,6 +223,9 @@ public class PurpurWorldConfig { +@@ -226,6 +226,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 09bc2158fa55dd7a1a28f864052fe75829d8295d..15808105f0e0d233c6bb9b731100cd4a private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -269,6 +272,9 @@ public class PurpurWorldConfig { +@@ -272,6 +275,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch index 3678fb1b7..c394864a0 100644 --- a/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0238-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 54b5749a5e40ed9042af1c4904afcdc4af157d82..07c2ea2d16c9df6107247507fcd09025 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15808105f0e0d233c6bb9b731100cd4aded944f4..65bcdead59468e94932866f4003d1b97b6288623 100644 +index f21fcef89306008af99b4ef086c87d5226689e5c..990918f2f48c5f035c1dc8d79cab2b8e6145cdbd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2755,6 +2755,7 @@ public class PurpurWorldConfig { +@@ -2762,6 +2762,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 15808105f0e0d233c6bb9b731100cd4aded944f4..65bcdead59468e94932866f4003d1b97 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2772,6 +2773,7 @@ public class PurpurWorldConfig { +@@ -2779,6 +2780,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch index e0b29f6f3..0558d27c2 100644 --- a/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0239-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -195,10 +195,10 @@ index b96d57b0bcf21508f8e03e96b7553eb486fdf212..d3de829a4ab5f5a127fb026a8cb4ef4e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65bcdead59468e94932866f4003d1b97b6288623..d0d901ad9837ba4b64b78e3a4e0d93e67a278cc3 100644 +index 990918f2f48c5f035c1dc8d79cab2b8e6145cdbd..dd4a639596e14e6293262839121e60dce42ffda9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -124,6 +124,7 @@ public class PurpurWorldConfig { +@@ -127,6 +127,7 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; @@ -206,7 +206,7 @@ index 65bcdead59468e94932866f4003d1b97b6288623..d0d901ad9837ba4b64b78e3a4e0d93e6 public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -147,6 +148,7 @@ public class PurpurWorldConfig { +@@ -150,6 +151,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0240-Signs-allow-color-codes.patch b/patches/server/0240-Signs-allow-color-codes.patch index 3be5caf91..7fd538990 100644 --- a/patches/server/0240-Signs-allow-color-codes.patch +++ b/patches/server/0240-Signs-allow-color-codes.patch @@ -70,10 +70,10 @@ index 6c96c3dde4e1b1b1b6952841edb41006e73737e9..c02cf76cce353aff189b3e0a967e88f7 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 d0d901ad9837ba4b64b78e3a4e0d93e67a278cc3..34d28faa731652a803405f9c97e0c6334a9f5ac0 100644 +index dd4a639596e14e6293262839121e60dce42ffda9..567a33bd21c14e412dede5b25eb47c513e551565 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -915,8 +915,10 @@ public class PurpurWorldConfig { +@@ -922,8 +922,10 @@ public class PurpurWorldConfig { } public boolean signRightClickEdit = false; diff --git a/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch index f0dec0695..d3f7d608d 100644 --- a/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch +++ b/patches/server/0241-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch @@ -131,10 +131,10 @@ index e5c135ec059746b75fe58516809584221285cdbe..b09ccc493c7503aa99a64d760b5bc769 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34d28faa731652a803405f9c97e0c6334a9f5ac0..e200eb02abaaff75195532193b5499e04545d18b 100644 +index 567a33bd21c14e412dede5b25eb47c513e551565..adf9eb03b67404b8ae4734f24f2a3043bff59a39 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -768,6 +768,11 @@ public class PurpurWorldConfig { +@@ -775,6 +775,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } @@ -146,7 +146,7 @@ index 34d28faa731652a803405f9c97e0c6334a9f5ac0..e200eb02abaaff75195532193b5499e0 public boolean dispenserApplyCursedArmor = true; public boolean dispenserPlaceAnvils = false; private void dispenserSettings() { -@@ -862,6 +867,16 @@ public class PurpurWorldConfig { +@@ -869,6 +874,16 @@ public class PurpurWorldConfig { mobsSpawnOnBlueIce = getBoolean("blocks.blue_ice.allow-mob-spawns", mobsSpawnOnBlueIce); } @@ -163,7 +163,7 @@ index 34d28faa731652a803405f9c97e0c6334a9f5ac0..e200eb02abaaff75195532193b5499e0 public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; public int lavaSpeedNether = 10; -@@ -951,6 +966,16 @@ public class PurpurWorldConfig { +@@ -958,6 +973,16 @@ public class PurpurWorldConfig { turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); } @@ -180,7 +180,7 @@ index 34d28faa731652a803405f9c97e0c6334a9f5ac0..e200eb02abaaff75195532193b5499e0 public boolean waterInfinite = true; public int waterInfiniteRequiredSources = 2; private void waterSources() { -@@ -958,6 +983,16 @@ public class PurpurWorldConfig { +@@ -965,6 +990,16 @@ public class PurpurWorldConfig { waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); } diff --git a/patches/server/0242-Mobs-always-drop-experience.patch b/patches/server/0242-Mobs-always-drop-experience.patch index 5ea4063e5..74f29e82f 100644 --- a/patches/server/0242-Mobs-always-drop-experience.patch +++ b/patches/server/0242-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 8d6930868a42b9fc98d7672bff433ec50d36999e..53bebecd30fee7613af73901b3aa9961 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bcaa222d5fc 100644 +index adf9eb03b67404b8ae4734f24f2a3043bff59a39..b311a5837981a637bb88537a6c4a29dc9dbb6ce3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1016,12 +1016,14 @@ public class PurpurWorldConfig { +@@ -1023,12 +1023,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean batRidable = false; -@@ -1037,6 +1039,7 @@ public class PurpurWorldConfig { +@@ -1044,6 +1046,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1049,6 +1052,7 @@ public class PurpurWorldConfig { +@@ -1056,6 +1059,7 @@ public class PurpurWorldConfig { } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean beeRidable = false; -@@ -1060,6 +1064,7 @@ public class PurpurWorldConfig { +@@ -1067,6 +1071,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1075,6 +1080,7 @@ public class PurpurWorldConfig { +@@ -1082,6 +1087,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean blazeRidable = false; -@@ -1083,6 +1089,7 @@ public class PurpurWorldConfig { +@@ -1090,6 +1096,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1095,6 +1102,7 @@ public class PurpurWorldConfig { +@@ -1102,6 +1109,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean catRidable = false; -@@ -1107,6 +1115,7 @@ public class PurpurWorldConfig { +@@ -1114,6 +1122,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1127,6 +1136,7 @@ public class PurpurWorldConfig { +@@ -1134,6 +1143,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean caveSpiderRidable = false; -@@ -1134,6 +1144,7 @@ public class PurpurWorldConfig { +@@ -1141,6 +1151,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1145,6 +1156,7 @@ public class PurpurWorldConfig { +@@ -1152,6 +1163,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean chickenRidable = false; -@@ -1154,6 +1166,7 @@ public class PurpurWorldConfig { +@@ -1161,6 +1173,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1167,12 +1180,14 @@ public class PurpurWorldConfig { +@@ -1174,12 +1187,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1183,6 +1198,7 @@ public class PurpurWorldConfig { +@@ -1190,6 +1205,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean cowRidable = false; -@@ -1194,6 +1210,7 @@ public class PurpurWorldConfig { +@@ -1201,6 +1217,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1214,6 +1231,7 @@ public class PurpurWorldConfig { +@@ -1221,6 +1238,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean creeperRidable = false; -@@ -1226,6 +1244,7 @@ public class PurpurWorldConfig { +@@ -1233,6 +1251,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1242,6 +1261,7 @@ public class PurpurWorldConfig { +@@ -1249,6 +1268,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean dolphinRidable = false; -@@ -1253,6 +1273,7 @@ public class PurpurWorldConfig { +@@ -1260,6 +1280,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1268,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1296,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean donkeyRidableInWater = false; -@@ -1279,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1286,6 +1308,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1296,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1326,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean drownedRidable = false; -@@ -1308,6 +1332,7 @@ public class PurpurWorldConfig { +@@ -1315,6 +1339,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1324,12 +1349,14 @@ public class PurpurWorldConfig { +@@ -1331,12 +1356,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1340,6 +1367,7 @@ public class PurpurWorldConfig { +@@ -1347,6 +1374,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean enderDragonRidable = false; -@@ -1385,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1420,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1408,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1444,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean endermiteRidable = false; -@@ -1415,6 +1445,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1452,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1426,6 +1457,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1464,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean evokerRidable = false; -@@ -1434,6 +1466,7 @@ public class PurpurWorldConfig { +@@ -1441,6 +1473,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1446,6 +1479,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1486,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean foxRidable = false; -@@ -1456,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1463,6 +1497,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1470,6 +1505,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1512,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean frogRidable = false; -@@ -1491,6 +1527,7 @@ public class PurpurWorldConfig { +@@ -1498,6 +1534,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1503,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1547,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean giantRidable = false; -@@ -1516,6 +1554,7 @@ public class PurpurWorldConfig { +@@ -1523,6 +1561,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1537,6 +1576,7 @@ public class PurpurWorldConfig { +@@ -1544,6 +1583,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean glowSquidRidable = false; -@@ -1544,12 +1584,14 @@ public class PurpurWorldConfig { +@@ -1551,12 +1591,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean goatRidable = false; -@@ -1558,6 +1600,7 @@ public class PurpurWorldConfig { +@@ -1565,6 +1607,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1565,12 +1608,14 @@ public class PurpurWorldConfig { +@@ -1572,12 +1615,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1581,6 +1626,7 @@ public class PurpurWorldConfig { +@@ -1588,6 +1633,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean forceHalloweenSeason = false; -@@ -1596,6 +1642,7 @@ public class PurpurWorldConfig { +@@ -1603,6 +1649,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1608,6 +1655,7 @@ public class PurpurWorldConfig { +@@ -1615,6 +1662,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean horseRidableInWater = false; -@@ -1620,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1627,6 +1675,7 @@ public class PurpurWorldConfig { public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; public boolean horseStandWithRider = true; @@ -1547,7 +1547,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1638,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1645,6 +1694,7 @@ public class PurpurWorldConfig { horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider); @@ -1555,7 +1555,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean huskRidable = false; -@@ -1649,6 +1699,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1706,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1664,6 +1715,7 @@ public class PurpurWorldConfig { +@@ -1671,6 +1722,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean illusionerRidable = false; -@@ -1673,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1680,6 +1732,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1690,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1697,6 +1750,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean ironGolemRidable = false; -@@ -1700,6 +1754,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1761,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1714,6 +1769,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1776,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean llamaRidable = false; -@@ -1728,6 +1784,7 @@ public class PurpurWorldConfig { +@@ -1735,6 +1791,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1748,6 +1805,7 @@ public class PurpurWorldConfig { +@@ -1755,6 +1812,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean magmaCubeRidable = false; -@@ -1758,6 +1816,7 @@ public class PurpurWorldConfig { +@@ -1765,6 +1823,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1772,6 +1831,7 @@ public class PurpurWorldConfig { +@@ -1779,6 +1838,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean mooshroomRidable = false; -@@ -1780,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1787,6 +1847,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1792,6 +1853,7 @@ public class PurpurWorldConfig { +@@ -1799,6 +1860,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean muleRidableInWater = false; -@@ -1803,6 +1865,7 @@ public class PurpurWorldConfig { +@@ -1810,6 +1872,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1820,6 +1883,7 @@ public class PurpurWorldConfig { +@@ -1827,6 +1890,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean ocelotRidable = false; -@@ -1828,6 +1892,7 @@ public class PurpurWorldConfig { +@@ -1835,6 +1899,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1840,6 +1905,7 @@ public class PurpurWorldConfig { +@@ -1847,6 +1912,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean pandaRidable = false; -@@ -1848,6 +1914,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1921,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1860,6 +1927,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1934,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean parrotRidable = false; -@@ -1869,6 +1937,7 @@ public class PurpurWorldConfig { +@@ -1876,6 +1944,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1882,6 +1951,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +1958,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean phantomRidable = false; -@@ -1915,6 +1985,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +1992,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1956,6 +2027,7 @@ public class PurpurWorldConfig { +@@ -1963,6 +2034,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean pigRidable = false; -@@ -1965,6 +2037,7 @@ public class PurpurWorldConfig { +@@ -1972,6 +2044,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1978,6 +2051,7 @@ public class PurpurWorldConfig { +@@ -1985,6 +2058,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean piglinRidable = false; -@@ -1987,6 +2061,7 @@ public class PurpurWorldConfig { +@@ -1994,6 +2068,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2000,6 +2075,7 @@ public class PurpurWorldConfig { +@@ -2007,6 +2082,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean piglinBruteRidable = false; -@@ -2007,6 +2083,7 @@ public class PurpurWorldConfig { +@@ -2014,6 +2090,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2018,6 +2095,7 @@ public class PurpurWorldConfig { +@@ -2025,6 +2102,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean pillagerRidable = false; -@@ -2026,6 +2104,7 @@ public class PurpurWorldConfig { +@@ -2033,6 +2111,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2038,6 +2117,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2124,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean polarBearRidable = false; -@@ -2048,6 +2128,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2135,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2063,12 +2144,14 @@ public class PurpurWorldConfig { +@@ -2070,12 +2151,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2079,6 +2162,7 @@ public class PurpurWorldConfig { +@@ -2086,6 +2169,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean rabbitRidable = false; -@@ -2090,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2097,6 +2181,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2105,6 +2190,7 @@ public class PurpurWorldConfig { +@@ -2112,6 +2197,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean ravagerRidable = false; -@@ -2114,6 +2200,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2207,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2143,12 +2230,14 @@ public class PurpurWorldConfig { +@@ -2150,12 +2237,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2159,6 +2248,7 @@ public class PurpurWorldConfig { +@@ -2166,6 +2255,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean sheepRidable = false; -@@ -2168,6 +2258,7 @@ public class PurpurWorldConfig { +@@ -2175,6 +2265,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2181,6 +2272,7 @@ public class PurpurWorldConfig { +@@ -2188,6 +2279,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean shulkerRidable = false; -@@ -2194,6 +2286,7 @@ public class PurpurWorldConfig { +@@ -2201,6 +2293,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2211,6 +2304,7 @@ public class PurpurWorldConfig { +@@ -2218,6 +2311,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean silverfishRidable = false; -@@ -2219,6 +2313,7 @@ public class PurpurWorldConfig { +@@ -2226,6 +2320,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2231,6 +2326,7 @@ public class PurpurWorldConfig { +@@ -2238,6 +2333,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean skeletonRidable = false; -@@ -2238,6 +2334,7 @@ public class PurpurWorldConfig { +@@ -2245,6 +2341,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2249,6 +2346,7 @@ public class PurpurWorldConfig { +@@ -2256,6 +2353,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean skeletonHorseRidableInWater = true; -@@ -2260,6 +2358,7 @@ public class PurpurWorldConfig { +@@ -2267,6 +2365,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2276,6 +2375,7 @@ public class PurpurWorldConfig { +@@ -2283,6 +2382,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean slimeRidable = false; -@@ -2286,6 +2386,7 @@ public class PurpurWorldConfig { +@@ -2293,6 +2393,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2300,6 +2401,7 @@ public class PurpurWorldConfig { +@@ -2307,6 +2408,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean snowGolemRidable = false; -@@ -2315,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2322,6 +2424,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2334,6 +2437,7 @@ public class PurpurWorldConfig { +@@ -2341,6 +2444,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean squidRidable = false; -@@ -2343,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2350,6 +2454,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2356,6 +2461,7 @@ public class PurpurWorldConfig { +@@ -2363,6 +2468,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean spiderRidable = false; -@@ -2363,6 +2469,7 @@ public class PurpurWorldConfig { +@@ -2370,6 +2476,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2374,6 +2481,7 @@ public class PurpurWorldConfig { +@@ -2381,6 +2488,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean strayRidable = false; -@@ -2381,6 +2489,7 @@ public class PurpurWorldConfig { +@@ -2388,6 +2496,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2392,6 +2501,7 @@ public class PurpurWorldConfig { +@@ -2399,6 +2508,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean striderRidable = false; -@@ -2401,6 +2511,7 @@ public class PurpurWorldConfig { +@@ -2408,6 +2518,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2414,6 +2525,7 @@ public class PurpurWorldConfig { +@@ -2421,6 +2532,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean tadpoleRidable = false; -@@ -2436,6 +2548,7 @@ public class PurpurWorldConfig { +@@ -2443,6 +2555,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2455,12 +2568,14 @@ public class PurpurWorldConfig { +@@ -2462,12 +2575,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2471,6 +2586,7 @@ public class PurpurWorldConfig { +@@ -2478,6 +2593,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean turtleRidable = false; -@@ -2479,6 +2595,7 @@ public class PurpurWorldConfig { +@@ -2486,6 +2602,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2491,6 +2608,7 @@ public class PurpurWorldConfig { +@@ -2498,6 +2615,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean vexRidable = false; -@@ -2499,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2506,6 +2624,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2511,6 +2630,7 @@ public class PurpurWorldConfig { +@@ -2518,6 +2637,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean villagerRidable = false; -@@ -2528,6 +2648,7 @@ public class PurpurWorldConfig { +@@ -2535,6 +2655,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2549,6 +2670,7 @@ public class PurpurWorldConfig { +@@ -2556,6 +2677,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean vindicatorRidable = false; -@@ -2557,6 +2679,7 @@ public class PurpurWorldConfig { +@@ -2564,6 +2686,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2569,6 +2692,7 @@ public class PurpurWorldConfig { +@@ -2576,6 +2699,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean wanderingTraderRidable = false; -@@ -2579,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2586,6 +2710,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2593,6 +2718,7 @@ public class PurpurWorldConfig { +@@ -2600,6 +2725,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean wardenRidable = false; -@@ -2609,6 +2735,7 @@ public class PurpurWorldConfig { +@@ -2616,6 +2742,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2620,6 +2747,7 @@ public class PurpurWorldConfig { +@@ -2627,6 +2754,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean witherRidable = false; -@@ -2634,6 +2762,7 @@ public class PurpurWorldConfig { +@@ -2641,6 +2769,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2656,6 +2785,7 @@ public class PurpurWorldConfig { +@@ -2663,6 +2792,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean witherSkeletonRidable = false; -@@ -2663,6 +2793,7 @@ public class PurpurWorldConfig { +@@ -2670,6 +2800,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2674,6 +2805,7 @@ public class PurpurWorldConfig { +@@ -2681,6 +2812,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean wolfRidable = false; -@@ -2685,6 +2817,7 @@ public class PurpurWorldConfig { +@@ -2692,6 +2824,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2704,6 +2837,7 @@ public class PurpurWorldConfig { +@@ -2711,6 +2844,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean zoglinRidable = false; -@@ -2711,6 +2845,7 @@ public class PurpurWorldConfig { +@@ -2718,6 +2852,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2722,6 +2857,7 @@ public class PurpurWorldConfig { +@@ -2729,6 +2864,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean zombieRidable = false; -@@ -2735,6 +2871,7 @@ public class PurpurWorldConfig { +@@ -2742,6 +2878,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2752,6 +2889,7 @@ public class PurpurWorldConfig { +@@ -2759,6 +2896,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean zombieHorseRidableInWater = false; -@@ -2764,6 +2902,7 @@ public class PurpurWorldConfig { +@@ -2771,6 +2909,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2781,6 +2920,7 @@ public class PurpurWorldConfig { +@@ -2788,6 +2927,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean zombieVillagerRidable = false; -@@ -2795,6 +2935,7 @@ public class PurpurWorldConfig { +@@ -2802,6 +2942,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2813,6 +2954,7 @@ public class PurpurWorldConfig { +@@ -2820,6 +2961,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca } public boolean zombifiedPiglinRidable = false; -@@ -2825,6 +2967,7 @@ public class PurpurWorldConfig { +@@ -2832,6 +2974,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index e200eb02abaaff75195532193b5499e04545d18b..fe167bf81997f5657b0efcc01c302bca private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2841,6 +2984,7 @@ public class PurpurWorldConfig { +@@ -2848,6 +2991,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch index 7b09e2b5d..b054a770f 100644 --- a/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0245-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -39,10 +39,10 @@ index bdd4fc3072f7a5ea504ba35f6a08ae971e83b69f..b9ac8cefefe1f47548166330b7c889df } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe167bf81997f5657b0efcc01c302bcaa222d5fc..493ebb58ddbcd6d78e48b7fe5f66d3a385c38746 100644 +index b311a5837981a637bb88537a6c4a29dc9dbb6ce3..14de7d96cc795e1efb019ac27559e64dfffd7379 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2470,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2477,6 +2477,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; public boolean spiderAlwaysDropExp = false; @@ -50,7 +50,7 @@ index fe167bf81997f5657b0efcc01c302bcaa222d5fc..493ebb58ddbcd6d78e48b7fe5f66d3a3 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2482,6 +2483,7 @@ public class PurpurWorldConfig { +@@ -2489,6 +2490,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp); diff --git a/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 21ea0a30a..ae9fa79f2 100644 --- a/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0246-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index d1d10a7a62c7372634e22d6df8fc7d085d051237..e6a37649900f55d7178f7cd876b71c5d + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 493ebb58ddbcd6d78e48b7fe5f66d3a385c38746..c3f66860b5a153eb1a8f88d81fd0e7f19383a5eb 100644 +index 14de7d96cc795e1efb019ac27559e64dfffd7379..c8101600155a5e9ca9d04ec65a802c89253506ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -545,6 +545,8 @@ public class PurpurWorldConfig { +@@ -552,6 +552,8 @@ public class PurpurWorldConfig { public Map axeWaxables = new HashMap<>(); public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); @@ -86,7 +86,7 @@ index 493ebb58ddbcd6d78e48b7fe5f66d3a385c38746..c3f66860b5a153eb1a8f88d81fd0e7f1 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -686,6 +688,8 @@ public class PurpurWorldConfig { +@@ -693,6 +695,8 @@ public class PurpurWorldConfig { }); hoeTillables.put(block, new Tillable(condition, into, drops)); }); diff --git a/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch index 1f8ba7d69..0b890ec69 100644 --- a/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0247-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index 63aeab7204ac954b2908207dc6e743d17aa27f2e..aa6f6e252f6f2933825b97bf1b9679fe if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c3f66860b5a153eb1a8f88d81fd0e7f19383a5eb..4e89843d98bf0cd09032eeed36e0c2f90af15e5e 100644 +index c8101600155a5e9ca9d04ec65a802c89253506ab..c766d20c368a4d211557713c7690e6614d093d81 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2263,6 +2263,7 @@ public class PurpurWorldConfig { +@@ -2270,6 +2270,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index c3f66860b5a153eb1a8f88d81fd0e7f19383a5eb..4e89843d98bf0cd09032eeed36e0c2f9 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2277,6 +2278,7 @@ public class PurpurWorldConfig { +@@ -2284,6 +2285,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch index f85baf1b0..bc43dc606 100644 --- a/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0248-Turtle-eggs-random-tick-crack-chance.patch @@ -32,10 +32,10 @@ index 4907e0acb7d01b7f57b75579e58ce743e3e000bb..5e6df1d6cbaecb986d1b8d382fe673a2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e89843d98bf0cd09032eeed36e0c2f90af15e5e..1e7b7a560b12b3de0a23124c58bc73e001189d92 100644 +index c766d20c368a4d211557713c7690e6614d093d81..b6fda4581fdd0b3e270e707b9b7e360c8715b15f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -963,11 +963,13 @@ public class PurpurWorldConfig { +@@ -970,11 +970,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0249-Mob-head-visibility-percent.patch b/patches/server/0249-Mob-head-visibility-percent.patch index c4e379ae7..c914d5236 100644 --- a/patches/server/0249-Mob-head-visibility-percent.patch +++ b/patches/server/0249-Mob-head-visibility-percent.patch @@ -29,10 +29,10 @@ index 6e7af1939df4ff99d6d4645f7ed270110d9d0373..d120c8808c6a8df2c8615fe02f2c8a5b // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e7b7a560b12b3de0a23124c58bc73e001189d92..ab26229fc60bd81e2f0264ce3b4cda46590870de 100644 +index b6fda4581fdd0b3e270e707b9b7e360c8715b15f..34bd5886b9437f2906558a6cd0b8771c66073c41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1251,6 +1251,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1258,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -40,7 +40,7 @@ index 1e7b7a560b12b3de0a23124c58bc73e001189d92..ab26229fc60bd81e2f0264ce3b4cda46 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1268,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1276,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 1e7b7a560b12b3de0a23124c58bc73e001189d92..ab26229fc60bd81e2f0264ce3b4cda46 } public boolean dolphinRidable = false; -@@ -2343,6 +2345,7 @@ public class PurpurWorldConfig { +@@ -2350,6 +2352,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -56,7 +56,7 @@ index 1e7b7a560b12b3de0a23124c58bc73e001189d92..ab26229fc60bd81e2f0264ce3b4cda46 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2355,6 +2358,7 @@ public class PurpurWorldConfig { +@@ -2362,6 +2365,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 1e7b7a560b12b3de0a23124c58bc73e001189d92..ab26229fc60bd81e2f0264ce3b4cda46 } public boolean skeletonHorseRidableInWater = true; -@@ -2882,6 +2886,7 @@ public class PurpurWorldConfig { +@@ -2889,6 +2893,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -72,7 +72,7 @@ index 1e7b7a560b12b3de0a23124c58bc73e001189d92..ab26229fc60bd81e2f0264ce3b4cda46 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2900,6 +2905,7 @@ public class PurpurWorldConfig { +@@ -2907,6 +2912,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0252-Stop-bees-from-dying-after-stinging.patch b/patches/server/0252-Stop-bees-from-dying-after-stinging.patch index dca9e8361..e8472f1db 100644 --- a/patches/server/0252-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0252-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 4b9d13fb36d0e35f1cc7a5d95b26dc5f8ded0d6a..a6378e6db70ba80aaa18954766f029cd ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, (int) 1, (int) 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab26229fc60bd81e2f0264ce3b4cda46590870de..96a586d893373cf21ee3d1510f54d897faad457a 100644 +index 34bd5886b9437f2906558a6cd0b8771c66073c41..3cc593fd35e235d90eca15cb19304ad5b9d97866 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1071,6 +1071,7 @@ public class PurpurWorldConfig { +@@ -1078,6 +1078,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index ab26229fc60bd81e2f0264ce3b4cda46590870de..96a586d893373cf21ee3d1510f54d897 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1087,6 +1088,7 @@ public class PurpurWorldConfig { +@@ -1094,6 +1095,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0254-Configurable-farmland-trample-height.patch b/patches/server/0254-Configurable-farmland-trample-height.patch index 45520129d..2a492dd5f 100644 --- a/patches/server/0254-Configurable-farmland-trample-height.patch +++ b/patches/server/0254-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index e5a3e3a4367dfb924624a913b816b3fd56e3fefd..7068cb39ab264fa0c65febff01236b8d org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96a586d893373cf21ee3d1510f54d897faad457a..f8eec38a4cec2946e1e2cd56cf82ebd637040067 100644 +index 3cc593fd35e235d90eca15cb19304ad5b9d97866..ab53d43d26e01cb7ea5725bbda8b0a8a708a086c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -834,6 +834,7 @@ public class PurpurWorldConfig { +@@ -841,6 +841,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 96a586d893373cf21ee3d1510f54d897faad457a..f8eec38a4cec2946e1e2cd56cf82ebd6 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -841,6 +842,7 @@ public class PurpurWorldConfig { +@@ -848,6 +849,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0255-Configurable-player-pickup-exp-delay.patch b/patches/server/0255-Configurable-player-pickup-exp-delay.patch index b27ef1b99..2118b935d 100644 --- a/patches/server/0255-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0255-Configurable-player-pickup-exp-delay.patch @@ -37,10 +37,10 @@ index 870e794392b94d140db6d5650c3e7ae3dd6f593d..7344324517fb10ee6ab3467b40fcb9cd } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8eec38a4cec2946e1e2cd56cf82ebd637040067..bfa029905775534a5ac5d01aa0085c4f08de4cf9 100644 +index ab53d43d26e01cb7ea5725bbda8b0a8a708a086c..6f14dac3a428e8d982a172c5c510e424cf09ecf6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -413,6 +413,7 @@ public class PurpurWorldConfig { +@@ -416,6 +416,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -48,11 +48,11 @@ index f8eec38a4cec2946e1e2cd56cf82ebd637040067..bfa029905775534a5ac5d01aa0085c4f private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -441,6 +442,7 @@ public class PurpurWorldConfig { +@@ -444,6 +445,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); + playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0256-Allow-void-trading.patch b/patches/server/0256-Allow-void-trading.patch index 1af4f8aae..7f25c032b 100644 --- a/patches/server/0256-Allow-void-trading.patch +++ b/patches/server/0256-Allow-void-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9b425b9443e491dc832548f5dc733bf3d29da801..1182e5b5015153b55eb3e74b3ae466e260566954 100644 +index 692fa17277cf89aebb3d98269e6b0e8271feb0ba..e352904cb790b3253ec30753e66a70507c0d748c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2681,7 +2681,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18,10 +18,10 @@ index 9b425b9443e491dc832548f5dc733bf3d29da801..1182e5b5015153b55eb3e74b3ae466e2 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bfa029905775534a5ac5d01aa0085c4f08de4cf9..f187872e96f41e5c97c9f1bc71c859310769f914 100644 +index 6f14dac3a428e8d982a172c5c510e424cf09ecf6..7dcbf902937d05062f49f66ea6a09ec608111539 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -414,6 +414,7 @@ public class PurpurWorldConfig { +@@ -417,6 +417,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,11 +29,11 @@ index bfa029905775534a5ac5d01aa0085c4f08de4cf9..f187872e96f41e5c97c9f1bc71c85931 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -446,6 +447,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); + playerVoidTrading = getBoolean("gameplay-mechanics.player.allow-void-trading", playerVoidTrading); } - public int snowballDamage = -1; + private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0258-Configurable-phantom-size.patch b/patches/server/0258-Configurable-phantom-size.patch index 58612cbad..8bf9c13a8 100644 --- a/patches/server/0258-Configurable-phantom-size.patch +++ b/patches/server/0258-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 33b347474b7485633ca77bdff28e4b32580b51b8..bfca1101025e473c97cd4804e74bed04 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f187872e96f41e5c97c9f1bc71c859310769f914..75f83aa35fb5ac24f6c51e2315b322d96c69050e 100644 +index 7dcbf902937d05062f49f66ea6a09ec608111539..9b2e412c9ac86ee70923a521a12add9d68c3a37d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2002,6 +2002,8 @@ public class PurpurWorldConfig { +@@ -2009,6 +2009,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index f187872e96f41e5c97c9f1bc71c859310769f914..75f83aa35fb5ac24f6c51e2315b322d9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2044,6 +2046,13 @@ public class PurpurWorldConfig { +@@ -2051,6 +2053,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0261-Configurable-minimum-demand-for-trades.patch b/patches/server/0261-Configurable-minimum-demand-for-trades.patch index 9f060f72c..f649cf19d 100644 --- a/patches/server/0261-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0261-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 8a9a701baabdaf066cd9b28c05430f673fcafb4e..17cc3237c7fc8ceda136b2371fabf6f0 public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75f83aa35fb5ac24f6c51e2315b322d96c69050e..eb021d6673ea37fd59ad3644995eb9ecc394b506 100644 +index 9b2e412c9ac86ee70923a521a12add9d68c3a37d..dc68de4d0088d0aed6fd800fb22fdc93f90dc048 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2680,6 +2680,7 @@ public class PurpurWorldConfig { +@@ -2687,6 +2687,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 75f83aa35fb5ac24f6c51e2315b322d96c69050e..eb021d6673ea37fd59ad3644995eb9ec private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2702,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2709,6 +2710,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0262-Lobotomize-stuck-villagers.patch b/patches/server/0262-Lobotomize-stuck-villagers.patch index f5dba00b4..2e4e617e5 100644 --- a/patches/server/0262-Lobotomize-stuck-villagers.patch +++ b/patches/server/0262-Lobotomize-stuck-villagers.patch @@ -111,10 +111,10 @@ index f0b910df1ee471b4d72d97c6197ab14f2854976e..6ce32a52d621a0c2629568ea07e445f5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eb021d6673ea37fd59ad3644995eb9ecc394b506..e327fcaec25b36eabf3858f6231ec0303108d1c0 100644 +index dc68de4d0088d0aed6fd800fb22fdc93f90dc048..e1a72b0039a950ef66050e575b0557635dc6245b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2681,6 +2681,8 @@ public class PurpurWorldConfig { +@@ -2688,6 +2688,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -123,7 +123,7 @@ index eb021d6673ea37fd59ad3644995eb9ecc394b506..e327fcaec25b36eabf3858f6231ec030 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2704,6 +2706,17 @@ public class PurpurWorldConfig { +@@ -2711,6 +2713,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0263-Option-for-villager-display-trade-item.patch b/patches/server/0263-Option-for-villager-display-trade-item.patch index 3a6799e46..f06521e95 100644 --- a/patches/server/0263-Option-for-villager-display-trade-item.patch +++ b/patches/server/0263-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 385f3df7044e3f03f17c3ec7484b268004a3def9..90ba6a3abf62e4b272fada96b554ca31 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e327fcaec25b36eabf3858f6231ec0303108d1c0..c1affafde07585dbde862430da0b1dac1d67004c 100644 +index e1a72b0039a950ef66050e575b0557635dc6245b..b2696c960e413a53907ba2f20008ec2286dfc9e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2683,6 +2683,7 @@ public class PurpurWorldConfig { +@@ -2690,6 +2690,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index e327fcaec25b36eabf3858f6231ec0303108d1c0..c1affafde07585dbde862430da0b1dac private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2717,6 +2718,7 @@ public class PurpurWorldConfig { +@@ -2724,6 +2725,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index b29a1b2c7..5368778c8 100644 --- a/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0265-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 18389f46902bb9879ac6d734723e9a720724dc48..b2b8663a9cff08bacdab91c7bb014ba6 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c1affafde07585dbde862430da0b1dac1d67004c..26eebec4e0ea35ffbed09b9e7192cdf58cc08243 100644 +index b2696c960e413a53907ba2f20008ec2286dfc9e8..f90e847e1236bd5a67a6970f2273073c801e37f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -952,8 +952,10 @@ public class PurpurWorldConfig { +@@ -959,8 +959,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch index 20831afff..637f845a7 100644 --- a/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0266-Config-for-mob-last-hurt-by-player-time.patch @@ -38,10 +38,10 @@ index 1e854090c986f480e35fac5c6f347e72904f9ab5..76a4803decea19f8bed8cb11e73bd789 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26eebec4e0ea35ffbed09b9e7192cdf58cc08243..fcfa2d9585eeb61a44e2e9d2519f2a7b7837a762 100644 +index f90e847e1236bd5a67a6970f2273073c801e37f4..6b21494a7461c2a449b754248cf19d4da571e3e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -136,6 +136,7 @@ public class PurpurWorldConfig { +@@ -139,6 +139,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index 26eebec4e0ea35ffbed09b9e7192cdf58cc08243..fcfa2d9585eeb61a44e2e9d2519f2a7b private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -161,6 +162,7 @@ public class PurpurWorldConfig { +@@ -164,6 +165,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0267-Anvil-repair-damage-options.patch b/patches/server/0267-Anvil-repair-damage-options.patch index 8ff0ac986..75f6a5ba8 100644 --- a/patches/server/0267-Anvil-repair-damage-options.patch +++ b/patches/server/0267-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 1b23352a9deae37f9c947fef1b1f8a2875507cfa..ad5aad3682926e2e8965bb87ad8d5381 return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fcfa2d9585eeb61a44e2e9d2519f2a7b7837a762..04b22296fa2f7ba49eace98dcf9faf9f0fcd90e0 100644 +index 6b21494a7461c2a449b754248cf19d4da571e3e0..bbe4976f018132f5ec1b252e02c979153db0c176 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -699,8 +699,12 @@ public class PurpurWorldConfig { +@@ -706,8 +706,12 @@ public class PurpurWorldConfig { } public boolean anvilAllowColors = false; diff --git a/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 9574da3f3..0bc5189c8 100644 --- a/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0269-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -20,10 +20,10 @@ index 5e6df1d6cbaecb986d1b8d382fe673a2cbb76115..6151226a88a9ca44955821521641e788 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 04b22296fa2f7ba49eace98dcf9faf9f0fcd90e0..8ef68901082975716b3684b240fb847b04d70b55 100644 +index bbe4976f018132f5ec1b252e02c979153db0c176..df789c60ac11f4076f6a2114adb3e825376a79bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -978,12 +978,14 @@ public class PurpurWorldConfig { +@@ -985,12 +985,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch b/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch index 420ab4088..9810583a1 100644 --- a/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch +++ b/patches/server/0271-Config-to-prevent-horses-from-standing-when-hurt.patch @@ -21,10 +21,10 @@ index 7466c437b2e996f16a08aaefc5c2b7cba216a14c..205ce2bd91a98a0c67d3c5dd640eb88c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ef68901082975716b3684b240fb847b04d70b55..8418c1ad58fe39baba10e0315a8a94cc0ef7e712 100644 +index df789c60ac11f4076f6a2114adb3e825376a79bd..0ca90833b7fa9014c3aed712e1bf209094d7ab31 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1694,6 +1694,7 @@ public class PurpurWorldConfig { +@@ -1701,6 +1701,7 @@ public class PurpurWorldConfig { public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; public boolean horseStandWithRider = true; @@ -32,7 +32,7 @@ index 8ef68901082975716b3684b240fb847b04d70b55..8418c1ad58fe39baba10e0315a8a94cc public boolean horseAlwaysDropExp = false; private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); -@@ -1713,6 +1714,7 @@ public class PurpurWorldConfig { +@@ -1720,6 +1721,7 @@ public class PurpurWorldConfig { horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider); diff --git a/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch index 672b4a6cb..11b8487fc 100644 --- a/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0273-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index ace39b0585c67b2764d75ff9e64d132347157a51..20668d53625ec88ba3eb2a655ad3f6bc AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8418c1ad58fe39baba10e0315a8a94cc0ef7e712..553e86c7461be4f9ee5b3c4b48013688b3a3debe 100644 +index 0ca90833b7fa9014c3aed712e1bf209094d7ab31..7fe637bbfd3f376346e8a99adaf8060b255c6a4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2696,6 +2696,8 @@ public class PurpurWorldConfig { +@@ -2703,6 +2703,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 8418c1ad58fe39baba10e0315a8a94cc0ef7e712..553e86c7461be4f9ee5b3c4b48013688 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2731,6 +2733,8 @@ public class PurpurWorldConfig { +@@ -2738,6 +2740,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0274-Stonecutter-damage.patch b/patches/server/0274-Stonecutter-damage.patch index d9248a0a6..39c534492 100644 --- a/patches/server/0274-Stonecutter-damage.patch +++ b/patches/server/0274-Stonecutter-damage.patch @@ -80,7 +80,7 @@ index 019e095647225f3d61f0759c8787171a45acdaca..13a5d4338ca2a9ea9a9c520687bc1d5b throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.msgId)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 127df4a4c5c84f5e260104a4cc8ef092f7cf9e07..bcb386d4cbd37ed41cf27808c7104d2780ce2558 100644 +index d987bf03974511bdabfe8410d6f3008c2fa9ec67..8cb74c78f6925d3016f7367835a0929840404fb2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -200,8 +200,10 @@ public class PurpurConfig { @@ -95,10 +95,10 @@ index 127df4a4c5c84f5e260104a4cc8ef092f7cf9e07..bcb386d4cbd37ed41cf27808c7104d27 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 553e86c7461be4f9ee5b3c4b48013688b3a3debe..af2128d8baa30f826850320c79aff037cebd5059 100644 +index 7fe637bbfd3f376346e8a99adaf8060b255c6a4d..7203569790382a5cc9039fe358a25576093955c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -973,6 +973,11 @@ public class PurpurWorldConfig { +@@ -980,6 +980,11 @@ public class PurpurWorldConfig { spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava); } diff --git a/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch index b76a9215c..f22ef95f2 100644 --- a/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0275-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index d3540a4daaa8021ae009bfd4d9ef4f1172ab4c56..2b250439f263f64db7920536ed6eaf64 entity.hurt(DamageSource.HOT_FLOOR, 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af2128d8baa30f826850320c79aff037cebd5059..831753b4bb6be4d13e90905d41be99bf5874bade 100644 +index 7203569790382a5cc9039fe358a25576093955c3..152a991122d72ab60e5fee810185471a8f33c9d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -909,6 +909,13 @@ public class PurpurWorldConfig { +@@ -916,6 +916,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0276-Add-config-for-snow-on-blue-ice.patch b/patches/server/0276-Add-config-for-snow-on-blue-ice.patch index cdeb26f4c..ff329303c 100644 --- a/patches/server/0276-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0276-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 831753b4bb6be4d13e90905d41be99bf5874bade..cef54b0dbaa04cb236c602073489812a37fa4950 100644 +index 152a991122d72ab60e5fee810185471a8f33c9d6..5d5ae3fb7d2ce35505b57b2ce26b3536c4ac7da8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -878,9 +878,11 @@ public class PurpurWorldConfig { +@@ -885,9 +885,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true;