From 4dca11b02c12178d11a4693865e4f2951b2976e2 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 16 Jun 2024 23:03:22 -0700 Subject: [PATCH] elytra.ignore-unbreaking option can probably be done through datapacks now --- .../0057-Implement-elytra-settings.patch | 20 +- .../server/0058-Item-entity-immunities.patch | 4 +- .../0062-Configurable-jockey-options.patch | 22 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- .../0064-Add-phantom-spawning-options.patch | 6 +- ...0065-Implement-bed-explosion-options.patch | 4 +- ...ent-respawn-anchor-explosion-options.patch | 4 +- patches/server/0069-Entity-lifespan.patch | 6 +- ...leport-to-spawn-if-outside-world-bor.patch | 8 +- patches/server/0071-Squid-EAR-immunity.patch | 6 +- .../server/0072-Phantoms-burn-in-light.patch | 6 +- .../0073-Configurable-villager-breeding.patch | 6 +- .../0074-Redstone-deactivates-spawners.patch | 4 +- .../0075-Totems-work-in-inventory.patch | 8 +- ...6-Add-vindicator-johnny-spawn-chance.patch | 6 +- .../0077-Dispensers-place-anvils-option.patch | 4 +- patches/server/0078-Allow-anvil-colors.patch | 4 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 4 +- ...e-config-options-per-projectile-type.patch | 4 +- ...sable-zombie-aggressiveness-towards-.patch | 6 +- patches/server/0089-Flying-squids-Oh-my.patch | 8 +- .../0090-Configurable-daylight-cycle.patch | 4 +- ...91-Furnace-uses-lava-from-underneath.patch | 4 +- ...re-add-farmland-mechanics-from-Alpha.patch | 4 +- ...e-entity-breeding-times-configurable.patch | 96 +++--- ...llowing-Endermen-to-despawn-even-whi.patch | 6 +- ...099-Add-configurable-snowball-damage.patch | 4 +- ...00-Changeable-Mob-Left-Handed-Chance.patch | 4 +- .../0102-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 +- ...07-Configurable-default-collar-color.patch | 10 +- .../server/0108-Phantom-flames-on-swoop.patch | 6 +- ...s-to-open-even-with-a-solid-block-on.patch | 4 +- .../0111-Striders-give-saddle-back.patch | 6 +- ...therite-armor-grants-fire-resistance.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 70 ++--- .../0116-Farmland-trampling-changes.patch | 4 +- .../server/0118-Fix-stuck-in-portals.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 256 ++++++++-------- .../0121-End-crystal-explosion-options.patch | 4 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 10 +- .../server/0123-Dont-run-with-scissors.patch | 8 +- patches/server/0124-One-Punch-Man.patch | 8 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 6 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 6 +- ...131-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0134-Sneak-to-bulk-process-composter.patch | 4 +- .../0135-Config-for-skipping-night.patch | 6 +- ...0136-Add-config-for-villager-trading.patch | 10 +- patches/server/0137-Drowning-Settings.patch | 4 +- ...Break-individual-slabs-when-sneaking.patch | 6 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 4 +- ...ption-to-make-doors-require-redstone.patch | 4 +- ...0142-Config-to-allow-unsafe-enchants.patch | 4 +- .../0143-Configurable-sponge-absorption.patch | 4 +- .../0144-Projectile-offset-config.patch | 4 +- ...for-powered-rail-activation-distance.patch | 4 +- .../0146-Piglin-portal-spawn-modifier.patch | 8 +- ...8-Config-for-wither-explosion-radius.patch | 6 +- .../0150-Configurable-piston-push-limit.patch | 4 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0155-Iron-golem-calm-anger-options.patch | 6 +- patches/server/0156-Breedable-parrots.patch | 6 +- ...igurable-powered-rail-boost-modifier.patch | 6 +- ...nge-multiplier-critical-damage-value.patch | 6 +- ...on-to-disable-dragon-egg-teleporting.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 6 +- .../0164-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 4 +- ...after-eating-food-fills-hunger-bar-c.patch | 6 +- ...70-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...2-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../server/0176-Tool-actionable-options.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- .../server/0181-Big-dripleaf-tilt-delay.patch | 4 +- .../0182-Player-ridable-in-water-option.patch | 6 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0184-Add-compass-command.patch | 6 +- .../0185-Toggle-for-kinetic-damage.patch | 9 +- ...d-Option-for-disable-observer-clocks.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...-for-sponges-to-work-on-lava-and-mud.patch | 4 +- ...0189-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 6 +- .../0192-Conduit-behavior-configuration.patch | 4 +- .../server/0193-Cauldron-fill-chances.patch | 4 +- .../0195-Shulker-change-color-with-dye.patch | 6 +- ...a-blocks-to-grow-into-trees-naturall.patch | 6 +- ...t-right-click-to-use-exp-for-mending.patch | 8 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...-Halloween-options-and-optimizations.patch | 8 +- ...-Campfire-option-for-lit-when-placed.patch | 4 +- ...xtinguish-fire-blocks-with-snowballs.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- .../server/0211-Signs-allow-color-codes.patch | 4 +- .../0213-Mobs-always-drop-experience.patch | 280 +++++++++--------- ...oe-to-replant-crops-and-nether-warts.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0217-Mob-head-visibility-percent.patch | 20 +- ...-Stop-bees-from-dying-after-stinging.patch | 6 +- ...Configurable-farmland-trample-height.patch | 6 +- ...Configurable-player-pickup-exp-delay.patch | 6 +- patches/server/0224-Allow-void-trading.patch | 6 +- .../0225-Configurable-phantom-size.patch | 8 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0228-Lobotomize-stuck-villagers.patch | 6 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...awner-not-spawning-water-animals-cor.patch | 4 +- .../0232-Anvil-repair-damage-options.patch | 4 +- ...e-turtle-egg-trampling-with-feather-.patch | 4 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0237-Stonecutter-damage.patch | 4 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- ...0239-Add-config-for-snow-on-blue-ice.patch | 4 +- .../0240-Skeletons-eat-wither-roses.patch | 6 +- ...241-Enchantment-Table-Persists-Lapis.patch | 4 +- ...-for-sculk-shrieker-can_summon-state.patch | 4 +- .../0245-Config-to-not-let-coral-die.patch | 4 +- ...0247-Add-toggle-for-RNG-manipulation.patch | 6 +- ...ng-option-to-ignore-creative-players.patch | 6 +- ...254-Add-skeleton-bow-accuracy-option.patch | 8 +- ...low-creeper-to-encircle-target-when-.patch | 6 +- ...leport-to-spawn-on-nether-ceiling-da.patch | 8 +- .../server/0269-End-Crystal-Cramming.patch | 6 +- ...beacon-effects-when-covered-by-tinte.patch | 4 +- ...fig-to-remove-explosion-radius-clamp.patch | 4 +- ...able-sugarcane-cactus-and-netherwart.patch | 4 +- .../server/0278-Shears-can-defuse-TNT.patch | 4 +- ...-Option-Ocelot-Spawn-Under-Sea-Level.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 6 +- .../0283-place-end-crystal-on-any-block.patch | 6 +- ...-Configurable-villager-search-radius.patch | 6 +- ...n-to-make-ravagers-afraid-of-rabbits.patch | 6 +- 147 files changed, 763 insertions(+), 774 deletions(-) diff --git a/patches/server/0057-Implement-elytra-settings.patch b/patches/server/0057-Implement-elytra-settings.patch index f6137ee1f..0431641d7 100644 --- a/patches/server/0057-Implement-elytra-settings.patch +++ b/patches/server/0057-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6f7188ccba2675264ba8fbfd05cacc1c60211157..b183a9e42178ff02c5d70abacee3cfaa7b7b93c3 100644 +index e7853a16674ee748ebbf378044cb484cfdf6b73e..0c607578b493496e79ea08cdf752828252a66c47 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3558,7 +3558,16 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -46,18 +46,10 @@ index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6 itemStack.shrink(1); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 00665c3e81264b440cd27431f7632f3bc2b1ceef..d36b5ddc360e4f4cca3ef5c1b5b3d0cbad02614b 100644 +index 00665c3e81264b440cd27431f7632f3bc2b1ceef..88db87941bfc84bec7a2dcd3c750a854cac72006 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -685,6 +685,7 @@ public final class ItemStack implements DataComponentHolder { - if (player == null || !player.hasInfiniteMaterials() || force) { // Paper - if (amount > 0) { - int originalDamage = amount; // Paper - Expand PlayerItemDamageEvent -+ // (getItem() == Items.ELYTRA && player != null && player.level().purpurConfig.elytraIgnoreUnbreaking) ? 0 : // Purpur - amount = EnchantmentHelper.processDurabilityChange(world, this, amount); - // CraftBukkit start - if (player instanceof ServerPlayer serverPlayer) { // Paper - Add EntityDamageItemEvent -@@ -750,6 +751,12 @@ public final class ItemStack implements DataComponentHolder { +@@ -750,6 +750,12 @@ public final class ItemStack implements DataComponentHolder { } this.hurtAndBreak(amount, worldserver, entity, (item) -> { // Paper - Add EntityDamageItemEvent @@ -90,22 +82,20 @@ index f1b2d388a1a40a1d909a2e726f32d6c15e1eb0eb..4934bae61114b49a9f8d0ed044fbb881 entityhuman.startAutoSpinAttack(20, 8.0F, stack); if (entityhuman.onGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f980e39b09f38e1c8265a8fe65de91178579326f..4d7a85f1ece3a60404474ad492edb2d8f097a6a0 100644 +index f980e39b09f38e1c8265a8fe65de91178579326f..f5eb2e02099ca46b44512163fd378a49c9b4b0ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -112,6 +112,19 @@ public class PurpurWorldConfig { +@@ -112,6 +112,17 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } + public int elytraDamagePerSecond = 1; + public double elytraDamageMultiplyBySpeed = 0; -+ public boolean elytraIgnoreUnbreaking = false; + public int elytraDamagePerFireworkBoost = 0; + public int elytraDamagePerTridentBoost = 0; + private void elytraSettings() { + elytraDamagePerSecond = getInt("gameplay-mechanics.elytra.damage-per-second", elytraDamagePerSecond); + elytraDamageMultiplyBySpeed = getDouble("gameplay-mechanics.elytra.damage-multiplied-by-speed", elytraDamageMultiplyBySpeed); -+ elytraIgnoreUnbreaking = getBoolean("gameplay-mechanics.elytra.ignore-unbreaking", elytraIgnoreUnbreaking); + elytraDamagePerFireworkBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost); + elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); + } diff --git a/patches/server/0058-Item-entity-immunities.patch b/patches/server/0058-Item-entity-immunities.patch index 0b2d53140..7d2188691 100644 --- a/patches/server/0058-Item-entity-immunities.patch +++ b/patches/server/0058-Item-entity-immunities.patch @@ -117,10 +117,10 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d7a85f1ece3a60404474ad492edb2d8f097a6a0..d020ee719367487302d57a2806524f15f5401289 100644 +index f5eb2e02099ca46b44512163fd378a49c9b4b0ba..80b2c27eb66749fa74620f12899cf728043d252f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -125,6 +125,49 @@ public class PurpurWorldConfig { +@@ -123,6 +123,49 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0062-Configurable-jockey-options.patch b/patches/server/0062-Configurable-jockey-options.patch index 119e737b4..08b743a19 100644 --- a/patches/server/0062-Configurable-jockey-options.patch +++ b/patches/server/0062-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index 883cd9a96a1d4276ca10c5558b553c36a1bb0d79..0dcf5638e12c7670e6a5e577210e2542 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529a1efa849 100644 +index 80b2c27eb66749fa74620f12899cf728043d252f..af58101a8c364740b5f0fb1d859d0c57f7e91eac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -610,6 +610,9 @@ public class PurpurWorldConfig { +@@ -608,6 +608,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -621,6 +624,9 @@ public class PurpurWorldConfig { +@@ -619,6 +622,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 d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 } public boolean elderGuardianRidable = false; -@@ -869,6 +875,9 @@ public class PurpurWorldConfig { +@@ -867,6 +873,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -880,6 +889,9 @@ public class PurpurWorldConfig { +@@ -878,6 +887,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 d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 } public boolean illusionerRidable = false; -@@ -1696,6 +1708,9 @@ public class PurpurWorldConfig { +@@ -1694,6 +1706,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1707,6 +1722,9 @@ public class PurpurWorldConfig { +@@ -1705,6 +1720,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 d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 } public boolean zombieHorseRidable = false; -@@ -1743,6 +1761,9 @@ public class PurpurWorldConfig { +@@ -1741,6 +1759,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1754,6 +1775,9 @@ public class PurpurWorldConfig { +@@ -1752,6 +1773,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 d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 } public boolean zombifiedPiglinRidable = false; -@@ -1761,6 +1785,9 @@ public class PurpurWorldConfig { +@@ -1759,6 +1783,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1772,5 +1799,8 @@ public class PurpurWorldConfig { +@@ -1770,5 +1797,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/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index e3571cf44..59c83166a 100644 --- a/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -256,10 +256,10 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac 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 5fa2939889d7a294d4e0afe444bf0529a1efa849..49ac8f8b8c33560dfae7871eb325ef47127d3654 100644 +index af58101a8c364740b5f0fb1d859d0c57f7e91eac..313b22d3cba602f35a799af0656cf514f1ff1c83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1087,6 +1087,9 @@ public class PurpurWorldConfig { +@@ -1085,6 +1085,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -269,7 +269,7 @@ index 5fa2939889d7a294d4e0afe444bf0529a1efa849..49ac8f8b8c33560dfae7871eb325ef47 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1108,6 +1111,9 @@ public class PurpurWorldConfig { +@@ -1106,6 +1109,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0064-Add-phantom-spawning-options.patch b/patches/server/0064-Add-phantom-spawning-options.patch index e689962ce..55a442d9e 100644 --- a/patches/server/0064-Add-phantom-spawning-options.patch +++ b/patches/server/0064-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f for (int l = 0; l < k; ++l) { // Paper start - PhantomPreSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 49ac8f8b8c33560dfae7871eb325ef47127d3654..812a95f388302a0c860cd9addec24697be50b781 100644 +index 313b22d3cba602f35a799af0656cf514f1ff1c83..56c7d54c076182e1f43fcafc533b04b74aabe62f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1090,6 +1090,12 @@ public class PurpurWorldConfig { +@@ -1088,6 +1088,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index 49ac8f8b8c33560dfae7871eb325ef47127d3654..812a95f388302a0c860cd9addec24697 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1114,6 +1120,12 @@ public class PurpurWorldConfig { +@@ -1112,6 +1118,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0065-Implement-bed-explosion-options.patch b/patches/server/0065-Implement-bed-explosion-options.patch index 944c2f536..a44103aa2 100644 --- a/patches/server/0065-Implement-bed-explosion-options.patch +++ b/patches/server/0065-Implement-bed-explosion-options.patch @@ -27,10 +27,10 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 812a95f388302a0c860cd9addec24697be50b781..35d387e70b2bb75b68b01199be617888036957fa 100644 +index 56c7d54c076182e1f43fcafc533b04b74aabe62f..91ec52442ef175781ebd661521ed8b1ec889c582 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -284,6 +284,27 @@ public class PurpurWorldConfig { +@@ -282,6 +282,27 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch index cbfd0fd46..8de87d131 100644 --- a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35d387e70b2bb75b68b01199be617888036957fa..f91548d91fbe690bdddcc63da8459f0a30a72899 100644 +index 91ec52442ef175781ebd661521ed8b1ec889c582..2894be6907fdb07b23598b1c5ba2becf08e5edf3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -324,6 +324,27 @@ public class PurpurWorldConfig { +@@ -322,6 +322,27 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0069-Entity-lifespan.patch b/patches/server/0069-Entity-lifespan.patch index 79ce86497..2536a7053 100644 --- a/patches/server/0069-Entity-lifespan.patch +++ b/patches/server/0069-Entity-lifespan.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 086cb752a2d1e667a73840bb1599e73a08293b71..94f8e4c9f44b2cd82108eb1c213cc33497cc200d 100644 +index 68c4e3d9a3f928a52357e25820ac73adbfb3332c..ce1901c683c44893780342f7a3914613abc44b0b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2752,6 +2752,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -94,10 +94,10 @@ index 091d2b1646068657120ee4244d79cbf7867a9cf7..149d272775783aab243f0707ee11f702 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f91548d91fbe690bdddcc63da8459f0a30a72899..7c7d8e3d3e2a9dca29d489fa2ce3cf101a07e124 100644 +index 2894be6907fdb07b23598b1c5ba2becf08e5edf3..beb1f965ac90b29f6eb8ed19da1d38163e8c15dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -125,6 +125,11 @@ public class PurpurWorldConfig { +@@ -123,6 +123,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 624637757..21e498bad 100644 --- a/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -38,7 +38,7 @@ index 71d96fad8cceb9f5699620510b9b8cc4a6fa94f2..3833be24c44c0da3ffcfc1929e2c4a4b + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b183a9e42178ff02c5d70abacee3cfaa7b7b93c3..d9215a42c8dd761fa04269c936ed0cca3d96ff84 100644 +index 0c607578b493496e79ea08cdf752828252a66c47..d207f9107b2d78bbe5f4eb400f825829ea4f4688 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -462,6 +462,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -50,10 +50,10 @@ index b183a9e42178ff02c5d70abacee3cfaa7b7b93c3..d9215a42c8dd761fa04269c936ed0cca } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c7d8e3d3e2a9dca29d489fa2ce3cf101a07e124..9ffa9b0f96787f80d755afa793e4548fb80a0cd5 100644 +index beb1f965ac90b29f6eb8ed19da1d38163e8c15dd..f2f965d6ffb56418f7ed1d511e94170d4eb2313f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -242,6 +242,7 @@ public class PurpurWorldConfig { +@@ -240,6 +240,7 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -61,7 +61,7 @@ index 7c7d8e3d3e2a9dca29d489fa2ce3cf101a07e124..9ffa9b0f96787f80d755afa793e4548f private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -255,6 +256,7 @@ public class PurpurWorldConfig { +@@ -253,6 +254,7 @@ public class PurpurWorldConfig { idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); diff --git a/patches/server/0071-Squid-EAR-immunity.patch b/patches/server/0071-Squid-EAR-immunity.patch index 7ff56d3c1..11549c95e 100644 --- a/patches/server/0071-Squid-EAR-immunity.patch +++ b/patches/server/0071-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 9ffa9b0f96787f80d755afa793e4548fb80a0cd5..bc41aa68be7298b7b1f89490e53d38f3bc34e56b 100644 +index f2f965d6ffb56418f7ed1d511e94170d4eb2313f..41a164c0009e6c7112541b49f26ba9849a16f6b1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1475,6 +1475,7 @@ public class PurpurWorldConfig { +@@ -1473,6 +1473,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 9ffa9b0f96787f80d755afa793e4548fb80a0cd5..bc41aa68be7298b7b1f89490e53d38f3 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1484,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1482,6 +1483,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0072-Phantoms-burn-in-light.patch b/patches/server/0072-Phantoms-burn-in-light.patch index 8af7e6a91..a0124e62a 100644 --- a/patches/server/0072-Phantoms-burn-in-light.patch +++ b/patches/server/0072-Phantoms-burn-in-light.patch @@ -51,10 +51,10 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc41aa68be7298b7b1f89490e53d38f3bc34e56b..a63b86feb48621698794029ec42404ba5bad9aca 100644 +index 41a164c0009e6c7112541b49f26ba9849a16f6b1..33ea997e6517fb39a3f676c131824cffccdaf5af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1145,6 +1145,9 @@ public class PurpurWorldConfig { +@@ -1143,6 +1143,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -64,7 +64,7 @@ index bc41aa68be7298b7b1f89490e53d38f3bc34e56b..a63b86feb48621698794029ec42404ba private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1175,6 +1178,9 @@ public class PurpurWorldConfig { +@@ -1173,6 +1176,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0073-Configurable-villager-breeding.patch b/patches/server/0073-Configurable-villager-breeding.patch index f1058b872..3c053ae9e 100644 --- a/patches/server/0073-Configurable-villager-breeding.patch +++ b/patches/server/0073-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 33c0ac18fa4c5b47d60cc774fe72d2d68c14e025..ad3e340c2487aa1dc2ed3ab08fa8747b private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a63b86feb48621698794029ec42404ba5bad9aca..6ed32f868a3bb6e7674a4a901dfbda20768d5d55 100644 +index 33ea997e6517fb39a3f676c131824cffccdaf5af..73c4d1f29199af355cc467c7322637044805ea52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1633,6 +1633,7 @@ public class PurpurWorldConfig { +@@ -1631,6 +1631,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index a63b86feb48621698794029ec42404ba5bad9aca..6ed32f868a3bb6e7674a4a901dfbda20 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1645,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1643,6 +1644,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0074-Redstone-deactivates-spawners.patch b/patches/server/0074-Redstone-deactivates-spawners.patch index d4b835764..39c1d49fb 100644 --- a/patches/server/0074-Redstone-deactivates-spawners.patch +++ b/patches/server/0074-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ed32f868a3bb6e7674a4a901dfbda20768d5d55..f904a4142262e27ebc6e3cc44a277a07f3a45e00 100644 +index 73c4d1f29199af355cc467c7322637044805ea52..1b4b248d79d0e80750c957e1d76d1572c2528d6e 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 { +@@ -350,6 +350,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0075-Totems-work-in-inventory.patch b/patches/server/0075-Totems-work-in-inventory.patch index 114772769..6605eb980 100644 --- a/patches/server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0075-Totems-work-in-inventory.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d9215a42c8dd761fa04269c936ed0cca3d96ff84..7fa56c1bb7ba6a535a486cd452358b6d2dc59d9b 100644 +index d207f9107b2d78bbe5f4eb400f825829ea4f4688..62bf75a8adbe267663b88c2709d042c4b473907c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1630,6 +1630,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,10 +28,10 @@ index d9215a42c8dd761fa04269c936ed0cca3d96ff84..7fa56c1bb7ba6a535a486cd452358b6d EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f904a4142262e27ebc6e3cc44a277a07f3a45e00..1b3e2b9dc1f4a005c43a3ec52d182d4a4c08b84a 100644 +index 1b4b248d79d0e80750c957e1d76d1572c2528d6e..8dc68f00b488da2881c35061bc729edfe295a1c0 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 { +@@ -241,6 +241,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -39,7 +39,7 @@ index f904a4142262e27ebc6e3cc44a277a07f3a45e00..1b3e2b9dc1f4a005c43a3ec52d182d4a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -257,6 +258,7 @@ public class PurpurWorldConfig { +@@ -255,6 +256,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/0076-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch index 8ccaf53ef..0996c89d1 100644 --- a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch @@ -21,10 +21,10 @@ index eb6dce8b2dcc7f4e63c69cfa6acbd9b36a923706..feb7eb93bd20e141ff86ed2e91b9cd0f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b3e2b9dc1f4a005c43a3ec52d182d4a4c08b84a..d734ee6416b2549740dc60bb3bd2d7f894a5328a 100644 +index 8dc68f00b488da2881c35061bc729edfe295a1c0..afe3b998b4ef5b086969e58a656adedf8b9600ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1660,6 +1660,7 @@ public class PurpurWorldConfig { +@@ -1658,6 +1658,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -32,7 +32,7 @@ index 1b3e2b9dc1f4a005c43a3ec52d182d4a4c08b84a..d734ee6416b2549740dc60bb3bd2d7f8 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1670,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1669,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0077-Dispensers-place-anvils-option.patch b/patches/server/0077-Dispensers-place-anvils-option.patch index 1cb5e18d1..364a79e70 100644 --- a/patches/server/0077-Dispensers-place-anvils-option.patch +++ b/patches/server/0077-Dispensers-place-anvils-option.patch @@ -32,10 +32,10 @@ index 7bf250bba4179a506c0a39b7866a9389552d2905..6548e595ab5c06044be438bc7eac181f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d734ee6416b2549740dc60bb3bd2d7f894a5328a..7a5432738f06500735647e30077ca58bcba2aeb9 100644 +index afe3b998b4ef5b086969e58a656adedf8b9600ea..3dc99b3cbba5482d52052ded3217059ec6da3324 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -315,8 +315,10 @@ public class PurpurWorldConfig { +@@ -313,8 +313,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0078-Allow-anvil-colors.patch b/patches/server/0078-Allow-anvil-colors.patch index 993cf4e80..aa6a2b1bc 100644 --- a/patches/server/0078-Allow-anvil-colors.patch +++ b/patches/server/0078-Allow-anvil-colors.patch @@ -64,10 +64,10 @@ index 99bfa7cdc58c690d6f0c742dafedd40cace3223f..2d300905c05c7c23a4da30b3651b3313 } } else if (itemstack.has(DataComponents.CUSTOM_NAME)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7a5432738f06500735647e30077ca58bcba2aeb9..a17f35a72227ad4c149434a294c6d63d8e3c8f9b 100644 +index 3dc99b3cbba5482d52052ded3217059ec6da3324..2c31025c2554858936118438d45c873290484f4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -293,6 +293,13 @@ public class PurpurWorldConfig { +@@ -291,6 +291,13 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch index 4a1dfa306..7d08b4971 100644 --- a/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index e60464efd9986e1cf857d8595b13535df7ffc7b1..30da8d977d5b591d6bce619eba71181c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a17f35a72227ad4c149434a294c6d63d8e3c8f9b..dab4fb7e985e6b087c0f617685ac30a28f535e51 100644 +index 2c31025c2554858936118438d45c873290484f4b..28ab98c61bf9e1371b6fdf254f2fcc2cd65acdd8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -632,6 +632,7 @@ public class PurpurWorldConfig { +@@ -630,6 +630,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index a17f35a72227ad4c149434a294c6d63d8e3c8f9b..dab4fb7e985e6b087c0f617685ac30a2 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -644,6 +645,7 @@ public class PurpurWorldConfig { +@@ -642,6 +643,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch index af997c3c2..0bbcd511f 100644 --- a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index c8f7c43134e7c51ce8af5b3c1a28c11db67715a2..5b98889715bf62eb4f15c0b45ada2c70 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dab4fb7e985e6b087c0f617685ac30a28f535e51..5c94f235d1979833e77692646f67b39db7347938 100644 +index 28ab98c61bf9e1371b6fdf254f2fcc2cd65acdd8..3c87babcb6c9a0bbbf433cce45739e218cca3824 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1500,6 +1500,7 @@ public class PurpurWorldConfig { +@@ -1498,6 +1498,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index dab4fb7e985e6b087c0f617685ac30a28f535e51..5c94f235d1979833e77692646f67b39d private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1510,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1508,6 +1509,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/0083-Customizable-wither-health-and-healing.patch b/patches/server/0083-Customizable-wither-health-and-healing.patch index 606658db3..17da06508 100644 --- a/patches/server/0083-Customizable-wither-health-and-healing.patch +++ b/patches/server/0083-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 4b1821ad50103cb996bb3ff9b9668f22ffff518f..402f67ca333e09c684ae083071715734 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 5c94f235d1979833e77692646f67b39db7347938..bb3b087b752d8de36c6e7aed01c83cba4607c74d 100644 +index 3c87babcb6c9a0bbbf433cce45739e218cca3824..8c7f9a391935e1527856163dd6860abc3514c738 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1737,6 +1737,8 @@ public class PurpurWorldConfig { +@@ -1735,6 +1735,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 5c94f235d1979833e77692646f67b39db7347938..bb3b087b752d8de36c6e7aed01c83cba private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1752,6 +1754,8 @@ public class PurpurWorldConfig { +@@ -1750,6 +1752,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch index 1e8a2cc29..04593bd63 100644 --- a/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch @@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bb3b087b752d8de36c6e7aed01c83cba4607c74d..5cb22affc431441619af3d4e48ea546e694e9d30 100644 +index 8c7f9a391935e1527856163dd6860abc3514c738..5c880a028a9c62c109500a46e2cf369886f094b2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -69,6 +69,12 @@ public class PurpurWorldConfig { @@ -75,7 +75,7 @@ index bb3b087b752d8de36c6e7aed01c83cba4607c74d..5cb22affc431441619af3d4e48ea546e 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)); -@@ -235,6 +241,21 @@ public class PurpurWorldConfig { +@@ -233,6 +239,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch index 927adb12d..e11a3fd4b 100644 --- a/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch @@ -7,10 +7,10 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6572269ca6907c384d5798b91ca1851ece5e8070..578ae5e0fb1810085f13e83cad320fa5325abfff 100644 +index a321648355e0a85739329b6f82461c812c823d37..f9a5248da33fe7f224411cc3b9b35fb65b5d4572 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -316,6 +316,40 @@ public class PurpurWorldConfig { +@@ -314,6 +314,40 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 4c07aa514..53d4405a4 100644 --- a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,10 +70,10 @@ index 43c48bb14957b93ee3b0191360c09f710bc008e0..b39d8ee4c6e9483a15991be3b1440384 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 578ae5e0fb1810085f13e83cad320fa5325abfff..bd390f5201dd8129213048e7e2fc6b3e9763934a 100644 +index f9a5248da33fe7f224411cc3b9b35fb65b5d4572..60444ab2a15f2e1f2ea0bf291cc3f932c3f1dcdc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1871,6 +1871,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1869,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 578ae5e0fb1810085f13e83cad320fa5325abfff..bd390f5201dd8129213048e7e2fc6b3e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1885,6 +1886,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +1884,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/0089-Flying-squids-Oh-my.patch b/patches/server/0089-Flying-squids-Oh-my.patch index 320735f82..7162e5318 100644 --- a/patches/server/0089-Flying-squids-Oh-my.patch +++ b/patches/server/0089-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 2b84322a622454c58c6481abbb13031a2e5c488f..8ed02b9737c47a19aa6a38789c19947e float g = Mth.cos(f) * 0.2F; float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bd390f5201dd8129213048e7e2fc6b3e9763934a..4160c8c73a0fe7714a5e4aaff787fd642365aec9 100644 +index 60444ab2a15f2e1f2ea0bf291cc3f932c3f1dcdc..658978a0087c15a54259143704ee608d88807250 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -923,10 +923,12 @@ public class PurpurWorldConfig { +@@ -921,10 +921,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index bd390f5201dd8129213048e7e2fc6b3e9763934a..4160c8c73a0fe7714a5e4aaff787fd64 } public boolean goatRidable = false; -@@ -1558,6 +1560,7 @@ public class PurpurWorldConfig { +@@ -1556,6 +1558,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index bd390f5201dd8129213048e7e2fc6b3e9763934a..4160c8c73a0fe7714a5e4aaff787fd64 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1569,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1567,6 +1570,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/0090-Configurable-daylight-cycle.patch b/patches/server/0090-Configurable-daylight-cycle.patch index 17c1f222a..fd209b77b 100644 --- a/patches/server/0090-Configurable-daylight-cycle.patch +++ b/patches/server/0090-Configurable-daylight-cycle.patch @@ -88,7 +88,7 @@ index 6a010ebf844a37d3dc767e4a828e0a525d66aa9f..613cf0562d2a82e2a7b9bf1d3143e9c4 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 4160c8c73a0fe7714a5e4aaff787fd642365aec9..98c20224bae71c46878a93d7d05de0c650d45dae 100644 +index 658978a0087c15a54259143704ee608d88807250..dcb002d0f292c36133293776c4783707028a0a0c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,13 @@ public class PurpurWorldConfig { @@ -104,4 +104,4 @@ index 4160c8c73a0fe7714a5e4aaff787fd642365aec9..98c20224bae71c46878a93d7d05de0c6 + public int elytraDamagePerSecond = 1; public double elytraDamageMultiplyBySpeed = 0; - public boolean elytraIgnoreUnbreaking = false; + public int elytraDamagePerFireworkBoost = 0; diff --git a/patches/server/0091-Furnace-uses-lava-from-underneath.patch b/patches/server/0091-Furnace-uses-lava-from-underneath.patch index 506778fc8..70d88c4f8 100644 --- a/patches/server/0091-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0091-Furnace-uses-lava-from-underneath.patch @@ -39,10 +39,10 @@ index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec3 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder 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 98c20224bae71c46878a93d7d05de0c650d45dae..47c3cd2dcf3b2afbf30a9a4e89a83a6ad728a614 100644 +index dcb002d0f292c36133293776c4783707028a0a0c..cf21fb4a964f3b42061fc5c5ed47af0cb115cd06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -397,6 +397,17 @@ public class PurpurWorldConfig { +@@ -395,6 +395,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 5e709bd8a..de04f5278 100644 --- a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f4801b9e8fa7a6e34a818eadac6d59473b7696e..3f4a2f169e8e0437fccc7c6c8d577a84ce50d7b4 100644 +index 96080c6cc54495e7f85cbc2a410be0a946adc0f3..c5e81842eb5cd47c7cf33cec54335a31d6d891e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -398,8 +398,10 @@ public class PurpurWorldConfig { +@@ -396,8 +396,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0095-Make-entity-breeding-times-configurable.patch b/patches/server/0095-Make-entity-breeding-times-configurable.patch index 9fd7caa36..004b3f9f2 100644 --- a/patches/server/0095-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0095-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index 373bf138f8b77413e6c29724e01572f64e0bc005..d43e26af79be5078124d8013167f452b public boolean canBeLeashed() { return true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae927960f3893d3 100644 +index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f5917a6d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -490,20 +490,24 @@ public class PurpurWorldConfig { +@@ -488,20 +488,24 @@ public class PurpurWorldConfig { public boolean armadilloRidableInWater = true; public boolean armadilloControllable = true; public double armadilloMaxHealth = 12.0D; @@ -566,7 +566,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean batRidable = false; -@@ -543,6 +547,7 @@ public class PurpurWorldConfig { +@@ -541,6 +545,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -574,7 +574,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -554,6 +559,7 @@ public class PurpurWorldConfig { +@@ -552,6 +557,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -582,7 +582,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean blazeRidable = false; -@@ -592,6 +598,7 @@ public class PurpurWorldConfig { +@@ -590,6 +596,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -590,7 +590,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -600,6 +607,7 @@ public class PurpurWorldConfig { +@@ -598,6 +605,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -598,7 +598,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean catRidable = false; -@@ -609,6 +617,7 @@ public class PurpurWorldConfig { +@@ -607,6 +615,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -606,7 +606,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -622,6 +631,7 @@ public class PurpurWorldConfig { +@@ -620,6 +629,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); @@ -614,7 +614,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean caveSpiderRidable = false; -@@ -645,6 +655,7 @@ public class PurpurWorldConfig { +@@ -643,6 +653,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -622,7 +622,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -656,6 +667,7 @@ public class PurpurWorldConfig { +@@ -654,6 +665,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -630,7 +630,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean codRidable = false; -@@ -677,6 +689,7 @@ public class PurpurWorldConfig { +@@ -675,6 +687,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -638,7 +638,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -688,6 +701,7 @@ public class PurpurWorldConfig { +@@ -686,6 +699,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -646,7 +646,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean creeperRidable = false; -@@ -739,6 +753,7 @@ public class PurpurWorldConfig { +@@ -737,6 +751,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -654,7 +654,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -754,6 +769,7 @@ public class PurpurWorldConfig { +@@ -752,6 +767,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); @@ -662,7 +662,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean drownedRidable = false; -@@ -873,6 +889,7 @@ public class PurpurWorldConfig { +@@ -871,6 +887,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -670,7 +670,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -884,17 +901,20 @@ public class PurpurWorldConfig { +@@ -882,17 +899,20 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -691,7 +691,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean ghastRidable = false; -@@ -962,11 +982,13 @@ public class PurpurWorldConfig { +@@ -960,11 +980,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = true; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -705,7 +705,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean guardianRidable = false; -@@ -987,6 +1009,7 @@ public class PurpurWorldConfig { +@@ -985,6 +1007,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = true; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -713,7 +713,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -997,6 +1020,7 @@ public class PurpurWorldConfig { +@@ -995,6 +1018,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -721,7 +721,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean horseRidableInWater = false; -@@ -1006,6 +1030,7 @@ public class PurpurWorldConfig { +@@ -1004,6 +1028,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -729,7 +729,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1021,6 +1046,7 @@ public class PurpurWorldConfig { +@@ -1019,6 +1044,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); @@ -737,7 +737,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean huskRidable = false; -@@ -1098,6 +1124,7 @@ public class PurpurWorldConfig { +@@ -1096,6 +1122,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -745,7 +745,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1115,6 +1142,7 @@ public class PurpurWorldConfig { +@@ -1113,6 +1140,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); @@ -753,7 +753,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean magmaCubeRidable = false; -@@ -1143,6 +1171,7 @@ public class PurpurWorldConfig { +@@ -1141,6 +1169,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = true; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -761,7 +761,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1153,6 +1182,7 @@ public class PurpurWorldConfig { +@@ -1151,6 +1180,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -769,7 +769,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean muleRidableInWater = false; -@@ -1162,6 +1192,7 @@ public class PurpurWorldConfig { +@@ -1160,6 +1190,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -777,7 +777,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1177,12 +1208,14 @@ public class PurpurWorldConfig { +@@ -1175,12 +1206,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); @@ -792,7 +792,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1193,12 +1226,14 @@ public class PurpurWorldConfig { +@@ -1191,12 +1224,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -807,7 +807,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1209,6 +1244,7 @@ public class PurpurWorldConfig { +@@ -1207,6 +1242,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -815,7 +815,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean parrotRidable = false; -@@ -1292,6 +1328,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1326,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -823,7 +823,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1303,6 +1340,7 @@ public class PurpurWorldConfig { +@@ -1301,6 +1338,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -831,7 +831,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean piglinRidable = false; -@@ -1359,6 +1397,7 @@ public class PurpurWorldConfig { +@@ -1357,6 +1395,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -839,7 +839,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1372,6 +1411,7 @@ public class PurpurWorldConfig { +@@ -1370,6 +1409,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -847,7 +847,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean pufferfishRidable = false; -@@ -1394,6 +1434,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1432,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -855,7 +855,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1406,6 +1447,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1445,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); @@ -863,7 +863,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean ravagerRidable = false; -@@ -1442,6 +1484,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1482,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = true; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -871,7 +871,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1452,6 +1495,7 @@ public class PurpurWorldConfig { +@@ -1450,6 +1493,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -879,7 +879,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean shulkerRidable = false; -@@ -1575,11 +1619,13 @@ public class PurpurWorldConfig { +@@ -1573,11 +1617,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -893,7 +893,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean squidRidable = false; -@@ -1638,6 +1684,7 @@ public class PurpurWorldConfig { +@@ -1636,6 +1682,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -901,7 +901,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1648,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1646,6 +1693,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -909,7 +909,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean tadpoleRidable = false; -@@ -1668,6 +1716,7 @@ public class PurpurWorldConfig { +@@ -1666,6 +1714,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -917,7 +917,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1685,6 +1734,7 @@ public class PurpurWorldConfig { +@@ -1683,6 +1732,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); @@ -925,7 +925,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean tropicalFishRidable = false; -@@ -1705,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1703,6 +1753,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -933,7 +933,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1715,6 +1766,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1764,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -941,7 +941,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean vexRidable = false; -@@ -1742,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1740,6 +1792,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -949,7 +949,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1755,6 +1808,7 @@ public class PurpurWorldConfig { +@@ -1753,6 +1806,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); @@ -957,7 +957,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 } public boolean vindicatorRidable = false; -@@ -1866,6 +1920,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1918,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -965,7 +965,7 @@ index 5009e08e818e69b814e67a40bdc129f3ec64c183..3067e5b0704fe2018fbb846fdae92796 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1876,6 +1931,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +1929,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 7d5b3f040..3793d9f66 100644 --- a/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 8604db61d2c8042d0399262cb60b98457e4f894c..ada2403856aeb7cb50c0b00fb1dad18b 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 8e963e38b1e1f070877082fcefc2ebd0ffcda7da..58e1d5c4164cbf57cfc23af354308586d5441a73 100644 +index 05107bdd7b8c28d413287166c9b764e1ff3b9f10..9aa3b20d592a20eb4ba6e3b51847464a4b455fcb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -845,6 +845,7 @@ public class PurpurWorldConfig { +@@ -843,6 +843,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 8e963e38b1e1f070877082fcefc2ebd0ffcda7da..58e1d5c4164cbf57cfc23af354308586 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -856,6 +857,7 @@ public class PurpurWorldConfig { +@@ -854,6 +855,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0099-Add-configurable-snowball-damage.patch b/patches/server/0099-Add-configurable-snowball-damage.patch index f40de2a34..4dadf1ffe 100644 --- a/patches/server/0099-Add-configurable-snowball-damage.patch +++ b/patches/server/0099-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 58e1d5c4164cbf57cfc23af354308586d5441a73..3dd9b621ee3d0b090510824de9e9882fe9cfc352 100644 +index 9aa3b20d592a20eb4ba6e3b51847464a4b455fcb..a455d0cfbcb26dfa5f664a81b8cff5b01c8555bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -370,6 +370,11 @@ public class PurpurWorldConfig { +@@ -368,6 +368,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch index f1d0675ce..8705ef361 100644 --- a/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch @@ -18,10 +18,10 @@ index 149d272775783aab243f0707ee11f702b35fa075..8103f13155ad66bbd077a38ae4697ad1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3dd9b621ee3d0b090510824de9e9882fe9cfc352..c17a99a7f700d996dfcd81e47f1981726843f509 100644 +index a455d0cfbcb26dfa5f664a81b8cff5b01c8555bf..272fbbc7b11c73ea38b80e9ee35c92c474dc161b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -154,8 +154,10 @@ public class PurpurWorldConfig { +@@ -152,8 +152,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch b/patches/server/0102-Snow-Golem-rate-of-fire-config.patch index 7a55dc50e..5c7952431 100644 --- a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0102-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 0060414b1d5afde56372ce121e9d37a1668cd03b..ee4d4a4fe314ee9bce69c96dd65d84ed 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 9796cc9969840e92a3376f0ceef58e297e2b4f8e..3f9ff605b9b7260fa3837624ac2c87d631a96031 100644 +index 31aeaac5010b862f69dec712a491a8007e2dfd2d..e6ab055185074eb8829681163079304c6b1681f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1618,6 +1618,10 @@ public class PurpurWorldConfig { +@@ -1616,6 +1616,10 @@ public class PurpurWorldConfig { public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 9796cc9969840e92a3376f0ceef58e297e2b4f8e..3f9ff605b9b7260fa3837624ac2c87d6 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1630,6 +1634,10 @@ public class PurpurWorldConfig { +@@ -1628,6 +1632,10 @@ public class PurpurWorldConfig { } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 3d8d38cfa..4e2537539 100644 --- a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f9ff605b9b7260fa3837624ac2c87d631a96031..f73ef11133266e5f5a87a5df469ae4fb3bb6af37 100644 +index e6ab055185074eb8829681163079304c6b1681f5..454ccd0a9aebb9b6f20515fa8dda4656ec767035 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1820,6 +1820,8 @@ public class PurpurWorldConfig { +@@ -1818,6 +1818,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index 3f9ff605b9b7260fa3837624ac2c87d631a96031..f73ef11133266e5f5a87a5df469ae4fb private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1834,6 +1836,8 @@ public class PurpurWorldConfig { +@@ -1832,6 +1834,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/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index d5885b8df..7cd50e4a6 100644 --- a/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 0dcf5638e12c7670e6a5e577210e2542de1fd38b..47419219d4f435a17344361f4a60d5aa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f73ef11133266e5f5a87a5df469ae4fb3bb6af37..6c31c3c85ece5e90da951069336bdb9a58d2d39b 100644 +index 454ccd0a9aebb9b6f20515fa8dda4656ec767035..d7fe88655b6546d04e8dc08ae72f6108a57e58ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2066,6 +2066,7 @@ public class PurpurWorldConfig { +@@ -2064,6 +2064,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index f73ef11133266e5f5a87a5df469ae4fb3bb6af37..6c31c3c85ece5e90da951069336bdb9a private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2080,5 +2081,6 @@ public class PurpurWorldConfig { +@@ -2078,5 +2079,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/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch index 41cc9d5fb..b70e2f940 100644 --- a/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,10 +182,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c31c3c85ece5e90da951069336bdb9a58d2d39b..ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8 100644 +index d7fe88655b6546d04e8dc08ae72f6108a57e58ac..184521c910d514db613bca0e2f25ba89aae4e4bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1949,6 +1949,8 @@ public class PurpurWorldConfig { +@@ -1947,6 +1947,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -194,7 +194,7 @@ index 6c31c3c85ece5e90da951069336bdb9a58d2d39b..ae2f7dcf51d9d6d357fff4de6e6dc63d public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1960,6 +1962,8 @@ public class PurpurWorldConfig { +@@ -1958,6 +1960,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0107-Configurable-default-collar-color.patch b/patches/server/0107-Configurable-default-collar-color.patch index 478c1354d..82994b050 100644 --- a/patches/server/0107-Configurable-default-collar-color.patch +++ b/patches/server/0107-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index 04d7e4bc6cc1deda5f53f6ae5f46d2402e0d0c10..5dd146d318851ce581a0d7841bd87ae9 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8..c74c86def59daa2c940c64b19ccc1c3cde5d36f4 100644 +index 184521c910d514db613bca0e2f25ba89aae4e4bd..15bc020c51b23afaf1aedc685231f069933f7e1b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -633,6 +633,7 @@ public class PurpurWorldConfig { +@@ -631,6 +631,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8..c74c86def59daa2c940c64b19ccc1c3c private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -647,6 +648,11 @@ public class PurpurWorldConfig { +@@ -645,6 +646,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 ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8..c74c86def59daa2c940c64b19ccc1c3c } public boolean caveSpiderRidable = false; -@@ -1949,6 +1955,7 @@ public class PurpurWorldConfig { +@@ -1947,6 +1953,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8..c74c86def59daa2c940c64b19ccc1c3c public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1962,6 +1969,11 @@ public class PurpurWorldConfig { +@@ -1960,6 +1967,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0108-Phantom-flames-on-swoop.patch b/patches/server/0108-Phantom-flames-on-swoop.patch index 525b448fc..b98f0d908 100644 --- a/patches/server/0108-Phantom-flames-on-swoop.patch +++ b/patches/server/0108-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c74c86def59daa2c940c64b19ccc1c3cde5d36f4..0cdd2837b85fd975d68c8fc035eba82e52ce4ddf 100644 +index 15bc020c51b23afaf1aedc685231f069933f7e1b..ab5cb0ccb086d8dddfbfe585e4ecca7360420c89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1311,6 +1311,7 @@ public class PurpurWorldConfig { +@@ -1309,6 +1309,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index c74c86def59daa2c940c64b19ccc1c3cde5d36f4..0cdd2837b85fd975d68c8fc035eba82e private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1344,6 +1345,7 @@ public class PurpurWorldConfig { +@@ -1342,6 +1343,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/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch index b507f0bea..b9b64a84b 100644 --- a/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 8fbfd18b3caeed769396b3ffb1b1778b2f38edc0..dbfe8f5d4df244cb694b73ea8763628c 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 0cdd2837b85fd975d68c8fc035eba82e52ce4ddf..909fa6725bd387414218f0612ac2da52b0f4e765 100644 +index ab5cb0ccb086d8dddfbfe585e4ecca7360420c89..6f0ec1857cc88acc0de63ad8ed07695ad6116182 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -407,6 +407,11 @@ public class PurpurWorldConfig { +@@ -405,6 +405,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0111-Striders-give-saddle-back.patch b/patches/server/0111-Striders-give-saddle-back.patch index 9f3d9bf3e..5d77f8fd1 100644 --- a/patches/server/0111-Striders-give-saddle-back.patch +++ b/patches/server/0111-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 0a297368678cafb92eb0374d1d410271c0d10033..13d40773ff8272ca081e852d4ae3dc09 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 909fa6725bd387414218f0612ac2da52b0f4e765..c4302416ca765a5387766ed7f508c750e68af074 100644 +index 6f0ec1857cc88acc0de63ad8ed07695ad6116182..77c93c43575e4578b6638823bab71fce8da1c628 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1723,6 +1723,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1721,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 909fa6725bd387414218f0612ac2da52b0f4e765..c4302416ca765a5387766ed7f508c750 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1734,6 +1735,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1733,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/0113-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch index 79d494e47..11cc7ebeb 100644 --- a/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index 025309a47e9683ec29cd94f997663b7faec1acb4..2dafba96353c208b89da7b65c0d56a51 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4302416ca765a5387766ed7f508c750e68af074..cd321796cf555647ebece5bdcf2f1efe1fcde35f 100644 +index 77c93c43575e4578b6638823bab71fce8da1c628..15b79e86bc58b7cbc916d9b48887e015eef58928 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -282,6 +282,19 @@ public class PurpurWorldConfig { +@@ -280,6 +280,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch index eaf0f3abd..43143c92b 100644 --- a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7fa56c1bb7ba6a535a486cd452358b6d2dc59d9b..897e9da03a4e1cc0cac5da542c9e695f49ae60e4 100644 +index 62bf75a8adbe267663b88c2709d042c4b473907c..fc560ddef3542f9bf566917c3af9072857f1bd04 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1808,7 +1808,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -18,7 +18,7 @@ index 7fa56c1bb7ba6a535a486cd452358b6d2dc59d9b..897e9da03a4e1cc0cac5da542c9e695f BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 694aaaf1c07e63e8e95831d0c8daa0dde0cf9634..1186bdd1f49fd5bef712912e816b151adb1326cf 100644 +index 8103f13155ad66bbd077a38ae4697ad14036b6a5..8b2dd71177b011c2a31e4959ca16057ad5288b22 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -707,7 +707,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -375,7 +375,7 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce96b1d36a1 100644 +index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f24661526151958b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,8 +114,11 @@ public class PurpurWorldConfig { @@ -402,7 +402,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 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); -@@ -432,9 +438,11 @@ public class PurpurWorldConfig { +@@ -430,9 +436,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -414,7 +414,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -459,6 +467,11 @@ public class PurpurWorldConfig { +@@ -457,6 +465,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -426,7 +426,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -488,10 +501,12 @@ public class PurpurWorldConfig { +@@ -486,10 +499,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; @@ -439,7 +439,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public int waterInfiniteRequiredSources = 2; -@@ -749,6 +764,7 @@ public class PurpurWorldConfig { +@@ -747,6 +762,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -447,7 +447,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -761,6 +777,7 @@ public class PurpurWorldConfig { +@@ -759,6 +775,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); @@ -455,7 +455,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean dolphinRidable = false; -@@ -855,6 +872,7 @@ public class PurpurWorldConfig { +@@ -853,6 +870,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -463,7 +463,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -871,6 +889,7 @@ public class PurpurWorldConfig { +@@ -869,6 +887,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -471,7 +471,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean endermanRidable = false; -@@ -879,6 +898,7 @@ public class PurpurWorldConfig { +@@ -877,6 +896,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -479,7 +479,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -891,6 +911,7 @@ public class PurpurWorldConfig { +@@ -889,6 +909,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); @@ -487,7 +487,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean endermiteRidable = false; -@@ -913,6 +934,7 @@ public class PurpurWorldConfig { +@@ -911,6 +932,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = true; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -495,7 +495,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -923,6 +945,7 @@ public class PurpurWorldConfig { +@@ -921,6 +943,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -503,7 +503,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean foxRidable = false; -@@ -931,6 +954,7 @@ public class PurpurWorldConfig { +@@ -929,6 +952,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -511,7 +511,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -943,6 +967,7 @@ public class PurpurWorldConfig { +@@ -941,6 +965,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); @@ -519,7 +519,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean frogRidable = false; -@@ -1390,6 +1415,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1413,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = true; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -527,7 +527,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1400,6 +1426,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1424,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -535,7 +535,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean piglinBruteRidable = false; -@@ -1422,6 +1449,7 @@ public class PurpurWorldConfig { +@@ -1420,6 +1447,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = true; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -543,7 +543,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1432,6 +1460,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1458,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -551,7 +551,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean polarBearRidable = false; -@@ -1478,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1476,6 +1505,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -559,7 +559,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1491,12 +1521,14 @@ public class PurpurWorldConfig { +@@ -1489,12 +1519,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); @@ -574,7 +574,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1507,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1537,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -582,7 +582,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean salmonRidable = false; -@@ -1528,6 +1561,7 @@ public class PurpurWorldConfig { +@@ -1526,6 +1559,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -590,7 +590,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1539,6 +1573,7 @@ public class PurpurWorldConfig { +@@ -1537,6 +1571,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -598,7 +598,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean shulkerRidable = false; -@@ -1561,6 +1596,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1594,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = true; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -606,7 +606,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1571,6 +1607,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1605,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -614,7 +614,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean skeletonRidable = false; -@@ -1648,6 +1685,7 @@ public class PurpurWorldConfig { +@@ -1646,6 +1683,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -622,7 +622,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1664,6 +1702,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1700,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); @@ -630,7 +630,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean snifferRidable = false; -@@ -1850,6 +1889,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1887,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -638,7 +638,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1866,6 +1906,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1904,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); @@ -646,7 +646,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean vindicatorRidable = false; -@@ -1938,6 +1979,7 @@ public class PurpurWorldConfig { +@@ -1936,6 +1977,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -654,7 +654,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1955,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +1995,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); @@ -662,7 +662,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 } public boolean witherSkeletonRidable = false; -@@ -2026,6 +2069,7 @@ public class PurpurWorldConfig { +@@ -2024,6 +2067,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -670,7 +670,7 @@ index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2041,6 +2085,7 @@ public class PurpurWorldConfig { +@@ -2039,6 +2083,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/0116-Farmland-trampling-changes.patch b/patches/server/0116-Farmland-trampling-changes.patch index 08b37470e..4592dfa5f 100644 --- a/patches/server/0116-Farmland-trampling-changes.patch +++ b/patches/server/0116-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dbcc1ba3b0fe58cc8b78b57c71bdde23163c0aef..87945b9d75d95ad18ac28f459d4a57dd0c8fbe99 100644 +index 9ce8392b1140d7300335d87e106b2643abbc8797..9789835b47df82bc55f429aa3ac481bbc75c198c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -443,10 +443,16 @@ public class PurpurWorldConfig { +@@ -441,10 +441,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0118-Fix-stuck-in-portals.patch b/patches/server/0118-Fix-stuck-in-portals.patch index 120877c9b..b1c425f75 100644 --- a/patches/server/0118-Fix-stuck-in-portals.patch +++ b/patches/server/0118-Fix-stuck-in-portals.patch @@ -17,7 +17,7 @@ index c23fed2780098e87dd74e7d4cb099678d3bd989a..dbfc8585340c8ddb8c706773b02346ca this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 020f42105e2fd04b109932dbd04d4d3d0274e2c9..23ffd93138490ff591deaf3a28416a401e04eee6 100644 +index 295acb77be8a2219e1f6cfe6e215695d763cfbd9..3e9bb7916e6440b3831871e2b8bcffbfc9172562 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3103,13 +3103,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -38,10 +38,10 @@ index 020f42105e2fd04b109932dbd04d4d3d0274e2c9..23ffd93138490ff591deaf3a28416a40 this.portalProcess = new PortalProcessor(portal, pos.immutable()); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d3b7626e5f60eb3356bc8b9dead1b72b15e441b..a4965866cc687a04cf12dbcf9f6ceff8218c0dee 100644 +index 026e34b409c67f30931cf2ec37ad3e4e948e7702..ff95bb88a394821018c3be3638a0da9c5ebaa35f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -318,6 +318,7 @@ public class PurpurWorldConfig { +@@ -316,6 +316,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -49,7 +49,7 @@ index 8d3b7626e5f60eb3356bc8b9dead1b72b15e441b..a4965866cc687a04cf12dbcf9f6ceff8 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -333,6 +334,7 @@ public class PurpurWorldConfig { +@@ -331,6 +332,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch index 5e706410c..0c7c0a137 100644 --- a/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch @@ -1199,10 +1199,10 @@ index 0d5e828a7fb6fd6facc04a27175541ac463c918e..05c63eb6cf8a7067105c58d244c7cc27 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1e78e23ac 100644 +index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb62fa25b07 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -567,11 +567,13 @@ public class PurpurWorldConfig { +@@ -565,11 +565,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1216,7 +1216,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean batRidable = false; -@@ -586,6 +588,7 @@ public class PurpurWorldConfig { +@@ -584,6 +586,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1224,7 +1224,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -604,6 +607,7 @@ public class PurpurWorldConfig { +@@ -602,6 +605,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1232,7 +1232,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean beeRidable = false; -@@ -612,6 +616,7 @@ public class PurpurWorldConfig { +@@ -610,6 +614,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1240,7 +1240,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -624,6 +629,7 @@ public class PurpurWorldConfig { +@@ -622,6 +627,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1248,7 +1248,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean blazeRidable = false; -@@ -631,6 +637,7 @@ public class PurpurWorldConfig { +@@ -629,6 +635,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1256,7 +1256,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -642,6 +649,7 @@ public class PurpurWorldConfig { +@@ -640,6 +647,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1264,7 +1264,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean boggedRidable = false; -@@ -683,6 +691,7 @@ public class PurpurWorldConfig { +@@ -681,6 +689,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1272,7 +1272,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -702,12 +711,14 @@ public class PurpurWorldConfig { +@@ -700,12 +709,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1287,7 +1287,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -718,6 +729,7 @@ public class PurpurWorldConfig { +@@ -716,6 +727,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1295,7 +1295,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean chickenRidable = false; -@@ -726,6 +738,7 @@ public class PurpurWorldConfig { +@@ -724,6 +736,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1303,7 +1303,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -738,11 +751,13 @@ public class PurpurWorldConfig { +@@ -736,11 +749,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); @@ -1317,7 +1317,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -752,6 +767,7 @@ public class PurpurWorldConfig { +@@ -750,6 +765,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1325,7 +1325,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean cowRidable = false; -@@ -760,6 +776,7 @@ public class PurpurWorldConfig { +@@ -758,6 +774,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1333,7 +1333,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -772,6 +789,7 @@ public class PurpurWorldConfig { +@@ -770,6 +787,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); @@ -1341,7 +1341,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean creeperRidable = false; -@@ -781,6 +799,7 @@ public class PurpurWorldConfig { +@@ -779,6 +797,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1349,7 +1349,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -794,6 +813,7 @@ public class PurpurWorldConfig { +@@ -792,6 +811,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); @@ -1357,7 +1357,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean dolphinRidable = false; -@@ -803,6 +823,7 @@ public class PurpurWorldConfig { +@@ -801,6 +821,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1365,7 +1365,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -816,6 +837,7 @@ public class PurpurWorldConfig { +@@ -814,6 +835,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1373,7 +1373,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean donkeyRidableInWater = false; -@@ -826,6 +848,7 @@ public class PurpurWorldConfig { +@@ -824,6 +846,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1381,7 +1381,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -842,6 +865,7 @@ public class PurpurWorldConfig { +@@ -840,6 +863,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); @@ -1389,7 +1389,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean drownedRidable = false; -@@ -852,6 +876,7 @@ public class PurpurWorldConfig { +@@ -850,6 +874,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1397,7 +1397,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -866,11 +891,13 @@ public class PurpurWorldConfig { +@@ -864,11 +889,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); @@ -1411,7 +1411,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -880,6 +907,7 @@ public class PurpurWorldConfig { +@@ -878,6 +905,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1419,7 +1419,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean enderDragonRidable = false; -@@ -889,6 +917,7 @@ public class PurpurWorldConfig { +@@ -887,6 +915,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1427,7 +1427,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -906,6 +935,7 @@ public class PurpurWorldConfig { +@@ -904,6 +933,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); @@ -1435,7 +1435,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean endermanRidable = false; -@@ -915,6 +945,7 @@ public class PurpurWorldConfig { +@@ -913,6 +943,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1443,7 +1443,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -928,12 +959,14 @@ public class PurpurWorldConfig { +@@ -926,12 +957,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); @@ -1458,7 +1458,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -944,6 +977,7 @@ public class PurpurWorldConfig { +@@ -942,6 +975,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1466,7 +1466,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean evokerRidable = false; -@@ -951,6 +985,7 @@ public class PurpurWorldConfig { +@@ -949,6 +983,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1474,7 +1474,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -962,6 +997,7 @@ public class PurpurWorldConfig { +@@ -960,6 +995,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1482,7 +1482,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean foxRidable = false; -@@ -971,6 +1007,7 @@ public class PurpurWorldConfig { +@@ -969,6 +1005,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1490,7 +1490,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -984,6 +1021,7 @@ public class PurpurWorldConfig { +@@ -982,6 +1019,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); @@ -1498,7 +1498,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean frogRidable = false; -@@ -1004,6 +1042,7 @@ public class PurpurWorldConfig { +@@ -1002,6 +1040,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1506,7 +1506,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1015,6 +1054,7 @@ public class PurpurWorldConfig { +@@ -1013,6 +1052,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1514,7 +1514,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean giantRidable = false; -@@ -1027,6 +1067,7 @@ public class PurpurWorldConfig { +@@ -1025,6 +1065,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1522,7 +1522,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1047,17 +1088,20 @@ public class PurpurWorldConfig { +@@ -1045,17 +1086,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); @@ -1543,7 +1543,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean goatRidable = false; -@@ -1065,17 +1109,20 @@ public class PurpurWorldConfig { +@@ -1063,17 +1107,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1564,7 +1564,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1085,6 +1132,7 @@ public class PurpurWorldConfig { +@@ -1083,6 +1130,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1572,7 +1572,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean hoglinRidable = false; -@@ -1092,6 +1140,7 @@ public class PurpurWorldConfig { +@@ -1090,6 +1138,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1580,7 +1580,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1103,6 +1152,7 @@ public class PurpurWorldConfig { +@@ -1101,6 +1150,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1588,7 +1588,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean horseRidableInWater = false; -@@ -1113,6 +1163,7 @@ public class PurpurWorldConfig { +@@ -1111,6 +1161,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1596,7 +1596,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1129,6 +1180,7 @@ public class PurpurWorldConfig { +@@ -1127,6 +1178,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); @@ -1604,7 +1604,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean huskRidable = false; -@@ -1139,6 +1191,7 @@ public class PurpurWorldConfig { +@@ -1137,6 +1189,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1612,7 +1612,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1153,6 +1206,7 @@ public class PurpurWorldConfig { +@@ -1151,6 +1204,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); @@ -1620,7 +1620,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean illusionerRidable = false; -@@ -1161,6 +1215,7 @@ public class PurpurWorldConfig { +@@ -1159,6 +1213,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1628,7 +1628,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1177,6 +1232,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1230,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1636,7 +1636,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean ironGolemRidable = false; -@@ -1184,6 +1240,7 @@ public class PurpurWorldConfig { +@@ -1182,6 +1238,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1644,7 +1644,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1195,6 +1252,7 @@ public class PurpurWorldConfig { +@@ -1193,6 +1250,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1652,7 +1652,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean llamaRidable = false; -@@ -1207,6 +1265,7 @@ public class PurpurWorldConfig { +@@ -1205,6 +1263,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1660,7 +1660,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1225,6 +1284,7 @@ public class PurpurWorldConfig { +@@ -1223,6 +1282,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); @@ -1668,7 +1668,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean magmaCubeRidable = false; -@@ -1234,6 +1294,7 @@ public class PurpurWorldConfig { +@@ -1232,6 +1292,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1676,7 +1676,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1247,6 +1308,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1306,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1684,7 +1684,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean mooshroomRidable = false; -@@ -1254,6 +1316,7 @@ public class PurpurWorldConfig { +@@ -1252,6 +1314,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1692,7 +1692,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1265,6 +1328,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1326,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1700,7 +1700,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean muleRidableInWater = false; -@@ -1275,6 +1339,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1337,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1708,7 +1708,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1291,6 +1356,7 @@ public class PurpurWorldConfig { +@@ -1289,6 +1354,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); @@ -1716,7 +1716,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean ocelotRidable = false; -@@ -1298,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1296,6 +1362,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1724,7 +1724,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1309,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1374,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1732,7 +1732,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean pandaRidable = false; -@@ -1316,6 +1384,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1382,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1740,7 +1740,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1327,6 +1396,7 @@ public class PurpurWorldConfig { +@@ -1325,6 +1394,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1748,7 +1748,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean parrotRidable = false; -@@ -1334,6 +1404,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1402,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1756,7 +1756,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1345,6 +1416,7 @@ public class PurpurWorldConfig { +@@ -1343,6 +1414,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1764,7 +1764,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean phantomRidable = false; -@@ -1371,6 +1443,7 @@ public class PurpurWorldConfig { +@@ -1369,6 +1441,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1772,7 +1772,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1405,6 +1478,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1476,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); @@ -1780,7 +1780,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean pigRidable = false; -@@ -1413,6 +1487,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1485,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1788,7 +1788,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1425,6 +1500,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1498,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); @@ -1796,7 +1796,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean piglinRidable = false; -@@ -1432,6 +1508,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1506,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1804,7 +1804,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1443,12 +1520,14 @@ public class PurpurWorldConfig { +@@ -1441,12 +1518,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1819,7 +1819,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1459,6 +1538,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1536,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1827,7 +1827,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean pillagerRidable = false; -@@ -1466,6 +1546,7 @@ public class PurpurWorldConfig { +@@ -1464,6 +1544,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1835,7 +1835,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1477,6 +1558,7 @@ public class PurpurWorldConfig { +@@ -1475,6 +1556,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1843,7 +1843,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean polarBearRidable = false; -@@ -1486,6 +1568,7 @@ public class PurpurWorldConfig { +@@ -1484,6 +1566,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1851,7 +1851,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1500,11 +1583,13 @@ public class PurpurWorldConfig { +@@ -1498,11 +1581,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1865,7 +1865,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1514,6 +1599,7 @@ public class PurpurWorldConfig { +@@ -1512,6 +1597,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1873,7 +1873,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean rabbitRidable = false; -@@ -1524,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1522,6 +1608,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1881,7 +1881,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1538,6 +1625,7 @@ public class PurpurWorldConfig { +@@ -1536,6 +1623,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); @@ -1889,7 +1889,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean ravagerRidable = false; -@@ -1545,6 +1633,7 @@ public class PurpurWorldConfig { +@@ -1543,6 +1631,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1897,7 +1897,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1556,11 +1645,13 @@ public class PurpurWorldConfig { +@@ -1554,11 +1643,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1911,7 +1911,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1570,6 +1661,7 @@ public class PurpurWorldConfig { +@@ -1568,6 +1659,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1919,7 +1919,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean sheepRidable = false; -@@ -1578,6 +1670,7 @@ public class PurpurWorldConfig { +@@ -1576,6 +1668,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1927,7 +1927,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1590,12 +1683,14 @@ public class PurpurWorldConfig { +@@ -1588,12 +1681,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); @@ -1942,7 +1942,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1606,6 +1701,7 @@ public class PurpurWorldConfig { +@@ -1604,6 +1699,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1950,7 +1950,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean silverfishRidable = false; -@@ -1613,6 +1709,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1707,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1958,7 +1958,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1624,12 +1721,14 @@ public class PurpurWorldConfig { +@@ -1622,12 +1719,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1973,7 +1973,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1640,6 +1739,7 @@ public class PurpurWorldConfig { +@@ -1638,6 +1737,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1981,7 +1981,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean skeletonHorseRidable = false; -@@ -1651,6 +1751,7 @@ public class PurpurWorldConfig { +@@ -1649,6 +1749,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1989,7 +1989,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1667,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1665,6 +1766,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); @@ -1997,7 +1997,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean slimeRidable = false; -@@ -1676,6 +1778,7 @@ public class PurpurWorldConfig { +@@ -1674,6 +1776,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2005,7 +2005,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1689,6 +1792,7 @@ public class PurpurWorldConfig { +@@ -1687,6 +1790,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2013,7 +2013,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean snowGolemRidable = false; -@@ -1702,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1700,6 +1804,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2021,7 +2021,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1719,6 +1824,7 @@ public class PurpurWorldConfig { +@@ -1717,6 +1822,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); @@ -2029,7 +2029,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean snifferRidable = false; -@@ -1740,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1738,6 +1844,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2037,7 +2037,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1752,12 +1859,14 @@ public class PurpurWorldConfig { +@@ -1750,12 +1857,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); @@ -2052,7 +2052,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1768,12 +1877,14 @@ public class PurpurWorldConfig { +@@ -1766,12 +1875,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2067,7 +2067,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1784,6 +1895,7 @@ public class PurpurWorldConfig { +@@ -1782,6 +1893,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2075,7 +2075,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean striderRidable = false; -@@ -1792,6 +1904,7 @@ public class PurpurWorldConfig { +@@ -1790,6 +1902,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2083,7 +2083,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1804,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1802,6 +1915,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); @@ -2091,7 +2091,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean tadpoleRidable = false; -@@ -1825,6 +1939,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1937,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2099,7 +2099,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1843,11 +1958,13 @@ public class PurpurWorldConfig { +@@ -1841,11 +1956,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); @@ -2113,7 +2113,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1857,6 +1974,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1972,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2121,7 +2121,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean turtleRidable = false; -@@ -1864,6 +1982,7 @@ public class PurpurWorldConfig { +@@ -1862,6 +1980,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2129,7 +2129,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1875,6 +1994,7 @@ public class PurpurWorldConfig { +@@ -1873,6 +1992,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2137,7 +2137,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean vexRidable = false; -@@ -1882,6 +2002,7 @@ public class PurpurWorldConfig { +@@ -1880,6 +2000,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2145,7 +2145,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1893,6 +2014,7 @@ public class PurpurWorldConfig { +@@ -1891,6 +2012,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2153,7 +2153,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean villagerRidable = false; -@@ -1906,6 +2028,7 @@ public class PurpurWorldConfig { +@@ -1904,6 +2026,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2161,7 +2161,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1923,6 +2046,7 @@ public class PurpurWorldConfig { +@@ -1921,6 +2044,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); @@ -2169,7 +2169,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean vindicatorRidable = false; -@@ -1930,6 +2054,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +2052,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2177,7 +2177,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1941,6 +2066,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2064,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2185,7 +2185,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean wanderingTraderRidable = false; -@@ -1949,6 +2075,7 @@ public class PurpurWorldConfig { +@@ -1947,6 +2073,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2193,7 +2193,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1961,6 +2088,7 @@ public class PurpurWorldConfig { +@@ -1959,6 +2086,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); @@ -2201,7 +2201,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean wardenRidable = false; -@@ -1976,6 +2104,7 @@ public class PurpurWorldConfig { +@@ -1974,6 +2102,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2209,7 +2209,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1986,6 +2115,7 @@ public class PurpurWorldConfig { +@@ -1984,6 +2113,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2217,7 +2217,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean witherRidable = false; -@@ -1996,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -1994,6 +2124,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2225,7 +2225,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2014,12 +2145,14 @@ public class PurpurWorldConfig { +@@ -2012,12 +2143,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); @@ -2240,7 +2240,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2030,6 +2163,7 @@ public class PurpurWorldConfig { +@@ -2028,6 +2161,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2248,7 +2248,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean wolfRidable = false; -@@ -2040,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2038,6 +2172,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2256,7 +2256,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2058,12 +2193,14 @@ public class PurpurWorldConfig { +@@ -2056,12 +2191,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); @@ -2271,7 +2271,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2074,6 +2211,7 @@ public class PurpurWorldConfig { +@@ -2072,6 +2209,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2279,7 +2279,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean zombieRidable = false; -@@ -2086,6 +2224,7 @@ public class PurpurWorldConfig { +@@ -2084,6 +2222,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2287,7 +2287,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2102,6 +2241,7 @@ public class PurpurWorldConfig { +@@ -2100,6 +2239,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); @@ -2295,7 +2295,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean zombieHorseRidable = false; -@@ -2114,6 +2254,7 @@ public class PurpurWorldConfig { +@@ -2112,6 +2252,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2303,7 +2303,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2131,6 +2272,7 @@ public class PurpurWorldConfig { +@@ -2129,6 +2270,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); @@ -2311,7 +2311,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean zombieVillagerRidable = false; -@@ -2141,6 +2283,7 @@ public class PurpurWorldConfig { +@@ -2139,6 +2281,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2319,7 +2319,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2155,6 +2298,7 @@ public class PurpurWorldConfig { +@@ -2153,6 +2296,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); @@ -2327,7 +2327,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 } public boolean zombifiedPiglinRidable = false; -@@ -2166,6 +2310,7 @@ public class PurpurWorldConfig { +@@ -2164,6 +2308,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2335,7 +2335,7 @@ index a4965866cc687a04cf12dbcf9f6ceff8218c0dee..35ca19ea233e262c1931747ce0b998a1 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2181,5 +2326,6 @@ public class PurpurWorldConfig { +@@ -2179,5 +2324,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/0121-End-crystal-explosion-options.patch b/patches/server/0121-End-crystal-explosion-options.patch index 25fb9e23e..eb4f2b013 100644 --- a/patches/server/0121-End-crystal-explosion-options.patch +++ b/patches/server/0121-End-crystal-explosion-options.patch @@ -53,10 +53,10 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1aeaa84d66221ce560fea71bbc39f7d9a9587711..3fce04a57938c6a3505f4c492e103217e00b54f9 100644 +index 904c7d1c4ab545c0dc18d7fbd3902dde4820497f..51a164f0f5075240b3fe266fc378c7c4ff57b2ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -450,6 +450,43 @@ public class PurpurWorldConfig { +@@ -448,6 +448,43 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 1cdead1ee..731f7effb 100644 --- a/patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 73d5027234cca5a9d0dfd60f455fe67ba5174558..ab0ed16663ac72924d2a4f139705e551 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fce04a57938c6a3505f4c492e103217e00b54f9..63e1f40e9aba0b5e1f1cfeea9566cf9fd64b113b 100644 +index 51a164f0f5075240b3fe266fc378c7c4ff57b2ab..e9e59acd426d0fc756b2d9307ea984f0cb4abce0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -957,6 +957,7 @@ public class PurpurWorldConfig { +@@ -955,6 +955,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 3fce04a57938c6a3505f4c492e103217e00b54f9..63e1f40e9aba0b5e1f1cfeea9566cf9f private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -975,6 +976,7 @@ public class PurpurWorldConfig { +@@ -973,6 +974,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 3fce04a57938c6a3505f4c492e103217e00b54f9..63e1f40e9aba0b5e1f1cfeea9566cf9f } public boolean endermanRidable = false; -@@ -2166,6 +2168,7 @@ public class PurpurWorldConfig { +@@ -2164,6 +2166,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 3fce04a57938c6a3505f4c492e103217e00b54f9..63e1f40e9aba0b5e1f1cfeea9566cf9f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2185,6 +2188,7 @@ public class PurpurWorldConfig { +@@ -2183,6 +2186,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/0123-Dont-run-with-scissors.patch b/patches/server/0123-Dont-run-with-scissors.patch index edd6f925c..ed5303479 100644 --- a/patches/server/0123-Dont-run-with-scissors.patch +++ b/patches/server/0123-Dont-run-with-scissors.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Dont run with scissors! inspired by https://modrinth.com/mod/dont-run-with-scissors diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 010c03f9ec0b5fca563ce62bbb785af9cc28fad2..22979d8531fd9732b1fd5eaf76aec52b22fdf6bb 100644 +index aba962f4e706f2698f3729a304816965d788d7e3..e81820761689801c3ca267c500818ff0f48bb858 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1610,6 +1610,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -149,10 +149,10 @@ index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 63e1f40e9aba0b5e1f1cfeea9566cf9fd64b113b..a0e613d5e99eafb1f79d0ca493d8d67f9d086d71 100644 +index e9e59acd426d0fc756b2d9307ea984f0cb4abce0..7ace30d634600be4e2a71dce12645db48b22e67d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -182,6 +182,10 @@ public class PurpurWorldConfig { +@@ -180,6 +180,10 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -163,7 +163,7 @@ index 63e1f40e9aba0b5e1f1cfeea9566cf9fd64b113b..a0e613d5e99eafb1f79d0ca493d8d67f private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -219,6 +223,10 @@ public class PurpurWorldConfig { +@@ -217,6 +221,10 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0124-One-Punch-Man.patch b/patches/server/0124-One-Punch-Man.patch index f9d7ec134..9fde54fe9 100644 --- a/patches/server/0124-One-Punch-Man.patch +++ b/patches/server/0124-One-Punch-Man.patch @@ -6,7 +6,7 @@ Subject: [PATCH] One Punch Man! inspired by https://modrinth.com/mod/creative-one-punch diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 897e9da03a4e1cc0cac5da542c9e695f49ae60e4..583e0cfc3478df74188526a10494d81ba4303054 100644 +index fc560ddef3542f9bf566917c3af9072857f1bd04..d76e8cf2a2d48548b0ad33c78dbf435b61bf91c4 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1428,6 +1428,24 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -35,10 +35,10 @@ index 897e9da03a4e1cc0cac5da542c9e695f49ae60e4..583e0cfc3478df74188526a10494d81b float f1 = amount; boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0e613d5e99eafb1f79d0ca493d8d67f9d086d71..0d6e782d65f8b927776231b59dd3f05bf94ab153 100644 +index 7ace30d634600be4e2a71dce12645db48b22e67d..74829c202ab6c44da26d025635e6a429777ab69c 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 { +@@ -327,6 +327,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index a0e613d5e99eafb1f79d0ca493d8d67f9d086d71..0d6e782d65f8b927776231b59dd3f05b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -345,6 +346,7 @@ public class PurpurWorldConfig { +@@ -343,6 +344,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index fed31db30..c0b46ebf0 100644 --- a/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff // Paper end - PlayerLaunchProjectileEvent if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d6e782d65f8b927776231b59dd3f05bf94ab153..51dafefe5fa9d89ec61c355beb66e78ead64ca6d 100644 +index 74829c202ab6c44da26d025635e6a429777ab69c..11ab08b642af112452d6afc0b2ad7f61e5380420 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -186,6 +186,10 @@ public class PurpurWorldConfig { +@@ -184,6 +184,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index 0d6e782d65f8b927776231b59dd3f05bf94ab153..51dafefe5fa9d89ec61c355beb66e78e private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -227,6 +231,10 @@ public class PurpurWorldConfig { +@@ -225,6 +229,10 @@ public class PurpurWorldConfig { ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater); ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch index d53501342..593fa4706 100644 --- a/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,10 +18,10 @@ index dbfc8585340c8ddb8c706773b02346ca97663e3b..8bb9692f37f2f0cfa7964963aacbc57b } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51dafefe5fa9d89ec61c355beb66e78ead64ca6d..12048de4a283835d887a8b5a27aa1d3a99248b2e 100644 +index 11ab08b642af112452d6afc0b2ad7f61e5380420..d3af2b98c3aa8daca20f4b39ae90d867f0708de8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -338,6 +338,7 @@ public class PurpurWorldConfig { +@@ -336,6 +336,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 51dafefe5fa9d89ec61c355beb66e78ead64ca6d..12048de4a283835d887a8b5a27aa1d3a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -355,6 +356,7 @@ public class PurpurWorldConfig { +@@ -353,6 +354,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch index 29e1744e9..df6b0350d 100644 --- a/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 75d462d7f55dedfa62844549fa6690a4a652bd1f..cc9da5134ece550e8a1902e90282090f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 12048de4a283835d887a8b5a27aa1d3a99248b2e..c112dab4f1a56d8108a218106b399b462209cd5a 100644 +index d3af2b98c3aa8daca20f4b39ae90d867f0708de8..1d35264437b77bc3d7467743b760f8ee4cb53588 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1007,6 +1007,8 @@ public class PurpurWorldConfig { +@@ -1005,6 +1005,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 12048de4a283835d887a8b5a27aa1d3a99248b2e..c112dab4f1a56d8108a218106b399b46 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1016,11 +1018,17 @@ public class PurpurWorldConfig { +@@ -1014,11 +1016,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index ec35235e7..a131b3d92 100644 --- a/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index cc9da5134ece550e8a1902e90282090f05818fd8..f2e21c9d3cefb635c4eb583ac9355b46 } 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 c112dab4f1a56d8108a218106b399b462209cd5a..23762b5df538e8e2b042495e20381a94dd910cc0 100644 +index 1d35264437b77bc3d7467743b760f8ee4cb53588..a2db9a7eabbc660368cc50d7c1f216df444f3b93 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1009,6 +1009,8 @@ public class PurpurWorldConfig { +@@ -1007,6 +1007,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index c112dab4f1a56d8108a218106b399b462209cd5a..23762b5df538e8e2b042495e20381a94 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1029,6 +1031,8 @@ public class PurpurWorldConfig { +@@ -1027,6 +1029,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/0131-Config-to-disable-Llama-caravans.patch b/patches/server/0131-Config-to-disable-Llama-caravans.patch index 5c0d40e8d..f1eefe2e4 100644 --- a/patches/server/0131-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0131-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3559e01d93872750af81881295bcb12538dc33e..a1f177f63d2826659d6106621c5c5bccfde5445d 100644 +index f18b0c8ef31159d09137506bcf77658b901e5e49..7579875230cd0e6bafd911ff234cb5ad47d2dcb3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1341,6 +1341,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1339,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index a3559e01d93872750af81881295bcb12538dc33e..a1f177f63d2826659d6106621c5c5bcc private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1360,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1358,6 +1359,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/0132-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch index 5126ed826..93e97a2ed 100644 --- a/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch @@ -52,10 +52,10 @@ index d68897b167918ba1e28b083b665ce70aaec437df..2834994506948d02abf228cfb9ffbb3b private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1f177f63d2826659d6106621c5c5bccfde5445d..9f339076cb36860e1e38b7fbef2c1f5915cc5fb4 100644 +index 7579875230cd0e6bafd911ff234cb5ad47d2dcb3..0ccca4eb96b36eb952f6fd2f25c5ab8da6114c74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -861,6 +861,7 @@ public class PurpurWorldConfig { +@@ -859,6 +859,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -63,7 +63,7 @@ index a1f177f63d2826659d6106621c5c5bccfde5445d..9f339076cb36860e1e38b7fbef2c1f59 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -875,6 +876,7 @@ public class PurpurWorldConfig { +@@ -873,6 +874,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/0133-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch index 4a86caa6a..8532201e3 100644 --- a/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f339076cb36860e1e38b7fbef2c1f5915cc5fb4..f912a2eecf56c50ab445260dbeb20bbcd1874427 100644 +index 0ccca4eb96b36eb952f6fd2f25c5ab8da6114c74..e50419fc621848791a1952b2a885b5286eca702b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1713,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1711,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 9f339076cb36860e1e38b7fbef2c1f5915cc5fb4..f912a2eecf56c50ab445260dbeb20bbc private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1725,6 +1726,23 @@ public class PurpurWorldConfig { +@@ -1723,6 +1724,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/0134-Sneak-to-bulk-process-composter.patch b/patches/server/0134-Sneak-to-bulk-process-composter.patch index ce5b17b3e..a29888d83 100644 --- a/patches/server/0134-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0134-Sneak-to-bulk-process-composter.patch @@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f912a2eecf56c50ab445260dbeb20bbcd1874427..e741a679f65158a80f3472b8b231036abe8d38c3 100644 +index e50419fc621848791a1952b2a885b5286eca702b..9fc737aafa6cc2dfd6da0b52dff732977a3b36a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -465,6 +465,11 @@ public class PurpurWorldConfig { +@@ -463,6 +463,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0135-Config-for-skipping-night.patch b/patches/server/0135-Config-for-skipping-night.patch index 291869f98..a849648b6 100644 --- a/patches/server/0135-Config-for-skipping-night.patch +++ b/patches/server/0135-Config-for-skipping-night.patch @@ -18,10 +18,10 @@ index 613cf0562d2a82e2a7b9bf1d3143e9c4e4a75bea..97e18801ae774d4e7b5154912a1a8281 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 e741a679f65158a80f3472b8b231036abe8d38c3..86fb66b5d0ad557efca1004372528d467c162d1d 100644 +index 9fc737aafa6cc2dfd6da0b52dff732977a3b36a6..f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -341,6 +341,7 @@ public class PurpurWorldConfig { +@@ -339,6 +339,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index e741a679f65158a80f3472b8b231036abe8d38c3..86fb66b5d0ad557efca1004372528d46 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -359,6 +360,7 @@ public class PurpurWorldConfig { +@@ -357,6 +358,7 @@ public class PurpurWorldConfig { playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/server/0136-Add-config-for-villager-trading.patch b/patches/server/0136-Add-config-for-villager-trading.patch index f7f9d4f4b..1c7232ee1 100644 --- a/patches/server/0136-Add-config-for-villager-trading.patch +++ b/patches/server/0136-Add-config-for-villager-trading.patch @@ -32,10 +32,10 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247 return InteractionResult.sidedSuccess(this.level().isClientSide); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86fb66b5d0ad557efca1004372528d467c162d1d..ffd28d32ef891747160dece1f347f72b12917bdf 100644 +index f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd..80c708ac9fc2e03c2e3ec7aa8f57a8ec0f2ea9ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2133,6 +2133,7 @@ public class PurpurWorldConfig { +@@ -2131,6 +2131,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 86fb66b5d0ad557efca1004372528d467c162d1d..ffd28d32ef891747160dece1f347f72b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2151,6 +2152,7 @@ public class PurpurWorldConfig { +@@ -2149,6 +2150,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -51,7 +51,7 @@ index 86fb66b5d0ad557efca1004372528d467c162d1d..ffd28d32ef891747160dece1f347f72b } public boolean vindicatorRidable = false; -@@ -2180,6 +2182,7 @@ public class PurpurWorldConfig { +@@ -2178,6 +2180,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 86fb66b5d0ad557efca1004372528d467c162d1d..ffd28d32ef891747160dece1f347f72b private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2193,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2191,6 +2194,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/0137-Drowning-Settings.patch b/patches/server/0137-Drowning-Settings.patch index b7eb95851..150bea34d 100644 --- a/patches/server/0137-Drowning-Settings.patch +++ b/patches/server/0137-Drowning-Settings.patch @@ -40,7 +40,7 @@ index d76e8cf2a2d48548b0ad33c78dbf435b61bf91c4..da28941d9a374be39cf7c1620f48ddaa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ffd28d32ef891747160dece1f347f72b12917bdf..0eebec70223af219cec5806cd617144fdcaf161c 100644 +index 80c708ac9fc2e03c2e3ec7aa8f57a8ec0f2ea9ce..bf34483e7cf04422113c2861750cb670e2f93629 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -160,6 +160,15 @@ public class PurpurWorldConfig { @@ -58,4 +58,4 @@ index ffd28d32ef891747160dece1f347f72b12917bdf..0eebec70223af219cec5806cd617144f + public int elytraDamagePerSecond = 1; public double elytraDamageMultiplyBySpeed = 0; - public boolean elytraIgnoreUnbreaking = false; + public int elytraDamagePerFireworkBoost = 0; diff --git a/patches/server/0138-Break-individual-slabs-when-sneaking.patch b/patches/server/0138-Break-individual-slabs-when-sneaking.patch index 42437e256..ea6e8592d 100644 --- a/patches/server/0138-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0138-Break-individual-slabs-when-sneaking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index e7c2dac1bb987103bb6404f3f8d7c487ca340fda..5f140eba20078aabfb484223fb9d113db201b07f 100644 +index 1ab35b3123c25a80706e6557b4152279bfe8f50f..7e96d06e498ee8a5b3f237e70516552d0cf24388 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -405,6 +405,7 @@ public class ServerPlayerGameMode { @@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0eebec70223af219cec5806cd617144fdcaf161c..de0ea739cd15bd2a99f7f6cde0ff83abb0732c77 100644 +index bf34483e7cf04422113c2861750cb670e2f93629..c4e5061002166f1d7cbc1a5ff27ca34e0d7ab34b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -586,6 +586,11 @@ public class PurpurWorldConfig { +@@ -584,6 +584,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch index 5cca87296..d2c7d4744 100644 --- a/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 759839e912c54598b257ad738481364940f88a18..e60e6b3e5ae5a468cfe649ed2222412f return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index de0ea739cd15bd2a99f7f6cde0ff83abb0732c77..d59dad166be3503f32a03d82850d3da686678dff 100644 +index c4e5061002166f1d7cbc1a5ff27ca34e0d7ab34b..aecdcac966ce3773b9dd305255109cd3625e976d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -551,6 +551,13 @@ public class PurpurWorldConfig { +@@ -549,6 +549,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0141-Option-to-make-doors-require-redstone.patch b/patches/server/0141-Option-to-make-doors-require-redstone.patch index 20cf0ab0e..567320c50 100644 --- a/patches/server/0141-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0141-Option-to-make-doors-require-redstone.patch @@ -82,10 +82,10 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5b5cf30aede8615b19f11c3d874c5fb24aa7f29..83af7ddbaaccdcb3cda680e87b984eeb0d1bda4d 100644 +index 4a53b1833a861de5c90012c242715a1183057bfa..37b90b32ebbdc5e8a9fa51816093800409795ed4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -490,6 +490,16 @@ public class PurpurWorldConfig { +@@ -488,6 +488,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0142-Config-to-allow-unsafe-enchants.patch b/patches/server/0142-Config-to-allow-unsafe-enchants.patch index e56c2231e..fd97f80fb 100644 --- a/patches/server/0142-Config-to-allow-unsafe-enchants.patch +++ b/patches/server/0142-Config-to-allow-unsafe-enchants.patch @@ -78,10 +78,10 @@ index 2d300905c05c7c23a4da30b3651b331381a1dc0d..30746b3ae45840206bf23e811a9819f3 ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetDataPacket(this.containerId, 0, this.cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index d36b5ddc360e4f4cca3ef5c1b5b3d0cbad02614b..a5cdb7f100d161676570a5728e1cfc0e18b7d2cf 100644 +index 88db87941bfc84bec7a2dcd3c750a854cac72006..c7785f977e64568bca261a34bce712b677ca97c3 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1256,6 +1256,12 @@ public final class ItemStack implements DataComponentHolder { +@@ -1255,6 +1255,12 @@ public final class ItemStack implements DataComponentHolder { return !((ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY)).isEmpty(); } diff --git a/patches/server/0143-Configurable-sponge-absorption.patch b/patches/server/0143-Configurable-sponge-absorption.patch index 5bf810422..bded090f0 100644 --- a/patches/server/0143-Configurable-sponge-absorption.patch +++ b/patches/server/0143-Configurable-sponge-absorption.patch @@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 83af7ddbaaccdcb3cda680e87b984eeb0d1bda4d..aaa0fa4a738adf8ffe45cd446d49777d1ef8d05b 100644 +index 37b90b32ebbdc5e8a9fa51816093800409795ed4..59b94038806ad2da6cd5212035a43b3625792287 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -615,6 +615,13 @@ public class PurpurWorldConfig { +@@ -613,6 +613,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0144-Projectile-offset-config.patch b/patches/server/0144-Projectile-offset-config.patch index 86a434339..2fcc3f791 100644 --- a/patches/server/0144-Projectile-offset-config.patch +++ b/patches/server/0144-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aaa0fa4a738adf8ffe45cd446d49777d1ef8d05b..fe9da4a79133bf2b3945abb8086f7c59898eb787 100644 +index 59b94038806ad2da6cd5212035a43b3625792287..cd3a2509678e9bbb2bc0df02bb3de3188c874825 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -440,6 +440,23 @@ public class PurpurWorldConfig { +@@ -438,6 +438,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0145-Config-for-powered-rail-activation-distance.patch b/patches/server/0145-Config-for-powered-rail-activation-distance.patch index 9804e92b2..c6c6c94a5 100644 --- a/patches/server/0145-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0145-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe9da4a79133bf2b3945abb8086f7c59898eb787..1320729aa1d2653db32fc446942071bf436217a1 100644 +index cd3a2509678e9bbb2bc0df02bb3de3188c874825..fac9d008fde9c49ce5c61fbd10682feac5a7680a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -601,6 +601,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/0146-Piglin-portal-spawn-modifier.patch b/patches/server/0146-Piglin-portal-spawn-modifier.patch index 9eccf60c9..fb76a2784 100644 --- a/patches/server/0146-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0146-Piglin-portal-spawn-modifier.patch @@ -18,7 +18,7 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index caa22afb0781671b901c23ebcc89e5bb0d2bd615..259f7e162968714e2959b199c7b1ab847dd624ef 100644 +index a530276b0123dee5680d7e09ad3d2f0414909c91..8d5be486adc9b523d3b7067ee4573d83b095d01c 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -77,7 +77,7 @@ public class NetherPortalBlock extends Block implements Portal { @@ -31,10 +31,10 @@ index caa22afb0781671b901c23ebcc89e5bb0d2bd615..259f7e162968714e2959b199c7b1ab84 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1320729aa1d2653db32fc446942071bf436217a1..878ac85b96b4c253cb7928b080aa089bfb840f3f 100644 +index fac9d008fde9c49ce5c61fbd10682feac5a7680a..3c52d1f90f73a3692e98a5e0c54177aabd0d97fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1657,6 +1657,7 @@ public class PurpurWorldConfig { +@@ -1655,6 +1655,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 1320729aa1d2653db32fc446942071bf436217a1..878ac85b96b4c253cb7928b080aa089b private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1669,6 +1670,7 @@ public class PurpurWorldConfig { +@@ -1667,6 +1668,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/0148-Config-for-wither-explosion-radius.patch b/patches/server/0148-Config-for-wither-explosion-radius.patch index 29c5108c9..17f829193 100644 --- a/patches/server/0148-Config-for-wither-explosion-radius.patch +++ b/patches/server/0148-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index e472df057d087fe46bd40b798c050ed6e38a283c..999453409c19abf7f5b5c2dc39969985 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 878ac85b96b4c253cb7928b080aa089bfb840f3f..2133dc7583cdc6ff7a9f7e46e461606786186fc1 100644 +index 3c52d1f90f73a3692e98a5e0c54177aabd0d97fe..5f7ea922b88c94895b9632589cab503e5d4a5bfa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2300,6 +2300,7 @@ public class PurpurWorldConfig { +@@ -2298,6 +2298,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 878ac85b96b4c253cb7928b080aa089bfb840f3f..2133dc7583cdc6ff7a9f7e46e4616067 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2320,6 +2321,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2319,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/0150-Configurable-piston-push-limit.patch b/patches/server/0150-Configurable-piston-push-limit.patch index 8c068eb09..fd3741824 100644 --- a/patches/server/0150-Configurable-piston-push-limit.patch +++ b/patches/server/0150-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2133dc7583cdc6ff7a9f7e46e461606786186fc1..98dea97b699acdcb4a398eefd534142a603c3247 100644 +index 5f7ea922b88c94895b9632589cab503e5d4a5bfa..97f0b4cfd8d59d490517f49da686ce0d1a6a8ecc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -596,6 +596,11 @@ public class PurpurWorldConfig { +@@ -594,6 +594,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch index 4df054cec..e83925a84 100644 --- a/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 2834994506948d02abf228cfb9ffbb3bfd801a40..d2816554dc3a8bec79f5d517562cd04e // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54d3b8ecdb43d847598dc12cb2dc442fde66ee30..f6befc456881e9ea151c1a4297782ef921f08399 100644 +index b5c0939ff79dd0379117463e8bb2465ca1c6b70b..a735db8effcef0a9d6d29e68029abe2709f28a57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -938,6 +938,7 @@ public class PurpurWorldConfig { +@@ -936,6 +936,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 54d3b8ecdb43d847598dc12cb2dc442fde66ee30..f6befc456881e9ea151c1a4297782ef9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -953,6 +954,7 @@ public class PurpurWorldConfig { +@@ -951,6 +952,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/0155-Iron-golem-calm-anger-options.patch b/patches/server/0155-Iron-golem-calm-anger-options.patch index 3048fdd27..d0e30eca1 100644 --- a/patches/server/0155-Iron-golem-calm-anger-options.patch +++ b/patches/server/0155-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 65232a2cb23eb4757abdc8741d55e0faccf4c0bb..a820bbbe89dee9e6de2e7d5f72f43d1d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6befc456881e9ea151c1a4297782ef921f08399..065cfe73aeff8a57d6c827012164b56f5965afbd 100644 +index a735db8effcef0a9d6d29e68029abe2709f28a57..64cda1d10ee87fbcbf25be3379a8928819424939 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1396,6 +1396,8 @@ public class PurpurWorldConfig { +@@ -1394,6 +1394,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index f6befc456881e9ea151c1a4297782ef921f08399..065cfe73aeff8a57d6c827012164b56f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1408,6 +1410,8 @@ public class PurpurWorldConfig { +@@ -1406,6 +1408,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/0156-Breedable-parrots.patch b/patches/server/0156-Breedable-parrots.patch index dd6870311..ecfb51d33 100644 --- a/patches/server/0156-Breedable-parrots.patch +++ b/patches/server/0156-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 49a162cc5ccdb160064b6de20a030175d5248070..4050cc4c93cbe33d3e4cc2f7aed5dfc2 @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 065cfe73aeff8a57d6c827012164b56f5965afbd..c079260e2426f1e1e770dd5ae421b79693aa3118 100644 +index 64cda1d10ee87fbcbf25be3379a8928819424939..dc979b3226badc663b1ff919c069219d51f5eb95 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1566,6 +1566,7 @@ public class PurpurWorldConfig { +@@ -1564,6 +1564,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 065cfe73aeff8a57d6c827012164b56f5965afbd..c079260e2426f1e1e770dd5ae421b796 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1578,6 +1579,7 @@ public class PurpurWorldConfig { +@@ -1576,6 +1577,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/0157-Configurable-powered-rail-boost-modifier.patch b/patches/server/0157-Configurable-powered-rail-boost-modifier.patch index 6a5e4f3ce..1081450b8 100644 --- a/patches/server/0157-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0157-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index 9ad276a73cba04edbe48f828031a15727d768a5b..337bd2011c471361653c317004f8380c Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c079260e2426f1e1e770dd5ae421b79693aa3118..3b670018472fb958e533c9a66bc63051cde24aec 100644 +index dc979b3226badc663b1ff919c069219d51f5eb95..953e8035dbd209bfd6c5bfdf548aec4e4ae1aa86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -260,6 +260,7 @@ public class PurpurWorldConfig { +@@ -258,6 +258,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index c079260e2426f1e1e770dd5ae421b79693aa3118..3b670018472fb958e533c9a66bc63051 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -312,6 +313,7 @@ public class PurpurWorldConfig { +@@ -310,6 +311,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/0158-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0158-Add-config-change-multiplier-critical-damage-value.patch index 9e984ef98..e0a49b127 100644 --- a/patches/server/0158-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0158-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 2dafba96353c208b89da7b65c0d56a51e00547c3..c582b5be87e93a0ea231bb6ce47bd10c float f3 = f + f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b670018472fb958e533c9a66bc63051cde24aec..ccc00cf598636ef19525c586edf9730ecfe195a9 100644 +index 953e8035dbd209bfd6c5bfdf548aec4e4ae1aa86..cd4e433316fe3d70babdea395093a2b071e38219 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -357,6 +357,7 @@ public class PurpurWorldConfig { +@@ -355,6 +355,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index 3b670018472fb958e533c9a66bc63051cde24aec..ccc00cf598636ef19525c586edf9730e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -376,6 +377,7 @@ public class PurpurWorldConfig { +@@ -374,6 +375,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch index 6b89d9e94..472840a13 100644 --- a/patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccc00cf598636ef19525c586edf9730ecfe195a9..5dcdc3d17c5b98dd3a5c2a273cf6b3aad46c43f4 100644 +index cd4e433316fe3d70babdea395093a2b071e38219..71128e30a7ce6753aeb51c94db631f448349a06c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -523,6 +523,11 @@ public class PurpurWorldConfig { +@@ -521,6 +521,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0162-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0162-Bee-can-work-when-raining-or-at-night.patch index 85b504821..0911ba37e 100644 --- a/patches/server/0162-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0162-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index f52823146944d333f2d050e90261b570ba66f5dd..d8efb00c325448d566c59418fe22268c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5dcdc3d17c5b98dd3a5c2a273cf6b3aad46c43f4..370540330a9457bbc9b084716fa4461da58a72a6 100644 +index 71128e30a7ce6753aeb51c94db631f448349a06c..ee7d79848974e5b8eafb7ac0627ea0da5eb7493b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -763,6 +763,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 5dcdc3d17c5b98dd3a5c2a273cf6b3aad46c43f4..370540330a9457bbc9b084716fa4461d private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -776,6 +778,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/0164-Config-MobEffect-by-world.patch b/patches/server/0164-Config-MobEffect-by-world.patch index 864bd22a0..9896af9c4 100644 --- a/patches/server/0164-Config-MobEffect-by-world.patch +++ b/patches/server/0164-Config-MobEffect-by-world.patch @@ -72,10 +72,10 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 370540330a9457bbc9b084716fa4461da58a72a6..b273cc14dce9c4f1f98cb3623bfacf5adbfbf4f6 100644 +index ee7d79848974e5b8eafb7ac0627ea0da5eb7493b..8c8544fb888eda28171a675371b5002b3f96125e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -316,6 +316,21 @@ public class PurpurWorldConfig { +@@ -314,6 +314,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0165-Beacon-Activation-Range-Configurable.patch b/patches/server/0165-Beacon-Activation-Range-Configurable.patch index aeb145faf..1a0508815 100644 --- a/patches/server/0165-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0165-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 814e70f558d7a6186233da0ff86c94c95d390e09..d1fb77d83d48183a9a37dbeec7bb0fda } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b273cc14dce9c4f1f98cb3623bfacf5adbfbf4f6..aabffb08cdec317dc5533b6d8ca535806a8318f1 100644 +index 8c8544fb888eda28171a675371b5002b3f96125e..2b4efa8b00ea9eedfd94d48e6433c2af4ad0cf85 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -490,6 +490,17 @@ public class PurpurWorldConfig { +@@ -488,6 +488,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 07717fbe9..ceb0d5b92 100644 --- a/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -54,10 +54,10 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..515dd3b769917c4aa60ce180ef24f38c public void eat(FoodProperties foodComponent) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aabffb08cdec317dc5533b6d8ca535806a8318f1..7628e4bfa494c9773a44080cada66d1bce2f1d05 100644 +index 2b4efa8b00ea9eedfd94d48e6433c2af4ad0cf85..92224cab3535e0bc98ed6000843633b1871303ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -373,6 +373,8 @@ public class PurpurWorldConfig { +@@ -371,6 +371,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -66,7 +66,7 @@ index aabffb08cdec317dc5533b6d8ca535806a8318f1..7628e4bfa494c9773a44080cada66d1b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -393,6 +395,8 @@ public class PurpurWorldConfig { +@@ -391,6 +393,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0170-Shulker-spawn-from-bullet-options.patch b/patches/server/0170-Shulker-spawn-from-bullet-options.patch index 5272d6e23..8b31bda5d 100644 --- a/patches/server/0170-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0170-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 0d04a0107bd1a8a2b9aeb4be55025cd554e8fb79..a050d76233e179a1456b83ccc02bb9a5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7628e4bfa494c9773a44080cada66d1bce2f1d05..905e3d7b8a051f693936c81695c3bda6fd872c60 100644 +index 92224cab3535e0bc98ed6000843633b1871303ef..c42d392047de05a108b12aa0a5d511259e707722 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1917,6 +1917,11 @@ public class PurpurWorldConfig { +@@ -1915,6 +1915,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 7628e4bfa494c9773a44080cada66d1bce2f1d05..905e3d7b8a051f693936c81695c3bda6 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1928,6 +1933,11 @@ public class PurpurWorldConfig { +@@ -1926,6 +1931,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/0171-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch index 7118e6c89..137e3df9b 100644 --- a/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 4eef61323ba54f513e6f251ef7c804b2c91ff477..6b2235281dca67a80cb651e9f8e9bf25 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 905e3d7b8a051f693936c81695c3bda6fd872c60..ff4a50643c52a199b3c16812223062a9ea2f100f 100644 +index c42d392047de05a108b12aa0a5d511259e707722..86846ad7459d96ad27c6d7f55f414022f0d62507 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -205,6 +205,7 @@ public class PurpurWorldConfig { +@@ -203,6 +203,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 905e3d7b8a051f693936c81695c3bda6fd872c60..ff4a50643c52a199b3c16812223062a9 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -250,6 +251,7 @@ public class PurpurWorldConfig { +@@ -248,6 +249,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/0172-Option-to-make-drowned-break-doors.patch b/patches/server/0172-Option-to-make-drowned-break-doors.patch index 0f5f66b55..b47e5944f 100644 --- a/patches/server/0172-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0172-Option-to-make-drowned-break-doors.patch @@ -26,10 +26,10 @@ index f037d50f26f7532f11a71790448de7a71644b6ca..b3a79dc4357ad4392101353fbc99aac1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff4a50643c52a199b3c16812223062a9ea2f100f..83cf123c29fb8dc6e3998dbf1779b1d3e724af59 100644 +index 86846ad7459d96ad27c6d7f55f414022f0d62507..f72c0e9ac75e4e564ec953414248529c185c134f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1063,6 +1063,7 @@ public class PurpurWorldConfig { +@@ -1061,6 +1061,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index ff4a50643c52a199b3c16812223062a9ea2f100f..83cf123c29fb8dc6e3998dbf1779b1d3 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1078,6 +1079,7 @@ public class PurpurWorldConfig { +@@ -1076,6 +1077,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/0173-Configurable-hunger-starvation-damage.patch b/patches/server/0173-Configurable-hunger-starvation-damage.patch index 43e051edb..611386464 100644 --- a/patches/server/0173-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0173-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 515dd3b769917c4aa60ce180ef24f38ca12e6848..c7ad716f607afe382436d088a2b2e622 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 83cf123c29fb8dc6e3998dbf1779b1d3e724af59..7cf5c1d883b62abea2d855136c6c3c95bdd6e73f 100644 +index f72c0e9ac75e4e564ec953414248529c185c134f..03db186c6799e3b64e1995d62e11963600773ffb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2576,4 +2576,9 @@ public class PurpurWorldConfig { +@@ -2574,4 +2574,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/0176-Tool-actionable-options.patch b/patches/server/0176-Tool-actionable-options.patch index f0ae350be..01557ba31 100644 --- a/patches/server/0176-Tool-actionable-options.patch +++ b/patches/server/0176-Tool-actionable-options.patch @@ -157,10 +157,10 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7cf5c1d883b62abea2d855136c6c3c95bdd6e73f..e355fa02cdb19cb9aaccb6ac35b936e44e506f64 100644 +index 03db186c6799e3b64e1995d62e11963600773ffb..4520df0b1ecc6e9c8f382bda2a70fc2a0ad64f50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -489,6 +489,280 @@ public class PurpurWorldConfig { +@@ -487,6 +487,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch index 242f575bb..f62aad121 100644 --- a/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,10 +18,10 @@ index 3253361d91e2a2e68d354eaf3dd3e3cd486e191d..2649188930653610b8aaaeb18797c808 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e355fa02cdb19cb9aaccb6ac35b936e44e506f64..91b2f4b6a24ea07835cf6caa4994fadbeee97b46 100644 +index 4520df0b1ecc6e9c8f382bda2a70fc2a0ad64f50..f8632e9e4da31d963890d600587414599ac2eff8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -206,6 +206,7 @@ public class PurpurWorldConfig { +@@ -204,6 +204,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -29,7 +29,7 @@ index e355fa02cdb19cb9aaccb6ac35b936e44e506f64..91b2f4b6a24ea07835cf6caa4994fadb private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -252,6 +253,7 @@ public class PurpurWorldConfig { +@@ -250,6 +251,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/0181-Big-dripleaf-tilt-delay.patch b/patches/server/0181-Big-dripleaf-tilt-delay.patch index 5493d8cb8..1d5a542b9 100644 --- a/patches/server/0181-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0181-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91b2f4b6a24ea07835cf6caa4994fadbeee97b46..36becc96a815ebd0dde7e8b9b8072948df4ee758 100644 +index f8632e9e4da31d963890d600587414599ac2eff8..dc384130f18debadd5cf9d4bf00404754dd2b015 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -804,6 +804,22 @@ public class PurpurWorldConfig { +@@ -802,6 +802,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0182-Player-ridable-in-water-option.patch b/patches/server/0182-Player-ridable-in-water-option.patch index fbfcb94e8..9f29b4093 100644 --- a/patches/server/0182-Player-ridable-in-water-option.patch +++ b/patches/server/0182-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 2fe3af832a228b1352b9b85dec06115009ef658f..cb6f161d32fe9642e9e9b1efc47d8861 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 36becc96a815ebd0dde7e8b9b8072948df4ee758..ba419b8681659ca1b3cc619915b3a07bdd4abe29 100644 +index dc384130f18debadd5cf9d4bf00404754dd2b015..49abcdb2448af0625e134181cb10c3d4d13a8006 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -379,6 +379,7 @@ public class PurpurWorldConfig { +@@ -377,6 +377,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index 36becc96a815ebd0dde7e8b9b8072948df4ee758..ba419b8681659ca1b3cc619915b3a07b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -401,6 +402,7 @@ public class PurpurWorldConfig { +@@ -399,6 +400,7 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 914a23fd0..c3526eeba 100644 --- a/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index f2e21c9d3cefb635c4eb583ac9355b46675c94e7..2855efc4670c58219ca1e78770ac289a for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba419b8681659ca1b3cc619915b3a07bdd4abe29..af53cf014a45bd012b735e73f44dfcb661fdbb3f 100644 +index 49abcdb2448af0625e134181cb10c3d4d13a8006..c4173598759f0c64817ff60bbd00dbab736ca073 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1434,6 +1434,7 @@ public class PurpurWorldConfig { +@@ -1432,6 +1432,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index ba419b8681659ca1b3cc619915b3a07bdd4abe29..af53cf014a45bd012b735e73f44dfcb6 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1456,6 +1457,7 @@ public class PurpurWorldConfig { +@@ -1454,6 +1455,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/0184-Add-compass-command.patch b/patches/server/0184-Add-compass-command.patch index 9cfa4bc2d..a3c74e718 100644 --- a/patches/server/0184-Add-compass-command.patch +++ b/patches/server/0184-Add-compass-command.patch @@ -89,10 +89,10 @@ index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af53cf014a45bd012b735e73f44dfcb661fdbb3f..96e366d6f12671b580f83f428e07d08c221b888b 100644 +index c4173598759f0c64817ff60bbd00dbab736ca073..7b7a6488f2baadd77a1247b64b46d5589c882514 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -207,6 +207,7 @@ public class PurpurWorldConfig { +@@ -205,6 +205,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index af53cf014a45bd012b735e73f44dfcb661fdbb3f..96e366d6f12671b580f83f428e07d08c private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -254,6 +255,7 @@ public class PurpurWorldConfig { +@@ -252,6 +253,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/0185-Toggle-for-kinetic-damage.patch b/patches/server/0185-Toggle-for-kinetic-damage.patch index 9f7d1afbf..219e23f23 100644 --- a/patches/server/0185-Toggle-for-kinetic-damage.patch +++ b/patches/server/0185-Toggle-for-kinetic-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3b77111bdf50cd836d6e4199e6224b594430b147..bc31065aed8d09b5242310de52f895a0173c0534 100644 +index 9367e0f148d3aa9a60dfd8881a3c337630a53129..6b76ca326d08853a8a508ec22d7bc6cf370223dd 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2983,6 +2983,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -17,18 +17,17 @@ index 3b77111bdf50cd836d6e4199e6224b594430b147..bc31065aed8d09b5242310de52f895a0 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96e366d6f12671b580f83f428e07d08c221b888b..4d9ae3f9312b7427f1e4e4583bb5ecfa57f09f20 100644 +index 7b7a6488f2baadd77a1247b64b46d5589c882514..c2e2fd46eb79727fec1f2083effcccc132a784c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -178,12 +178,14 @@ public class PurpurWorldConfig { - public boolean elytraIgnoreUnbreaking = false; +@@ -177,11 +177,13 @@ public class PurpurWorldConfig { + public double elytraDamageMultiplyBySpeed = 0; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; + public boolean elytraKineticDamage = true; private void elytraSettings() { elytraDamagePerSecond = getInt("gameplay-mechanics.elytra.damage-per-second", elytraDamagePerSecond); elytraDamageMultiplyBySpeed = getDouble("gameplay-mechanics.elytra.damage-multiplied-by-speed", elytraDamageMultiplyBySpeed); - elytraIgnoreUnbreaking = getBoolean("gameplay-mechanics.elytra.ignore-unbreaking", elytraIgnoreUnbreaking); elytraDamagePerFireworkBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost); elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); + elytraKineticDamage = getBoolean("gameplay-mechanics.elytra.kinetic-damage", elytraKineticDamage); diff --git a/patches/server/0186-Add-Option-for-disable-observer-clocks.patch b/patches/server/0186-Add-Option-for-disable-observer-clocks.patch index 8b87ac81b..70fc1a243 100644 --- a/patches/server/0186-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0186-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d9ae3f9312b7427f1e4e4583bb5ecfa57f09f20..d78268f4b1740c922bc979de7d5f1f8ccec3af2f 100644 +index c2e2fd46eb79727fec1f2083effcccc132a784c8..6df0f31600623ada9ea8207feeaa0de8368be8fd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -354,6 +354,11 @@ public class PurpurWorldConfig { +@@ -352,6 +352,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch index b4b735eb5..f8d84bb99 100644 --- a/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 3c4cff3f095cdf2dd74df7bf4bb8f3d5600b342d..9bb75b49ea2d0bd8aafbe537b65f86eb return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d78268f4b1740c922bc979de7d5f1f8ccec3af2f..863fa41dc970b59e31aa0fe78729eb305780cf19 100644 +index 6df0f31600623ada9ea8207feeaa0de8368be8fd..e6101274efffc8a51d9ce8bd9245c33fa09041d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2837,6 +2837,8 @@ public class PurpurWorldConfig { +@@ -2835,6 +2835,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index d78268f4b1740c922bc979de7d5f1f8ccec3af2f..863fa41dc970b59e31aa0fe78729eb30 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2852,6 +2854,8 @@ public class PurpurWorldConfig { +@@ -2850,6 +2852,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/0188-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch index 8f82362e0..9f8e9c109 100644 --- a/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 863fa41dc970b59e31aa0fe78729eb305780cf19..93faa1e96703c32bc19a235479ba271ef1f2aa06 100644 +index e6101274efffc8a51d9ce8bd9245c33fa09041d4..9a21a85a8d0bdd1a953c55d1cf9c17537939d7f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -990,9 +990,13 @@ public class PurpurWorldConfig { +@@ -988,9 +988,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch index 4c28583a0..7ca70904f 100644 --- a/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 15c9321763ad9f3bb31d7a05cb7ed9cb64e9a8a4..c37c27eec9d0b293063fc8841ac85810 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93faa1e96703c32bc19a235479ba271ef1f2aa06..e0ed820f2b2369d2c2892683c99feb0e84831f5a 100644 +index 9a21a85a8d0bdd1a953c55d1cf9c17537939d7f2..cb5e0cccb4e812db5e7c1713c9ff2a01d02cf817 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2682,6 +2682,7 @@ public class PurpurWorldConfig { +@@ -2680,6 +2680,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 93faa1e96703c32bc19a235479ba271ef1f2aa06..e0ed820f2b2369d2c2892683c99feb0e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2703,6 +2704,7 @@ public class PurpurWorldConfig { +@@ -2701,6 +2702,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/0190-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch index 4eb39c3c4..525c0b871 100644 --- a/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e0ed820f2b2369d2c2892683c99feb0e84831f5a..c9e9f39d9583cac71f9703f5f8a8bcf621a9a70a 100644 +index cb5e0cccb4e812db5e7c1713c9ff2a01d02cf817..9fa9cc62d9f8f3cb1eec8c5738ce04bb8cdda9b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -831,6 +831,11 @@ public class PurpurWorldConfig { +@@ -829,6 +829,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch index dc5f821ec..6e2e50267 100644 --- a/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,10 +18,10 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c9e9f39d9583cac71f9703f5f8a8bcf621a9a70a..0b06d64ca0fe0d33345526e9b62e58ec073e610b 100644 +index 9fa9cc62d9f8f3cb1eec8c5738ce04bb8cdda9b7..329954562a9c66c7fd33c9f816ff09a7739fc854 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -389,6 +389,7 @@ public class PurpurWorldConfig { +@@ -387,6 +387,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index c9e9f39d9583cac71f9703f5f8a8bcf621a9a70a..0b06d64ca0fe0d33345526e9b62e58ec 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 { +@@ -410,6 +411,7 @@ public class PurpurWorldConfig { playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0192-Conduit-behavior-configuration.patch b/patches/server/0192-Conduit-behavior-configuration.patch index e7b1eccaa..9c7fdecbc 100644 --- a/patches/server/0192-Conduit-behavior-configuration.patch +++ b/patches/server/0192-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b06d64ca0fe0d33345526e9b62e58ec073e610b..fc4d67cb6e8f730cfd141818bc7a6380c872f605 100644 +index 329954562a9c66c7fd33c9f816ff09a7739fc854..27860fcde1f1decdce9c1f54f92ea6097700ee50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2903,4 +2903,27 @@ public class PurpurWorldConfig { +@@ -2901,4 +2901,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0193-Cauldron-fill-chances.patch b/patches/server/0193-Cauldron-fill-chances.patch index d9f6b18bb..306364519 100644 --- a/patches/server/0193-Cauldron-fill-chances.patch +++ b/patches/server/0193-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc4d67cb6e8f730cfd141818bc7a6380c872f605..dc98e302cbe5ad2f016913d2b41c6d68d94b589e 100644 +index 27860fcde1f1decdce9c1f54f92ea6097700ee50..7cc3ff173bb97b720b69b3b82a621868849fc443 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2926,4 +2926,15 @@ public class PurpurWorldConfig { +@@ -2924,4 +2924,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0195-Shulker-change-color-with-dye.patch b/patches/server/0195-Shulker-change-color-with-dye.patch index dab5235ea..7420ca1d3 100644 --- a/patches/server/0195-Shulker-change-color-with-dye.patch +++ b/patches/server/0195-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index fde6bae8a5d9eba7ec87c73047a6e3f91629828e..0e9a4e473b1f1887804507cfadfdeeed protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b953cf6ff70684ef4735ea4f328f647649ea9ce4..faf2b37977bb0b3d1b8a95f31159ab4b142bf56a 100644 +index 250d455cc9c723bd83f9d7617b73014aa55759aa..7fefcc2bba871c821172264810e373278a92caa0 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 { +@@ -2242,6 +2242,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -40,7 +40,7 @@ index b953cf6ff70684ef4735ea4f328f647649ea9ce4..faf2b37977bb0b3d1b8a95f31159ab4b private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2260,6 +2261,7 @@ public class PurpurWorldConfig { +@@ -2258,6 +2259,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/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 2b7d8016a..2280956d6 100644 --- a/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 223259e7a09ada681b6181c898f6857888594f85..7d58a95f7ae8983b466b275f4f82597d .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a8c99464eaff70be5695cafd83caa3d1c6f7a03..0a854ab320f008eed19b9bd77d29a62c7dafdec5 100644 +index 02770064c5569a20aeb3ee167254d4214455a9e2..cb754bc007f543b72651c6e744c1691ad8ce3f95 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -791,6 +791,11 @@ public class PurpurWorldConfig { +@@ -789,6 +789,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 3a8c99464eaff70be5695cafd83caa3d1c6f7a03..0a854ab320f008eed19b9bd77d29a62c public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -928,6 +933,11 @@ public class PurpurWorldConfig { +@@ -926,6 +931,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch index bc4e17027..3365b164b 100644 --- a/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index 7e96d06e498ee8a5b3f237e70516552d0cf24388..89eef5b3c964668e3be53cce6551a6fa + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 50adefb7297d959bc4005a9418c09eabf76e2746..1f18c8256e1b9eda82946c33d79e8303344e575d 100644 +index e81820761689801c3ca267c500818ff0f48bb858..efb72ae3ce609117258dfc9f09b53add4ef0fd8e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2004,6 +2004,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -48,10 +48,10 @@ index 50adefb7297d959bc4005a9418c09eabf76e2746..1f18c8256e1b9eda82946c33d79e8303 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 0a854ab320f008eed19b9bd77d29a62c7dafdec5..1ffae4a0da032cf4a2c2e0bed30059b20b63ad05 100644 +index cb754bc007f543b72651c6e744c1691ad8ce3f95..d1ff92b87cfb3c251080047104277abde2fdcd4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,6 +396,7 @@ public class PurpurWorldConfig { +@@ -394,6 +394,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 0a854ab320f008eed19b9bd77d29a62c7dafdec5..1ffae4a0da032cf4a2c2e0bed30059b2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -420,6 +421,7 @@ public class PurpurWorldConfig { +@@ -418,6 +419,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch index 372a64be6..9cb3297d4 100644 --- a/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 439fa9a5070889a4dee48786509940c4d56b6806..f2e1954a1e80862ec3818af448cf4096 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 1ffae4a0da032cf4a2c2e0bed30059b20b63ad05..42152013c0c242427fc9ba95a65e8b1b62547a2f 100644 +index d1ff92b87cfb3c251080047104277abde2fdcd4e..06dbb44d3f1ceab48f9d00398197c0150b49615a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1342,6 +1342,7 @@ public class PurpurWorldConfig { +@@ -1340,6 +1340,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 1ffae4a0da032cf4a2c2e0bed30059b20b63ad05..42152013c0c242427fc9ba95a65e8b1b private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1356,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1355,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/0202-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch index 7f726fbb8..d2a8085d6 100644 --- a/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch @@ -61,10 +61,10 @@ index dfb8bc50ceb8eab6752fab62cb81efda569d2fbb..dd66868e9b9f807a5e20420987336b4d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 42152013c0c242427fc9ba95a65e8b1b62547a2f..efd3b1aa485b404ac46cbb74f642793ec5186b98 100644 +index 06dbb44d3f1ceab48f9d00398197c0150b49615a..26961725e53785977cfdad845fb7ea844b70422f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1291,7 +1291,14 @@ public class PurpurWorldConfig { +@@ -1289,7 +1289,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index 42152013c0c242427fc9ba95a65e8b1b62547a2f..efd3b1aa485b404ac46cbb74f642793e cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1304,6 +1311,8 @@ public class PurpurWorldConfig { +@@ -1302,6 +1309,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/0203-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch index 7764d2e36..5229d1db2 100644 --- a/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 1e100de8d30777e83907c523ffc1a3a54c670205..a9f6016b76dce5ca63b3a1093241c9e6 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 efd3b1aa485b404ac46cbb74f642793ec5186b98..0e3c847d474651c8b3f5ad0a8e0cd6912a3af3df 100644 +index 26961725e53785977cfdad845fb7ea844b70422f..b333904c6081d79e64ee5cf576bffc15ebc24211 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -810,6 +810,7 @@ public class PurpurWorldConfig { +@@ -808,6 +808,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index efd3b1aa485b404ac46cbb74f642793ec5186b98..0e3c847d474651c8b3f5ad0a8e0cd691 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -820,6 +821,7 @@ public class PurpurWorldConfig { +@@ -818,6 +819,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0204-Halloween-options-and-optimizations.patch b/patches/server/0204-Halloween-options-and-optimizations.patch index 5be168b31..40d544705 100644 --- a/patches/server/0204-Halloween-options-and-optimizations.patch +++ b/patches/server/0204-Halloween-options-and-optimizations.patch @@ -26,7 +26,7 @@ index a7847b6ca5b203fd693337928f31a9043be163d7..a50d58240c58a0fea4ae8fc246898708 LocalDate localdate = LocalDate.now(); int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index f56580bdae043fa4e5e195481ae3d344fc725621..63cbec52bc4637a0b787cbc22041188691527def 100644 +index 1d06c612eaba8b595fa3d094577f700989d1e224..4aeb23de31e826d5cf27f8c91bd60c911f769a17 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -136,11 +136,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -43,7 +43,7 @@ index f56580bdae043fa4e5e195481ae3d344fc725621..63cbec52bc4637a0b787cbc220411886 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index c8a664447f19e437eb7c615563add92715be9650..fc6914d459b1985a2cba0f963a7d79ebaa0aed58 100644 +index dd3890d405c9eb5ad2630fc555f7c74fd3d76f6e..bd4c70ac65ec372ce5a385a7c77ebeda2973e59d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -584,11 +584,7 @@ public class Zombie extends Monster { @@ -60,10 +60,10 @@ index c8a664447f19e437eb7c615563add92715be9650..fc6914d459b1985a2cba0f963a7d79eb 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 0e3c847d474651c8b3f5ad0a8e0cd6912a3af3df..7bf7ae192d2423c6818075bed4c862848a94cef4 100644 +index b333904c6081d79e64ee5cf576bffc15ebc24211..7c1245846c8df14dd88bfba1282c2d2abf1e0c82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1684,6 +1684,13 @@ public class PurpurWorldConfig { +@@ -1682,6 +1682,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0207-Campfire-option-for-lit-when-placed.patch b/patches/server/0207-Campfire-option-for-lit-when-placed.patch index ce4e1269c..f87280bc1 100644 --- a/patches/server/0207-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0207-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 7f6058f4def83867971121751acd51c398583651..5a49daf7b6bf9e0ec3d50494287a620d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7bf7ae192d2423c6818075bed4c862848a94cef4..1be459af4a0032e87d2515f5e04cca618ae9cf9c 100644 +index 7c1245846c8df14dd88bfba1282c2d2abf1e0c82..9a7d59f27029bce9bf4a382d431f18057b19771a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -853,6 +853,11 @@ public class PurpurWorldConfig { +@@ -851,6 +851,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch index 7eef4b2a4..210970d47 100644 --- a/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1be459af4a0032e87d2515f5e04cca618ae9cf9c..d2f915440403f26c0e8d2839e64a4bd982eacf32 100644 +index 9a7d59f27029bce9bf4a382d431f18057b19771a..c270fb9b6e7178015e8c6608b17fb1dd1b02b545 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -216,6 +216,9 @@ public class PurpurWorldConfig { +@@ -214,6 +214,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 1be459af4a0032e87d2515f5e04cca618ae9cf9c..d2f915440403f26c0e8d2839e64a4bd9 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -264,6 +267,9 @@ public class PurpurWorldConfig { +@@ -262,6 +265,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/0209-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch index 891fce02f..3a515bb20 100644 --- a/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 9bb75b49ea2d0bd8aafbe537b65f86eb04f6cfe2..612907fe87e46b5b13ed80635f203fa9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2f915440403f26c0e8d2839e64a4bd982eacf32..5f4b85e6a22243f208f677289e13aae3f08f4f4c 100644 +index c270fb9b6e7178015e8c6608b17fb1dd1b02b545..0a288488c4f94f305ae195a0c6691fc72c969add 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2903,6 +2903,7 @@ public class PurpurWorldConfig { +@@ -2901,6 +2901,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index d2f915440403f26c0e8d2839e64a4bd982eacf32..5f4b85e6a22243f208f677289e13aae3 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2920,6 +2921,7 @@ public class PurpurWorldConfig { +@@ -2918,6 +2919,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/0211-Signs-allow-color-codes.patch b/patches/server/0211-Signs-allow-color-codes.patch index a57b2e8b6..e3f9dded3 100644 --- a/patches/server/0211-Signs-allow-color-codes.patch +++ b/patches/server/0211-Signs-allow-color-codes.patch @@ -84,10 +84,10 @@ index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c150 public ClientboundBlockEntityDataPacket getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa36fb820d30bca238c5842817593267d475534f..537e8e2502ac5ca286e5b6313bbc4294a82cdea9 100644 +index b8fcc5d413baa3f058a8bc3590b7782c54ca257c..deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1026,6 +1026,11 @@ public class PurpurWorldConfig { +@@ -1024,6 +1024,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0213-Mobs-always-drop-experience.patch b/patches/server/0213-Mobs-always-drop-experience.patch index f263a5e57..ec89580ed 100644 --- a/patches/server/0213-Mobs-always-drop-experience.patch +++ b/patches/server/0213-Mobs-always-drop-experience.patch @@ -741,7 +741,7 @@ index 286ff759957ea56e0055cb25c71bce36cb348934..5923c800f6b510eb6f17540867607bd6 protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 440c90feeae3a55c98e2011ecb27c28d58f11e6e..95d3edc6c88d6ed0556c21c2623cdd5cfda35911 100644 +index cbfb5bf945b747328746d21395e66d523c268468..a9285aac811067313c5609d2d5708783736e6cb5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -70,6 +70,11 @@ public class Husk extends Zombie { @@ -789,7 +789,7 @@ index f81c09aa7673703e97ac4c39caaf25fac05e3de8..e749050be1e2e7b0e5babb86bbcf88db return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index df85753709271a6ad1f802da63f189200ead9a3a..98b4eecf1685dcf43880b983493597bd22de4877 100644 +index f6b2e0797554baa3bc74e886e22d5bac67c424f6..718311ba402fbc5b05fd480395d29578d1f3fd71 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -142,6 +142,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -1029,7 +1029,7 @@ index 5027fc69d6a32474a6bfa1fd2b567996647ec172..541acd5d2208b64977f33049cc0cbd9f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index fc6914d459b1985a2cba0f963a7d79ebaa0aed58..022a3873179c44557bee631c0afe09e9f9882e1b 100644 +index bd4c70ac65ec372ce5a385a7c77ebeda2973e59d..be24735b3b0a7bdb773842cadc49c83bcc83356d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -148,6 +148,11 @@ public class Zombie extends Monster { @@ -1157,10 +1157,10 @@ index 6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba..d342752271c76b447bb8cde50d574072 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df063a436d 100644 +index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549ffb8dd4f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1106,12 +1106,14 @@ public class PurpurWorldConfig { +@@ -1104,12 +1104,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean batRidable = false; -@@ -1127,6 +1129,7 @@ public class PurpurWorldConfig { +@@ -1125,6 +1127,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1146,6 +1149,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1147,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean beeRidable = false; -@@ -1157,6 +1161,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1159,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1172,6 +1177,7 @@ public class PurpurWorldConfig { +@@ -1170,6 +1175,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean blazeRidable = false; -@@ -1180,6 +1186,7 @@ public class PurpurWorldConfig { +@@ -1178,6 +1184,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1192,6 +1199,7 @@ public class PurpurWorldConfig { +@@ -1190,6 +1197,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean boggedRidable = false; -@@ -1234,6 +1242,7 @@ public class PurpurWorldConfig { +@@ -1232,6 +1240,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1254,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1252,6 +1261,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean caveSpiderRidable = false; -@@ -1261,6 +1271,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1269,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1272,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1270,6 +1281,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean chickenRidable = false; -@@ -1281,6 +1293,7 @@ public class PurpurWorldConfig { +@@ -1279,6 +1291,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1294,12 +1307,14 @@ public class PurpurWorldConfig { +@@ -1292,12 +1305,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1310,6 +1325,7 @@ public class PurpurWorldConfig { +@@ -1308,6 +1323,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean cowRidable = false; -@@ -1321,6 +1337,7 @@ public class PurpurWorldConfig { +@@ -1319,6 +1335,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1341,6 +1358,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1356,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean creeperRidable = false; -@@ -1353,6 +1371,7 @@ public class PurpurWorldConfig { +@@ -1351,6 +1369,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1369,6 +1388,7 @@ public class PurpurWorldConfig { +@@ -1367,6 +1386,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean dolphinRidable = false; -@@ -1380,6 +1400,7 @@ public class PurpurWorldConfig { +@@ -1378,6 +1398,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1395,6 +1416,7 @@ public class PurpurWorldConfig { +@@ -1393,6 +1414,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean donkeyRidableInWater = false; -@@ -1406,6 +1428,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1426,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1423,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1444,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean drownedRidable = false; -@@ -1435,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1457,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1451,12 +1476,14 @@ public class PurpurWorldConfig { +@@ -1449,12 +1474,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1467,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1465,6 +1492,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean enderDragonRidable = false; -@@ -1512,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1538,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1535,6 +1564,7 @@ public class PurpurWorldConfig { +@@ -1533,6 +1562,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean endermiteRidable = false; -@@ -1542,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1540,6 +1570,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1553,6 +1584,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1582,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean evokerRidable = false; -@@ -1561,6 +1593,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1591,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1573,6 +1606,7 @@ public class PurpurWorldConfig { +@@ -1571,6 +1604,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean foxRidable = false; -@@ -1583,6 +1617,7 @@ public class PurpurWorldConfig { +@@ -1581,6 +1615,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1597,6 +1632,7 @@ public class PurpurWorldConfig { +@@ -1595,6 +1630,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean frogRidable = false; -@@ -1618,6 +1654,7 @@ public class PurpurWorldConfig { +@@ -1616,6 +1652,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1630,6 +1667,7 @@ public class PurpurWorldConfig { +@@ -1628,6 +1665,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean giantRidable = false; -@@ -1643,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1641,6 +1679,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1664,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1701,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean glowSquidRidable = false; -@@ -1671,12 +1711,14 @@ public class PurpurWorldConfig { +@@ -1669,12 +1709,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean goatRidable = false; -@@ -1685,6 +1727,7 @@ public class PurpurWorldConfig { +@@ -1683,6 +1725,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1692,12 +1735,14 @@ public class PurpurWorldConfig { +@@ -1690,12 +1733,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1708,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1706,6 +1751,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean forceHalloweenSeason = false; -@@ -1723,6 +1769,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1767,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1735,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1780,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean horseRidableInWater = false; -@@ -1746,6 +1794,7 @@ public class PurpurWorldConfig { +@@ -1744,6 +1792,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1763,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1761,6 +1810,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); @@ -1555,7 +1555,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean huskRidable = false; -@@ -1774,6 +1824,7 @@ public class PurpurWorldConfig { +@@ -1772,6 +1822,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1789,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1787,6 +1838,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean illusionerRidable = false; -@@ -1798,6 +1850,7 @@ public class PurpurWorldConfig { +@@ -1796,6 +1848,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1815,6 +1868,7 @@ public class PurpurWorldConfig { +@@ -1813,6 +1866,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean ironGolemRidable = false; -@@ -1825,6 +1879,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1877,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1839,6 +1894,7 @@ public class PurpurWorldConfig { +@@ -1837,6 +1892,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean llamaRidable = false; -@@ -1853,6 +1909,7 @@ public class PurpurWorldConfig { +@@ -1851,6 +1907,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1873,6 +1930,7 @@ public class PurpurWorldConfig { +@@ -1871,6 +1928,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean magmaCubeRidable = false; -@@ -1883,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +1939,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1897,6 +1956,7 @@ public class PurpurWorldConfig { +@@ -1895,6 +1954,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean mooshroomRidable = false; -@@ -1905,6 +1965,7 @@ public class PurpurWorldConfig { +@@ -1903,6 +1963,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1917,6 +1978,7 @@ public class PurpurWorldConfig { +@@ -1915,6 +1976,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean muleRidableInWater = false; -@@ -1928,6 +1990,7 @@ public class PurpurWorldConfig { +@@ -1926,6 +1988,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1945,6 +2008,7 @@ public class PurpurWorldConfig { +@@ -1943,6 +2006,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean ocelotRidable = false; -@@ -1953,6 +2017,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2015,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1965,6 +2030,7 @@ public class PurpurWorldConfig { +@@ -1963,6 +2028,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean pandaRidable = false; -@@ -1973,6 +2039,7 @@ public class PurpurWorldConfig { +@@ -1971,6 +2037,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1985,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -1983,6 +2050,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean parrotRidable = false; -@@ -1994,6 +2062,7 @@ public class PurpurWorldConfig { +@@ -1992,6 +2060,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2007,6 +2076,7 @@ public class PurpurWorldConfig { +@@ -2005,6 +2074,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean phantomRidable = false; -@@ -2034,6 +2104,7 @@ public class PurpurWorldConfig { +@@ -2032,6 +2102,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2069,6 +2140,7 @@ public class PurpurWorldConfig { +@@ -2067,6 +2138,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean pigRidable = false; -@@ -2078,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2076,6 +2148,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2091,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2089,6 +2162,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean piglinRidable = false; -@@ -2100,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2098,6 +2172,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2113,6 +2188,7 @@ public class PurpurWorldConfig { +@@ -2111,6 +2186,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean piglinBruteRidable = false; -@@ -2120,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2118,6 +2194,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2131,6 +2208,7 @@ public class PurpurWorldConfig { +@@ -2129,6 +2206,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean pillagerRidable = false; -@@ -2139,6 +2217,7 @@ public class PurpurWorldConfig { +@@ -2137,6 +2215,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2151,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2149,6 +2228,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean polarBearRidable = false; -@@ -2161,6 +2241,7 @@ public class PurpurWorldConfig { +@@ -2159,6 +2239,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2176,12 +2257,14 @@ public class PurpurWorldConfig { +@@ -2174,12 +2255,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2192,6 +2275,7 @@ public class PurpurWorldConfig { +@@ -2190,6 +2273,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean rabbitRidable = false; -@@ -2203,6 +2287,7 @@ public class PurpurWorldConfig { +@@ -2201,6 +2285,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2218,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2216,6 +2301,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean ravagerRidable = false; -@@ -2227,6 +2313,7 @@ public class PurpurWorldConfig { +@@ -2225,6 +2311,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2256,12 +2343,14 @@ public class PurpurWorldConfig { +@@ -2254,12 +2341,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2272,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2270,6 +2359,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean sheepRidable = false; -@@ -2281,6 +2371,7 @@ public class PurpurWorldConfig { +@@ -2279,6 +2369,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2294,6 +2385,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2383,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean shulkerRidable = false; -@@ -2307,6 +2399,7 @@ public class PurpurWorldConfig { +@@ -2305,6 +2397,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2324,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2322,6 +2415,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean silverfishRidable = false; -@@ -2332,6 +2426,7 @@ public class PurpurWorldConfig { +@@ -2330,6 +2424,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2344,6 +2439,7 @@ public class PurpurWorldConfig { +@@ -2342,6 +2437,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean skeletonRidable = false; -@@ -2351,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2349,6 +2445,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2362,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2360,6 +2457,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean skeletonHorseRidable = false; -@@ -2374,6 +2472,7 @@ public class PurpurWorldConfig { +@@ -2372,6 +2470,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2391,6 +2490,7 @@ public class PurpurWorldConfig { +@@ -2389,6 +2488,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean slimeRidable = false; -@@ -2401,6 +2501,7 @@ public class PurpurWorldConfig { +@@ -2399,6 +2499,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2415,6 +2516,7 @@ public class PurpurWorldConfig { +@@ -2413,6 +2514,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean snowGolemRidable = false; -@@ -2429,6 +2531,7 @@ public class PurpurWorldConfig { +@@ -2427,6 +2529,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2447,6 +2550,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2548,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean snifferRidable = false; -@@ -2469,6 +2573,7 @@ public class PurpurWorldConfig { +@@ -2467,6 +2571,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2482,6 +2587,7 @@ public class PurpurWorldConfig { +@@ -2480,6 +2585,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean spiderRidable = false; -@@ -2489,6 +2595,7 @@ public class PurpurWorldConfig { +@@ -2487,6 +2593,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2500,6 +2607,7 @@ public class PurpurWorldConfig { +@@ -2498,6 +2605,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean strayRidable = false; -@@ -2507,6 +2615,7 @@ public class PurpurWorldConfig { +@@ -2505,6 +2613,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2518,6 +2627,7 @@ public class PurpurWorldConfig { +@@ -2516,6 +2625,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean striderRidable = false; -@@ -2527,6 +2637,7 @@ public class PurpurWorldConfig { +@@ -2525,6 +2635,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2540,6 +2651,7 @@ public class PurpurWorldConfig { +@@ -2538,6 +2649,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean tadpoleRidable = false; -@@ -2562,6 +2674,7 @@ public class PurpurWorldConfig { +@@ -2560,6 +2672,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2581,12 +2694,14 @@ public class PurpurWorldConfig { +@@ -2579,12 +2692,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2597,6 +2712,7 @@ public class PurpurWorldConfig { +@@ -2595,6 +2710,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean turtleRidable = false; -@@ -2605,6 +2721,7 @@ public class PurpurWorldConfig { +@@ -2603,6 +2719,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2617,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2615,6 +2732,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean vexRidable = false; -@@ -2625,6 +2743,7 @@ public class PurpurWorldConfig { +@@ -2623,6 +2741,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2637,6 +2756,7 @@ public class PurpurWorldConfig { +@@ -2635,6 +2754,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean villagerRidable = false; -@@ -2652,6 +2772,7 @@ public class PurpurWorldConfig { +@@ -2650,6 +2770,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2671,6 +2792,7 @@ public class PurpurWorldConfig { +@@ -2669,6 +2790,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean vindicatorRidable = false; -@@ -2679,6 +2801,7 @@ public class PurpurWorldConfig { +@@ -2677,6 +2799,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2691,6 +2814,7 @@ public class PurpurWorldConfig { +@@ -2689,6 +2812,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean wanderingTraderRidable = false; -@@ -2701,6 +2825,7 @@ public class PurpurWorldConfig { +@@ -2699,6 +2823,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2715,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2713,6 +2838,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean wardenRidable = false; -@@ -2731,6 +2857,7 @@ public class PurpurWorldConfig { +@@ -2729,6 +2855,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2742,6 +2869,7 @@ public class PurpurWorldConfig { +@@ -2740,6 +2867,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean witherRidable = false; -@@ -2756,6 +2884,7 @@ public class PurpurWorldConfig { +@@ -2754,6 +2882,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2778,6 +2907,7 @@ public class PurpurWorldConfig { +@@ -2776,6 +2905,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean witherSkeletonRidable = false; -@@ -2785,6 +2915,7 @@ public class PurpurWorldConfig { +@@ -2783,6 +2913,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2796,6 +2927,7 @@ public class PurpurWorldConfig { +@@ -2794,6 +2925,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean wolfRidable = false; -@@ -2807,6 +2939,7 @@ public class PurpurWorldConfig { +@@ -2805,6 +2937,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2826,6 +2959,7 @@ public class PurpurWorldConfig { +@@ -2824,6 +2957,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean zoglinRidable = false; -@@ -2833,6 +2967,7 @@ public class PurpurWorldConfig { +@@ -2831,6 +2965,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2844,6 +2979,7 @@ public class PurpurWorldConfig { +@@ -2842,6 +2977,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean zombieRidable = false; -@@ -2857,6 +2993,7 @@ public class PurpurWorldConfig { +@@ -2855,6 +2991,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2874,6 +3011,7 @@ public class PurpurWorldConfig { +@@ -2872,6 +3009,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean zombieHorseRidable = false; -@@ -2887,6 +3025,7 @@ public class PurpurWorldConfig { +@@ -2885,6 +3023,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2905,6 +3044,7 @@ public class PurpurWorldConfig { +@@ -2903,6 +3042,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean zombieVillagerRidable = false; -@@ -2919,6 +3059,7 @@ public class PurpurWorldConfig { +@@ -2917,6 +3057,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2937,6 +3078,7 @@ public class PurpurWorldConfig { +@@ -2935,6 +3076,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 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df } public boolean zombifiedPiglinRidable = false; -@@ -2949,6 +3091,7 @@ public class PurpurWorldConfig { +@@ -2947,6 +3089,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 537e8e2502ac5ca286e5b6313bbc4294a82cdea9..5fb8ba70fc0ba10a986339032604d0df private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2965,6 +3108,7 @@ public class PurpurWorldConfig { +@@ -2963,6 +3106,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/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 69ef6a000..e40102b5e 100644 --- a/patches/server/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5fb8ba70fc0ba10a986339032604d0df063a436d..c20017afcbf1074246f037f3f5df775b889a9a5a 100644 +index 9b1291728f0ebaadbe5d902654bf549ffb8dd4f8..b1630fa0c619231a702ff51aa69267fb9d9e675e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -533,6 +533,8 @@ public class PurpurWorldConfig { +@@ -531,6 +531,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 5fb8ba70fc0ba10a986339032604d0df063a436d..c20017afcbf1074246f037f3f5df775b private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -800,6 +802,8 @@ public class PurpurWorldConfig { +@@ -798,6 +800,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch index adc199296..43c9adef9 100644 --- a/patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c20017afcbf1074246f037f3f5df775b889a9a5a..5b86ea6524f57846048e2892c0c03df1fd24b782 100644 +index b1630fa0c619231a702ff51aa69267fb9d9e675e..29e9aad79b6c0b58375e617ca78d522e99728ed2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1060,11 +1060,13 @@ public class PurpurWorldConfig { +@@ -1058,11 +1058,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0217-Mob-head-visibility-percent.patch b/patches/server/0217-Mob-head-visibility-percent.patch index 1e41b85a7..0046c2327 100644 --- a/patches/server/0217-Mob-head-visibility-percent.patch +++ b/patches/server/0217-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bc31065aed8d09b5242310de52f895a0173c0534..aa8997468c50810c3c9713c98a7786f2f0ab7a72 100644 +index 6b76ca326d08853a8a508ec22d7bc6cf370223dd..07068e5f93289534f10c0b876dbf884afd9f9b59 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1046,9 +1046,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index bc31065aed8d09b5242310de52f895a0173c0534..aa8997468c50810c3c9713c98a7786f2 // 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 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a282970625d0dc 100644 +index 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086ba90b704 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1378,6 +1378,7 @@ public class PurpurWorldConfig { +@@ -1376,6 +1376,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1395,6 +1396,7 @@ public class PurpurWorldConfig { +@@ -1393,6 +1394,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 } public boolean dolphinRidable = false; -@@ -2181,6 +2183,7 @@ public class PurpurWorldConfig { +@@ -2179,6 +2181,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2195,6 +2198,7 @@ public class PurpurWorldConfig { +@@ -2193,6 +2196,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 } public boolean piglinBruteRidable = false; -@@ -2454,6 +2458,7 @@ public class PurpurWorldConfig { +@@ -2452,6 +2456,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2466,6 +2471,7 @@ public class PurpurWorldConfig { +@@ -2464,6 +2469,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); @@ -83,7 +83,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 } public boolean skeletonHorseRidable = false; -@@ -3000,6 +3006,7 @@ public class PurpurWorldConfig { +@@ -2998,6 +3004,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 5b86ea6524f57846048e2892c0c03df1fd24b782..2a37cf8ef4416523c30be5bb80a28297 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3018,6 +3025,7 @@ public class PurpurWorldConfig { +@@ -3016,6 +3023,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/0220-Stop-bees-from-dying-after-stinging.patch b/patches/server/0220-Stop-bees-from-dying-after-stinging.patch index ff5b5bac2..e571d7414 100644 --- a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0220-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index ca56f5781c1c02e40179a4dd359c5d167d3160dc..0dfdecff129a6b34833eb3fb7d7d967b ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a37cf8ef4416523c30be5bb80a282970625d0dc..60b463e782ccf4de6fa4d27afe81507b793367c6 100644 +index 8e56444379e20aa68226e279eaa8a086ba90b704..3e20191efbe41d996f3842865070aae6faefb75a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1168,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1166,6 +1166,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 2a37cf8ef4416523c30be5bb80a282970625d0dc..60b463e782ccf4de6fa4d27afe81507b private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1184,6 +1185,7 @@ public class PurpurWorldConfig { +@@ -1182,6 +1183,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/0222-Configurable-farmland-trample-height.patch b/patches/server/0222-Configurable-farmland-trample-height.patch index dc098ec57..2457612cc 100644 --- a/patches/server/0222-Configurable-farmland-trample-height.patch +++ b/patches/server/0222-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60b463e782ccf4de6fa4d27afe81507b793367c6..61b299dea4432d3c4ac18b4c4a035da88b669453 100644 +index 3e20191efbe41d996f3842865070aae6faefb75a..3a1c9f9a83115393d83c6646dea07cc842bd7220 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -953,6 +953,7 @@ public class PurpurWorldConfig { +@@ -951,6 +951,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 60b463e782ccf4de6fa4d27afe81507b793367c6..61b299dea4432d3c4ac18b4c4a035da8 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -960,6 +961,7 @@ public class PurpurWorldConfig { +@@ -958,6 +959,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/0223-Configurable-player-pickup-exp-delay.patch b/patches/server/0223-Configurable-player-pickup-exp-delay.patch index 2cc950971..78cd333de 100644 --- a/patches/server/0223-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0223-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index cb6f161d32fe9642e9e9b1efc47d88612041ea15..92df67d9e1d32c8a7aaeaaa46c7641af } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61b299dea4432d3c4ac18b4c4a035da88b669453..f7957a2e4c7708af0616500792e95a395330f770 100644 +index 3a1c9f9a83115393d83c6646dea07cc842bd7220..fb88b7e916f0ea3fb5fbe440f84cb28fc69e2740 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 { +@@ -411,6 +411,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 61b299dea4432d3c4ac18b4c4a035da88b669453..f7957a2e4c7708af0616500792e95a39 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -438,6 +439,7 @@ public class PurpurWorldConfig { +@@ -436,6 +437,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0224-Allow-void-trading.patch b/patches/server/0224-Allow-void-trading.patch index cae4844f1..d975f5c45 100644 --- a/patches/server/0224-Allow-void-trading.patch +++ b/patches/server/0224-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 31642e0667b4086fdc05626806da6d5c5c24baeb..fda301c5bb53bc04d9cb133c45d791fa } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f7957a2e4c7708af0616500792e95a395330f770..7e525564d0806cc5433c59480a3f19e7b1bd6ba3 100644 +index fb88b7e916f0ea3fb5fbe440f84cb28fc69e2740..ffdaadbf3d92464de99f22d95e4141c24d919c1d 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 { +@@ -412,6 +412,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index f7957a2e4c7708af0616500792e95a395330f770..7e525564d0806cc5433c59480a3f19e7 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -440,6 +441,7 @@ public class PurpurWorldConfig { +@@ -438,6 +439,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0225-Configurable-phantom-size.patch b/patches/server/0225-Configurable-phantom-size.patch index b5180ed8f..3fb54f5c3 100644 --- a/patches/server/0225-Configurable-phantom-size.patch +++ b/patches/server/0225-Configurable-phantom-size.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable phantom size diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 98b4eecf1685dcf43880b983493597bd22de4877..260c5d22ee10582974a5006cfeefa0670ecd1d3a 100644 +index 718311ba402fbc5b05fd480395d29578d1f3fd71..493e9ee0585ae419caffaa163f4975ab6408fad8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -265,7 +265,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -22,10 +22,10 @@ index 98b4eecf1685dcf43880b983493597bd22de4877..260c5d22ee10582974a5006cfeefa067 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e525564d0806cc5433c59480a3f19e7b1bd6ba3..55fd2e8aa85e7d27dc06c7a5c68d380738d4b360 100644 +index ffdaadbf3d92464de99f22d95e4141c24d919c1d..40f2f88ef4c4e4f793cecd09274321ffd87288cf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2121,6 +2121,8 @@ public class PurpurWorldConfig { +@@ -2119,6 +2119,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 7e525564d0806cc5433c59480a3f19e7b1bd6ba3..55fd2e8aa85e7d27dc06c7a5c68d3807 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2157,6 +2159,13 @@ public class PurpurWorldConfig { +@@ -2155,6 +2157,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/0227-Configurable-minimum-demand-for-trades.patch b/patches/server/0227-Configurable-minimum-demand-for-trades.patch index 42757c40d..4392057cc 100644 --- a/patches/server/0227-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0227-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55fd2e8aa85e7d27dc06c7a5c68d380738d4b360..60181091bf2e215f5f47a86eb4f16ba14951bfdc 100644 +index 40f2f88ef4c4e4f793cecd09274321ffd87288cf..4334594e5f61ca86fbf6cc749ad31bba6d02602d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2802,6 +2802,7 @@ public class PurpurWorldConfig { +@@ -2800,6 +2800,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 55fd2e8aa85e7d27dc06c7a5c68d380738d4b360..60181091bf2e215f5f47a86eb4f16ba1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2822,6 +2823,7 @@ public class PurpurWorldConfig { +@@ -2820,6 +2821,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/0228-Lobotomize-stuck-villagers.patch b/patches/server/0228-Lobotomize-stuck-villagers.patch index 7ae20873d..ea5db7f09 100644 --- a/patches/server/0228-Lobotomize-stuck-villagers.patch +++ b/patches/server/0228-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60181091bf2e215f5f47a86eb4f16ba14951bfdc..9c8af5e8984629b0171f8a9d809041b451b712ec 100644 +index 4334594e5f61ca86fbf6cc749ad31bba6d02602d..ad3cea327b541b2363cf759510089f704e54bd78 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2803,6 +2803,9 @@ public class PurpurWorldConfig { +@@ -2801,6 +2801,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 60181091bf2e215f5f47a86eb4f16ba14951bfdc..9c8af5e8984629b0171f8a9d809041b4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2824,6 +2827,18 @@ public class PurpurWorldConfig { +@@ -2822,6 +2825,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0229-Option-for-villager-display-trade-item.patch b/patches/server/0229-Option-for-villager-display-trade-item.patch index b8803cf33..18f9441af 100644 --- a/patches/server/0229-Option-for-villager-display-trade-item.patch +++ b/patches/server/0229-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c8af5e8984629b0171f8a9d809041b451b712ec..e85563ab651fb3ba360f501bcb5c8e99bf996ded 100644 +index ad3cea327b541b2363cf759510089f704e54bd78..a2999fc6dd327bae29d896c454e3e0eca508ef5f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2806,6 +2806,7 @@ public class PurpurWorldConfig { +@@ -2804,6 +2804,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 9c8af5e8984629b0171f8a9d809041b451b712ec..e85563ab651fb3ba360f501bcb5c8e99 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2839,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2837,6 +2838,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 40d7b804a..dfd469e00 100644 --- a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index c9cabb061ebc9172647304431cc3fb2593dd47ba..565408c03849fb3011fb708478a99ec6 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e85563ab651fb3ba360f501bcb5c8e99bf996ded..c8cd6f76e2ea7c2d6650a97901daadde155320f4 100644 +index a2999fc6dd327bae29d896c454e3e0eca508ef5f..0288f0fa64e1e2b6d3efd5a057d2ae56c8f66497 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1047,8 +1047,10 @@ public class PurpurWorldConfig { +@@ -1045,8 +1045,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0232-Anvil-repair-damage-options.patch b/patches/server/0232-Anvil-repair-damage-options.patch index 0d7fcae1d..e8fcdb25f 100644 --- a/patches/server/0232-Anvil-repair-damage-options.patch +++ b/patches/server/0232-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3dd9a6585012e52ed9eab0b7c4b0ccf3661f6666..a031f93d14be3afb689e9a464de39e6ecf10851e 100644 +index 076ffa6aa20c4c1199c8b8a01d7c30cdab0b5c01..58c490f046dccccdf267be25f5bd065f2c5d3cf0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -814,9 +814,13 @@ public class PurpurWorldConfig { +@@ -812,9 +812,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 6d3111ac9..1620a31b2 100644 --- a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a031f93d14be3afb689e9a464de39e6ecf10851e..7ef7de3d4051257064914e48117e76aa4e7c7a6f 100644 +index 58c490f046dccccdf267be25f5bd065f2c5d3cf0..bb045d1152f406b22b2b99ad41449c19913b56b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1075,12 +1075,14 @@ public class PurpurWorldConfig { +@@ -1073,12 +1073,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch index 456face56..2bb4268f4 100644 --- a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 1f1d6fcdf89051761715f2422efe74e432a8d27a..2b55f05b727f862ea79ab2c200a756f6 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 7ef7de3d4051257064914e48117e76aa4e7c7a6f..b0171d10c521ba23b103c9b7689021f14661f055 100644 +index bb045d1152f406b22b2b99ad41449c19913b56b7..c0cf0fb24ffae56401d755e601eaab02f1b2137c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2817,6 +2817,8 @@ public class PurpurWorldConfig { +@@ -2815,6 +2815,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 7ef7de3d4051257064914e48117e76aa4e7c7a6f..b0171d10c521ba23b103c9b7689021f1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2851,6 +2853,8 @@ public class PurpurWorldConfig { +@@ -2849,6 +2851,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0237-Stonecutter-damage.patch b/patches/server/0237-Stonecutter-damage.patch index aca5cb7c0..d401115f6 100644 --- a/patches/server/0237-Stonecutter-damage.patch +++ b/patches/server/0237-Stonecutter-damage.patch @@ -143,10 +143,10 @@ index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b0171d10c521ba23b103c9b7689021f14661f055..e57cb2bff686f0f921a377fba1cb5dd382e916b0 100644 +index c0cf0fb24ffae56401d755e601eaab02f1b2137c..da43cb66b694f561d0a0072d3a3dcb9029cfdbb1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,6 +1070,11 @@ public class PurpurWorldConfig { +@@ -1068,6 +1068,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch index 13e22d3eb..35753a7bd 100644 --- a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e57cb2bff686f0f921a377fba1cb5dd382e916b0..378ea5e6795ee89395fe9d3f9fa1c086c589d5e4 100644 +index da43cb66b694f561d0a0072d3a3dcb9029cfdbb1..a276573c276188225139d730acfb84efb5529caa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1011,6 +1011,11 @@ public class PurpurWorldConfig { +@@ -1009,6 +1009,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch b/patches/server/0239-Add-config-for-snow-on-blue-ice.patch index 3ca4c4424..f9eca755c 100644 --- a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0239-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 378ea5e6795ee89395fe9d3f9fa1c086c589d5e4..fe147c450fa638272033fc0c45ed0f36913d0192 100644 +index a276573c276188225139d730acfb84efb5529caa..4edd2cab7962137d51c2d5dca2ca7743a689a60e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -992,9 +992,11 @@ public class PurpurWorldConfig { +@@ -990,9 +990,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0240-Skeletons-eat-wither-roses.patch b/patches/server/0240-Skeletons-eat-wither-roses.patch index bb761d19d..252ff3cfe 100644 --- a/patches/server/0240-Skeletons-eat-wither-roses.patch +++ b/patches/server/0240-Skeletons-eat-wither-roses.patch @@ -90,10 +90,10 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..cb714f78ad73f709967d7449c411c5b1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe147c450fa638272033fc0c45ed0f36913d0192..0a891d7fb109276753f226e0ae4b5dceb2d14972 100644 +index 4edd2cab7962137d51c2d5dca2ca7743a689a60e..acb9d5d5199cc9a1f40d6bbb00f3ff58c77dd8dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2498,6 +2498,7 @@ public class PurpurWorldConfig { +@@ -2496,6 +2496,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index fe147c450fa638272033fc0c45ed0f36913d0192..0a891d7fb109276753f226e0ae4b5dce private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2511,6 +2512,7 @@ public class PurpurWorldConfig { +@@ -2509,6 +2510,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch b/patches/server/0241-Enchantment-Table-Persists-Lapis.patch index 07befa002..4c3674cc1 100644 --- a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0241-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a891d7fb109276753f226e0ae4b5dceb2d14972..dd6e2b25a89027daf10688b6e8c9ee8234ff8178 100644 +index acb9d5d5199cc9a1f40d6bbb00f3ff58c77dd8dc..1d30c89c6490484c555935e794645067a3e05a30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1535,6 +1535,11 @@ public class PurpurWorldConfig { +@@ -1533,6 +1533,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch index 6d9d03cf9..759015fc7 100644 --- a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd6e2b25a89027daf10688b6e8c9ee8234ff8178..cfeaffea12260e5c7093968d433051262e198519 100644 +index 1d30c89c6490484c555935e794645067a3e05a30..cd7b1e706f1a306cec5b4ece0621272e9f24a142 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1049,6 +1049,11 @@ public class PurpurWorldConfig { +@@ -1047,6 +1047,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0245-Config-to-not-let-coral-die.patch b/patches/server/0245-Config-to-not-let-coral-die.patch index 0363af797..6480f4374 100644 --- a/patches/server/0245-Config-to-not-let-coral-die.patch +++ b/patches/server/0245-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cfeaffea12260e5c7093968d433051262e198519..48ad8eef034bb286babb4fbb0c74ae8e1f157b18 100644 +index cd7b1e706f1a306cec5b4ece0621272e9f24a142..642ab24c1827a58ca32b1a90b89d63f3c35c6c21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -898,6 +898,11 @@ public class PurpurWorldConfig { +@@ -896,6 +896,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch b/patches/server/0247-Add-toggle-for-RNG-manipulation.patch index 279675d22..39056587d 100644 --- a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0247-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7b3b76cb9dd8b7f6254baffcd0f94aa70918ff04..8d39a07832879230906f0b6af374ad4d69621132 100644 +index 313f3430af520613cebbf890ff8d7f70d30dd518..496551820d0357da9c5e89dd989d31b43fbfeb18 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -559,7 +559,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -33,10 +33,10 @@ index 4874d51405ce43e570ffcbf8eba4bf4aef185e50..e6244d8c7745570099638d96fafa6b49 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48ad8eef034bb286babb4fbb0c74ae8e1f157b18..3aa0c702d6d76541fb0d4ca34745ba163bbed9e0 100644 +index 642ab24c1827a58ca32b1a90b89d63f3c35c6c21..cd7fe2bbbfaadda901a241268164800e5f112b12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -208,9 +208,11 @@ public class PurpurWorldConfig { +@@ -206,9 +206,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch index a23468601..a26ff428e 100644 --- a/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3aa0c702d6d76541fb0d4ca34745ba163bbed9e0..17f3e53c58fbb076ca0a7d3257584b439c3fd375 100644 +index cd7fe2bbbfaadda901a241268164800e5f112b12..16a42027168b524066d9636b9d95124584a4ccda 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -370,6 +370,7 @@ public class PurpurWorldConfig { +@@ -368,6 +368,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index 3aa0c702d6d76541fb0d4ca34745ba163bbed9e0..17f3e53c58fbb076ca0a7d3257584b43 private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -378,6 +379,7 @@ public class PurpurWorldConfig { +@@ -376,6 +377,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0254-Add-skeleton-bow-accuracy-option.patch b/patches/server/0254-Add-skeleton-bow-accuracy-option.patch index 907a6d3ce..a7cb46e50 100644 --- a/patches/server/0254-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0254-Add-skeleton-bow-accuracy-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add skeleton bow accuracy option diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 63cbec52bc4637a0b787cbc22041188691527def..45b09f79a0ae8b7ebdd015d6edfa1fe0fd092763 100644 +index 4aeb23de31e826d5cf27f8c91bd60c911f769a17..f9532a45419699585d1f20d27d5857a3e953ec55 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -185,7 +185,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -18,10 +18,10 @@ index 63cbec52bc4637a0b787cbc22041188691527def..45b09f79a0ae8b7ebdd015d6edfa1fe0 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17f3e53c58fbb076ca0a7d3257584b439c3fd375..33c41bf3b4e1462c34fa9210dbdcee81503b6b97 100644 +index 16a42027168b524066d9636b9d95124584a4ccda..b1534efca6354890037a08697f1a29a5742cdee2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2518,6 +2518,8 @@ public class PurpurWorldConfig { +@@ -2516,6 +2516,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 17f3e53c58fbb076ca0a7d3257584b439c3fd375..33c41bf3b4e1462c34fa9210dbdcee81 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2532,6 +2534,18 @@ public class PurpurWorldConfig { +@@ -2530,6 +2532,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 48e63a7cc..c211be667 100644 --- a/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dda5640ed69277965356d2efdcd571fd4c22b55f..cefca593841723dea30c3c1f5b171c7b581a8f16 100644 +index 7f375de5acd01061d60e7eca09627a22ede930a4..01fa14950dd0801b235062d803732a09cffbfeb9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1425,6 +1425,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1423,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index dda5640ed69277965356d2efdcd571fd4c22b55f..cefca593841723dea30c3c1f5b171c7b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1443,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1441,6 +1442,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index d29cd4690..38094d647 100644 --- a/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6d12da56f191c2889418200397a84b2467b60f17..722208d61c6e363b4e4af0433b8d6390bbdc3eb3 100644 +index 9d44ca469e658005b5379eb07c483fc4983b3273..c1d6b00c2e74cd19df9dd074a021024e0c9ac442 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -938,6 +938,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -17,10 +17,10 @@ index 6d12da56f191c2889418200397a84b2467b60f17..722208d61c6e363b4e4af0433b8d6390 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cefca593841723dea30c3c1f5b171c7b581a8f16..e1354ba9666bd0369eb01c1996c487856bd38e47 100644 +index 01fa14950dd0801b235062d803732a09cffbfeb9..00e0b60c2bf30983ad62cec70bb42ec58ab9ef8c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -410,6 +410,7 @@ public class PurpurWorldConfig { +@@ -408,6 +408,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index cefca593841723dea30c3c1f5b171c7b581a8f16..e1354ba9666bd0369eb01c1996c48785 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -437,6 +438,7 @@ public class PurpurWorldConfig { +@@ -435,6 +436,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/0269-End-Crystal-Cramming.patch b/patches/server/0269-End-Crystal-Cramming.patch index cfa4b5f5c..7b0b83c76 100644 --- a/patches/server/0269-End-Crystal-Cramming.patch +++ b/patches/server/0269-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1354ba9666bd0369eb01c1996c487856bd38e47..cda3c024277c355050c26eb752ef39cb8f22cbd7 100644 +index 00e0b60c2bf30983ad62cec70bb42ec58ab9ef8c..0fffad74083adf816377820e0093c957d79c18b3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -941,6 +941,7 @@ public class PurpurWorldConfig { +@@ -939,6 +939,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index e1354ba9666bd0369eb01c1996c487856bd38e47..cda3c024277c355050c26eb752ef39cb private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -968,6 +969,7 @@ public class PurpurWorldConfig { +@@ -966,6 +967,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index fa212c693..d0d11aafb 100644 --- a/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cda3c024277c355050c26eb752ef39cb8f22cbd7..1ff6772cd0f32182b2e06a8df5a3538b57a528fe 100644 +index 0fffad74083adf816377820e0093c957d79c18b3..f097ba6b3294251e2d0b648ebfb4ca3180644639 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -840,11 +840,13 @@ public class PurpurWorldConfig { +@@ -838,11 +838,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch index 4740cf103..36c41a67b 100644 --- a/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index 3ee7bf7e10f8120258baaae8f77cdcbb6a781f78..754373da9a5246c11f3c33a8907d387e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ff6772cd0f32182b2e06a8df5a3538b57a528fe..d736c73f10ad63fb29dbca832f3d4b66c3880f67 100644 +index f097ba6b3294251e2d0b648ebfb4ca3180644639..636a27993cc82c30c3e80d7131be5d6fa1a6d7e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -217,6 +217,11 @@ public class PurpurWorldConfig { +@@ -215,6 +215,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } diff --git a/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch index 857b23458..0e666a35b 100644 --- a/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d736c73f10ad63fb29dbca832f3d4b66c3880f67..d4cd6c80d724d2d930f734980452c964687aea36 100644 +index 636a27993cc82c30c3e80d7131be5d6fa1a6d7e3..c70bf79d1a267afd49897d097f3e6d111cb75642 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -894,8 +894,20 @@ public class PurpurWorldConfig { +@@ -892,8 +892,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0278-Shears-can-defuse-TNT.patch b/patches/server/0278-Shears-can-defuse-TNT.patch index 4aa3ad19a..2bee56f97 100644 --- a/patches/server/0278-Shears-can-defuse-TNT.patch +++ b/patches/server/0278-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4cd6c80d724d2d930f734980452c964687aea36..23326e0f05f4006936e241a9bf703b813495e58d 100644 +index c70bf79d1a267afd49897d097f3e6d111cb75642..6232671f420a59d8f471ff3d0fe9bb90dbdb6e7f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3287,4 +3287,11 @@ public class PurpurWorldConfig { +@@ -3285,4 +3285,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch index 6642110d5..db882b78e 100644 --- a/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index e09ca4aa99f2e58f97159a40e33ed863fa2ae7df..6e866ec44a83ec9064ac3228bd96eb25 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 23326e0f05f4006936e241a9bf703b813495e58d..d91e9e848cc582b544ef0957b3f02f20a8deaf09 100644 +index 6232671f420a59d8f471ff3d0fe9bb90dbdb6e7f..e9e74f3701f7d9804386156b3ad4d236ffaed5db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2102,6 +2102,7 @@ public class PurpurWorldConfig { +@@ -2100,6 +2100,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 23326e0f05f4006936e241a9bf703b813495e58d..d91e9e848cc582b544ef0957b3f02f20 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2115,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2114,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 4f27a2a57..ed9e9640b 100644 --- a/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d91e9e848cc582b544ef0957b3f02f20a8deaf09..f3096a1c7663f8cc614e2f99288dcf22e6c03eaf 100644 +index e9e74f3701f7d9804386156b3ad4d236ffaed5db..7023755a23dd5436563e8884ab1249824ca7c609 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2271,6 +2271,7 @@ public class PurpurWorldConfig { +@@ -2269,6 +2269,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index d91e9e848cc582b544ef0957b3f02f20a8deaf09..f3096a1c7663f8cc614e2f99288dcf22 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2286,6 +2287,7 @@ public class PurpurWorldConfig { +@@ -2284,6 +2285,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0283-place-end-crystal-on-any-block.patch b/patches/server/0283-place-end-crystal-on-any-block.patch index 4c168a7c7..34c25608f 100644 --- a/patches/server/0283-place-end-crystal-on-any-block.patch +++ b/patches/server/0283-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..8fb564f43e2f1194d2ad68d35c4df6b9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f3096a1c7663f8cc614e2f99288dcf22e6c03eaf..5143da56ec64eaa44f3d88387455762d62740508 100644 +index 7023755a23dd5436563e8884ab1249824ca7c609..b1c5db356bb352f7f2dfa5b37c1f3bc617d35827 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -961,6 +961,7 @@ public class PurpurWorldConfig { +@@ -959,6 +959,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index f3096a1c7663f8cc614e2f99288dcf22e6c03eaf..5143da56ec64eaa44f3d88387455762d private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -989,6 +990,7 @@ public class PurpurWorldConfig { +@@ -987,6 +988,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0286-Configurable-villager-search-radius.patch b/patches/server/0286-Configurable-villager-search-radius.patch index 73464b5e1..a36d6d8dc 100644 --- a/patches/server/0286-Configurable-villager-search-radius.patch +++ b/patches/server/0286-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..222c87e80cb089867ce9a7d2dceebe21 .collect(Collectors.toSet()); Path path = AcquirePoi.findPathToPois(entity, set); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 762c75c68ab51e7cb09ffdeceeb24f79c508d5b7..6836cb01846f6a95c8d53ba5fcf98151b7f51e73 100644 +index 3548ad6bb4e53a0fd1bfcd1ef616d0e638048d93..3f2ee361427c8bd7c15b58a5803efe2d2cfb7394 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2901,6 +2901,8 @@ public class PurpurWorldConfig { +@@ -2899,6 +2899,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 762c75c68ab51e7cb09ffdeceeb24f79c508d5b7..6836cb01846f6a95c8d53ba5fcf98151 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2937,6 +2939,8 @@ public class PurpurWorldConfig { +@@ -2935,6 +2937,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch index 660aa856e..376115cfe 100644 --- a/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,10 +18,10 @@ index 714a37974e3256913c15193f2bd292fe45072c7f..0c494a8c71e316307af2c0e256ccfd23 this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6836cb01846f6a95c8d53ba5fcf98151b7f51e73..0c60dfaee719d2099d88ddde4904ba9c231bcff9 100644 +index 3f2ee361427c8bd7c15b58a5803efe2d2cfb7394..618f7a1e659748c8de1deb27e82dbe6ce8f83812 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2417,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2415,6 +2415,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 6836cb01846f6a95c8d53ba5fcf98151b7f51e73..0c60dfaee719d2099d88ddde4904ba9c private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2447,6 +2448,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2446,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);