From ffeb49da1ed5202349756af7436e96fd48eb4ff9 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 6 Dec 2024 06:05:14 -0800 Subject: [PATCH] ignore `item_model` component for don't run with scissors feature alongside `custom_model_data` component by default, the "don't run with scissors" feature will not activate for shears that have an `item_model` component or `custom_model_data` component. adds a new world config option at `gameplay-mechanics.item.shears.damage-if-sprinting-item-model` that allows specifying a custom item model ResourceLocation (`purpurmc:scissors` by default) for use with this feature. --- .../server/0128-Dont-run-with-scissors.patch | 25 +- patches/server/0129-One-Punch-Man.patch | 6 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 8 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 6 +- ...136-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0139-Sneak-to-bulk-process-composter.patch | 4 +- .../0140-Config-for-skipping-night.patch | 8 +- ...0141-Add-config-for-villager-trading.patch | 10 +- ...Break-individual-slabs-when-sneaking.patch | 4 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 4 +- ...ption-to-make-doors-require-redstone.patch | 4 +- .../0148-Configurable-sponge-absorption.patch | 4 +- .../0149-Projectile-offset-config.patch | 4 +- ...for-powered-rail-activation-distance.patch | 4 +- .../0151-Piglin-portal-spawn-modifier.patch | 6 +- ...3-Config-for-wither-explosion-radius.patch | 6 +- .../0155-Configurable-piston-push-limit.patch | 4 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0160-Iron-golem-calm-anger-options.patch | 6 +- patches/server/0161-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 | 8 +- .../0169-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 4 +- ...after-eating-food-fills-hunger-bar-c.patch | 6 +- ...75-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...7-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../server/0181-Tool-actionable-options.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- .../server/0186-Big-dripleaf-tilt-delay.patch | 4 +- .../0187-Player-ridable-in-water-option.patch | 6 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0189-Add-compass-command.patch | 8 +- ...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 +- ...0194-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 6 +- .../0197-Conduit-behavior-configuration.patch | 4 +- .../server/0198-Cauldron-fill-chances.patch | 4 +- .../0200-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 | 10 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 8 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...-Halloween-options-and-optimizations.patch | 4 +- ...-Campfire-option-for-lit-when-placed.patch | 4 +- ...xtinguish-fire-blocks-with-snowballs.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- .../server/0216-Signs-allow-color-codes.patch | 6 +- .../0218-Mobs-always-drop-experience.patch | 298 +++++++++--------- ...oe-to-replant-crops-and-nether-warts.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0222-Mob-head-visibility-percent.patch | 18 +- ...-Stop-bees-from-dying-after-stinging.patch | 8 +- ...Configurable-farmland-trample-height.patch | 6 +- ...Configurable-player-pickup-exp-delay.patch | 6 +- patches/server/0228-Allow-void-trading.patch | 6 +- .../0229-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0232-Lobotomize-stuck-villagers.patch | 6 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...awner-not-spawning-water-animals-cor.patch | 4 +- .../0236-Anvil-repair-damage-options.patch | 4 +- ...e-turtle-egg-trampling-with-feather-.patch | 4 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0241-Stonecutter-damage.patch | 4 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- ...0243-Add-config-for-snow-on-blue-ice.patch | 4 +- .../0244-Skeletons-eat-wither-roses.patch | 6 +- ...245-Enchantment-Table-Persists-Lapis.patch | 4 +- ...-for-sculk-shrieker-can_summon-state.patch | 4 +- .../0248-Config-to-not-let-coral-die.patch | 4 +- ...ng-option-to-ignore-creative-players.patch | 6 +- ...255-Add-skeleton-bow-accuracy-option.patch | 6 +- ...low-creeper-to-encircle-target-when-.patch | 6 +- ...leport-to-spawn-on-nether-ceiling-da.patch | 8 +- .../server/0271-End-Crystal-Cramming.patch | 6 +- ...beacon-effects-when-covered-by-tinte.patch | 4 +- ...able-sugarcane-cactus-and-netherwart.patch | 4 +- .../server/0280-Shears-can-defuse-TNT.patch | 4 +- ...-Option-Ocelot-Spawn-Under-Sea-Level.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 6 +- .../0285-place-end-crystal-on-any-block.patch | 6 +- ...-Configurable-villager-search-radius.patch | 6 +- ...n-to-make-ravagers-afraid-of-rabbits.patch | 6 +- 96 files changed, 429 insertions(+), 424 deletions(-) diff --git a/patches/server/0128-Dont-run-with-scissors.patch b/patches/server/0128-Dont-run-with-scissors.patch index b7b845ad8..f6bac31ea 100644 --- a/patches/server/0128-Dont-run-with-scissors.patch +++ b/patches/server/0128-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 b4cd58ae2c89cb3875cff2bcbe60511d94a926d4..10757591f1318222f79ff4e3df4c59bacfc41dee 100644 +index b4cd58ae2c89cb3875cff2bcbe60511d94a926d4..c8cf05ac72a7b30e8d2239c4e07c9cc52d5990e2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1721,6 +1721,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -14,8 +14,8 @@ index b4cd58ae2c89cb3875cff2bcbe60511d94a926d4..10757591f1318222f79ff4e3df4c59ba } + // Purpur Start -+ if (this.player.level().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.level().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.level().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissor(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissor(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { -+ this.player.hurt(this.player.damageSources().scissors(), (float) this.player.level().purpurConfig.scissorsRunningDamage); ++ if (this.player.serverLevel().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.serverLevel().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.serverLevel().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissors(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissors(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { ++ this.player.hurtServer(this.player.serverLevel(), this.player.damageSources().scissors(), (float) this.player.serverLevel().purpurConfig.scissorsRunningDamage); + if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors); + } + // Purpur End @@ -23,15 +23,18 @@ index b4cd58ae2c89cb3875cff2bcbe60511d94a926d4..10757591f1318222f79ff4e3df4c59ba this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1760,6 +1767,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1760,6 +1767,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } + // Purpur start -+ public boolean isScissor(ItemStack stack) { ++ public boolean isScissors(ItemStack stack) { + if (!stack.is(Items.SHEARS)) return false; -+ net.minecraft.world.item.component.CustomModelData customModelData = stack.get(net.minecraft.core.component.DataComponents.CUSTOM_MODEL_DATA); -+ return customModelData == null || customModelData.strings().contains("purpurmc:scissors"); ++ ++ ResourceLocation itemModelReference = stack.get(net.minecraft.core.component.DataComponents.ITEM_MODEL); ++ if (itemModelReference != null && itemModelReference.equals(this.player.serverLevel().purpurConfig.dontRunWithScissorsItemModelReference)) return true; ++ ++ return stack.getOrDefault(DataComponents.CUSTOM_MODEL_DATA, net.minecraft.world.item.component.CustomModelData.EMPTY).equals(net.minecraft.world.item.component.CustomModelData.EMPTY); + } + // Purpur end + @@ -149,25 +152,27 @@ index 64c84cb6cc647ca37a0664b83eb24e7202aeb1e2..28800c519ab8a6648d632a577ffbecae 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 066a6407ed76a3a2b77541f24d4c3429d3a1a189..a980b4d3e1e4df4e2e2d7ecedafe23abe434fccb 100644 +index 066a6407ed76a3a2b77541f24d4c3429d3a1a189..2fd0df56e94dca5ce91d0db29b56fa4bd5a2d1f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -191,6 +191,10 @@ public class PurpurWorldConfig { +@@ -191,6 +191,11 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); + public boolean dontRunWithScissors = false; ++ public ResourceLocation dontRunWithScissorsItemModelReference = ResourceLocation.parse("purpurmc:scissors"); + public boolean ignoreScissorsInWater = false; + public boolean ignoreScissorsInLava = false; + public double scissorsRunningDamage = 1D; private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -228,6 +232,10 @@ public class PurpurWorldConfig { +@@ -228,6 +233,11 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.getValue(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); + dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); ++ dontRunWithScissorsItemModelReference = ResourceLocation.parse(getString("gameplay-mechanics.item.shears.damage-if-sprinting-item-model", "purpurmc:scissors")); + 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/0129-One-Punch-Man.patch b/patches/server/0129-One-Punch-Man.patch index a4c576536..9a8d1a6b2 100644 --- a/patches/server/0129-One-Punch-Man.patch +++ b/patches/server/0129-One-Punch-Man.patch @@ -35,10 +35,10 @@ index fe183dcfb32e915af4c58f8b40c35e349e39d189..062f05f855ef50872d9b3074bf1951ea if (amount < 0.0F) { amount = 0.0F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a980b4d3e1e4df4e2e2d7ecedafe23abe434fccb..6a4f411c723a1b0a5a05af66807f330a878377e1 100644 +index 2fd0df56e94dca5ce91d0db29b56fa4bd5a2d1f2..e6c9b43eea433abb1a01d4bf591541b754beeebf 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 { +@@ -340,6 +340,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index a980b4d3e1e4df4e2e2d7ecedafe23abe434fccb..6a4f411c723a1b0a5a05af66807f330a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -354,6 +355,7 @@ public class PurpurWorldConfig { +@@ -356,6 +357,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/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 504784334..99e4ab796 100644 --- a/patches/server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -42,10 +42,10 @@ index eaee34054233c8f0296b65a09f1287ba515496f2..83bd9b1eff5b7f581c3f0af6f0f15bdf // 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 6a4f411c723a1b0a5a05af66807f330a878377e1..35b0f46278c2c536c1b8738aea1b900e6f7065cf 100644 +index e6c9b43eea433abb1a01d4bf591541b754beeebf..e196d391b4c1a02211f221ef10dda9df05c5ab5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -195,6 +195,10 @@ public class PurpurWorldConfig { +@@ -196,6 +196,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -56,7 +56,7 @@ index 6a4f411c723a1b0a5a05af66807f330a878377e1..35b0f46278c2c536c1b8738aea1b900e private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -236,6 +240,10 @@ public class PurpurWorldConfig { +@@ -238,6 +242,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/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch index 63fde78d2..b5655b0aa 100644 --- a/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ca88e602674e85b63b9622c0f94b588448480c12..af7d238fafa84428509563548d343005fe17d460 100644 +index 2bc946e62099ab3020d38a304a6b686ccf7a39af..79f4ea221b791e605a7865de111c64a86ddd11ef 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1789,7 +1789,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -18,10 +18,10 @@ index ca88e602674e85b63b9622c0f94b588448480c12..af7d238fafa84428509563548d343005 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35b0f46278c2c536c1b8738aea1b900e6f7065cf..59134101345d765c436d42efcd7fbb78b0deec48 100644 +index e196d391b4c1a02211f221ef10dda9df05c5ab5c..aa089685179635e74cc4033b5335c1e79fab08a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -347,6 +347,7 @@ public class PurpurWorldConfig { +@@ -349,6 +349,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 35b0f46278c2c536c1b8738aea1b900e6f7065cf..59134101345d765c436d42efcd7fbb78 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -364,6 +365,7 @@ public class PurpurWorldConfig { +@@ -366,6 +367,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/0133-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch index e626fa652..d3bd70a5f 100644 --- a/patches/server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 8348c8191e6b576ac71aa5c5b5454f7ba38f7730..a5a13d9e56306f6fc53736d0c4af81fa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59134101345d765c436d42efcd7fbb78b0deec48..2a247ce59d429b7ddac845295c95a045e9fe3352 100644 +index aa089685179635e74cc4033b5335c1e79fab08a2..fe8988fc29be469af3d33fb87f0c88ee35f0b779 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1030,6 +1030,8 @@ public class PurpurWorldConfig { +@@ -1032,6 +1032,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 59134101345d765c436d42efcd7fbb78b0deec48..2a247ce59d429b7ddac845295c95a045 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1039,12 +1041,18 @@ public class PurpurWorldConfig { +@@ -1041,12 +1043,18 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 3f01ee479..3dcf08ff5 100644 --- a/patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index a5a13d9e56306f6fc53736d0c4af81fa3d972a45..dec6be6b823b00642a0066726e3cad29 event.setCancelled(!shouldAttack); return event.callEvent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a247ce59d429b7ddac845295c95a045e9fe3352..9c9afd3befebe0fef8c84f4ed38231c11260d441 100644 +index fe8988fc29be469af3d33fb87f0c88ee35f0b779..c1f1c20bfa038e66e3fc2dab1a2d5ccc1bbbd3f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1032,6 +1032,7 @@ public class PurpurWorldConfig { +@@ -1034,6 +1034,7 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -31,7 +31,7 @@ index 2a247ce59d429b7ddac845295c95a045e9fe3352..9c9afd3befebe0fef8c84f4ed38231c1 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1053,6 +1054,7 @@ public class PurpurWorldConfig { +@@ -1055,6 +1056,7 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0136-Config-to-disable-Llama-caravans.patch b/patches/server/0136-Config-to-disable-Llama-caravans.patch index 8c67bf022..c0d3812bb 100644 --- a/patches/server/0136-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0136-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 0b81415233df20fe7143c87ee964a6a1f490476f..227638f369a6581f37e892fa457e2d67 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 a3ad9d2610ba27d4dbfa22cf8e3b9f8365310d40..ba7be016f1a76c95d04254cbbb6a0a51df23b0d0 100644 +index dd33aa2d92296090d6d75d294e91f2272b57e6fc..c62a22c8c7821041d890123c61cb04fb43955108 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1386,6 +1386,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1388,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index a3ad9d2610ba27d4dbfa22cf8e3b9f8365310d40..ba7be016f1a76c95d04254cbbb6a0a51 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1405,6 +1406,7 @@ public class PurpurWorldConfig { +@@ -1407,6 +1408,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/0137-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0137-Config-to-make-Creepers-explode-on-death.patch index bb61fbe65..8f41e966e 100644 --- a/patches/server/0137-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0137-Config-to-make-Creepers-explode-on-death.patch @@ -51,10 +51,10 @@ index 78da4454fb6eccb1d17d1f0cb19013883437a23e..0bce10c1cbf9f1788817a2834ec0efa0 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba7be016f1a76c95d04254cbbb6a0a51df23b0d0..6c4bd9a18ecb9c3fea1d46f674dc6c8f3b9aea73 100644 +index c62a22c8c7821041d890123c61cb04fb43955108..36262ccf9c5d308230ad112078d14a78f41243bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -875,6 +875,7 @@ public class PurpurWorldConfig { +@@ -877,6 +877,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -62,7 +62,7 @@ index ba7be016f1a76c95d04254cbbb6a0a51df23b0d0..6c4bd9a18ecb9c3fea1d46f674dc6c8f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -890,6 +891,7 @@ public class PurpurWorldConfig { +@@ -892,6 +893,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/0138-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0138-Configurable-ravager-griefable-blocks-list.patch index 236e605b1..4f1c9134c 100644 --- a/patches/server/0138-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0138-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 8cf8aeb34cba078bc7a554f03054d580d96fe908..c1707b502911d76d0c3a706e44bfdc3a } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c4bd9a18ecb9c3fea1d46f674dc6c8f3b9aea73..e040507a861ad283d95f42b6ef08b8b2f5b83418 100644 +index 36262ccf9c5d308230ad112078d14a78f41243bd..99a1c69938be124ad6fd1ae9a96024cc9fafd62c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1781,6 +1781,7 @@ public class PurpurWorldConfig { +@@ -1783,6 +1783,7 @@ public class PurpurWorldConfig { public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 6c4bd9a18ecb9c3fea1d46f674dc6c8f3b9aea73..e040507a861ad283d95f42b6ef08b8b2 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1794,6 +1795,23 @@ public class PurpurWorldConfig { +@@ -1796,6 +1797,23 @@ public class PurpurWorldConfig { ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0139-Sneak-to-bulk-process-composter.patch b/patches/server/0139-Sneak-to-bulk-process-composter.patch index 635874df1..09ec5a441 100644 --- a/patches/server/0139-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0139-Sneak-to-bulk-process-composter.patch @@ -87,10 +87,10 @@ index 9264ba58188a7a682eeb8eb449b89ff8e60f91d6..809a820dd8eec3e48dd3263335c62fbe 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 e040507a861ad283d95f42b6ef08b8b2f5b83418..7bb429cbb41e1a7ac7e138663dec988d29d62798 100644 +index 99a1c69938be124ad6fd1ae9a96024cc9fafd62c..09fa9a18dc1bb6a3df80cb2237dc0d55affc0453 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -439,6 +439,11 @@ public class PurpurWorldConfig { +@@ -441,6 +441,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0140-Config-for-skipping-night.patch b/patches/server/0140-Config-for-skipping-night.patch index f3ce3dcd8..c828ace19 100644 --- a/patches/server/0140-Config-for-skipping-night.patch +++ b/patches/server/0140-Config-for-skipping-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 34698bf825f4d857bca2b76fb368616731937786..bd4dbaee9a90909b9fd63d7c6fbac235a1d2264e 100644 +index 756740b1be54631b4d25343f9a5c826b4b6288cf..e3d2c0f569c76fc9af95f28f29e24be12ab1c476 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -749,7 +749,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -18,10 +18,10 @@ index 34698bf825f4d857bca2b76fb368616731937786..bd4dbaee9a90909b9fd63d7c6fbac235 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 7bb429cbb41e1a7ac7e138663dec988d29d62798..ca2b020e5c82749dbf93b1f91353b845a7d1442f 100644 +index 09fa9a18dc1bb6a3df80cb2237dc0d55affc0453..59156b6d2b8107a2031bc56387f002a6ef404022 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -349,6 +349,7 @@ public class PurpurWorldConfig { +@@ -351,6 +351,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 7bb429cbb41e1a7ac7e138663dec988d29d62798..ca2b020e5c82749dbf93b1f91353b845 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -367,6 +368,7 @@ public class PurpurWorldConfig { +@@ -369,6 +370,7 @@ public class PurpurWorldConfig { playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/server/0141-Add-config-for-villager-trading.patch b/patches/server/0141-Add-config-for-villager-trading.patch index 94e95e04a..69ce78d9a 100644 --- a/patches/server/0141-Add-config-for-villager-trading.patch +++ b/patches/server/0141-Add-config-for-villager-trading.patch @@ -32,10 +32,10 @@ index 116f47c7342dade1eaf0fabc62fb0ba2edd4c578..ba7856973d22c031910df4ec2a84d101 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ca2b020e5c82749dbf93b1f91353b845a7d1442f..e6096491e26d5ad7df5f1d626a14c771662d2898 100644 +index 59156b6d2b8107a2031bc56387f002a6ef404022..913c3e0c66d005380782af7e7a3358ed5ef45afc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2236,6 +2236,7 @@ public class PurpurWorldConfig { +@@ -2238,6 +2238,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index ca2b020e5c82749dbf93b1f91353b845a7d1442f..e6096491e26d5ad7df5f1d626a14c771 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2256,6 +2257,7 @@ public class PurpurWorldConfig { +@@ -2258,6 +2259,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 ca2b020e5c82749dbf93b1f91353b845a7d1442f..e6096491e26d5ad7df5f1d626a14c771 } public boolean vindicatorRidable = false; -@@ -2289,6 +2291,7 @@ public class PurpurWorldConfig { +@@ -2291,6 +2293,7 @@ public class PurpurWorldConfig { public double wanderingTraderTemptRange = 10.0D; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index ca2b020e5c82749dbf93b1f91353b845a7d1442f..e6096491e26d5ad7df5f1d626a14c771 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2304,6 +2307,7 @@ public class PurpurWorldConfig { +@@ -2306,6 +2309,7 @@ public class PurpurWorldConfig { wanderingTraderTemptRange = getDouble("mobs.wandering_trader.attributes.tempt_range", wanderingTraderTemptRange); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0143-Break-individual-slabs-when-sneaking.patch b/patches/server/0143-Break-individual-slabs-when-sneaking.patch index 45eeb6406..dcc00de18 100644 --- a/patches/server/0143-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0143-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index 9274fd639c22e305dda567b303f9b01068adb52c..4433e432ea0ee8d11045b87e68dac3ed + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f8348bedaf101fa9b9d50c3288aec0953cb56f6..cbca90e2008e0ed3736a1ad1d645ca1ee532fbba 100644 +index 693f84494c622697b4803f81ee81e21c59a7ebe6..60413ce72af16a81e97b875da85988fec8c88780 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -560,6 +560,11 @@ public class PurpurWorldConfig { +@@ -562,6 +562,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch index 5c4c2ef9a..580511620 100644 --- a/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index e2de074bbe7bab0e5a7aecc1fae4c5914a203dd4..c2061f575c731ecc6071384b007517c0 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cbca90e2008e0ed3736a1ad1d645ca1ee532fbba..c9cc7f51b2f86b4caf25d642159be418ddd20d61 100644 +index 60413ce72af16a81e97b875da85988fec8c88780..f83e25e7586aa5b84a6a87cdd32ca7ee005e01c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -525,6 +525,13 @@ public class PurpurWorldConfig { +@@ -527,6 +527,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0146-Option-to-make-doors-require-redstone.patch b/patches/server/0146-Option-to-make-doors-require-redstone.patch index abf00f478..2846cd887 100644 --- a/patches/server/0146-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0146-Option-to-make-doors-require-redstone.patch @@ -82,10 +82,10 @@ index 077b99caf0ec0ee098786d23194d88e1dc4481ce..daf865c20cc193a12db0d98e3c0472ee + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 908953ee49fa46c1cf11a815b6c48fd0e78d251b..ef4789925eda32a0f5461bf3f8e17db524c22fdb 100644 +index 0c3438c1914d6ec828c270fecfc7cf101fcfd211..88f2cf0023540a2fed5be6f7929e46dc7144673c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -464,6 +464,16 @@ public class PurpurWorldConfig { +@@ -466,6 +466,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0148-Configurable-sponge-absorption.patch b/patches/server/0148-Configurable-sponge-absorption.patch index d95a2cc7e..ad50b614f 100644 --- a/patches/server/0148-Configurable-sponge-absorption.patch +++ b/patches/server/0148-Configurable-sponge-absorption.patch @@ -21,10 +21,10 @@ index e9a77c1ae09af42d2d444ad6b5f6c8ac395044e1..9201d911cf155aab7735600073426a0d 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 ef4789925eda32a0f5461bf3f8e17db524c22fdb..3a334078a69c1b6456ba2c1ed7249bf66c922960 100644 +index 88f2cf0023540a2fed5be6f7929e46dc7144673c..1b1c6e20acef4e2dda93cbc89ae1d527d76e81ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -589,6 +589,13 @@ public class PurpurWorldConfig { +@@ -591,6 +591,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0149-Projectile-offset-config.patch b/patches/server/0149-Projectile-offset-config.patch index 1594b092f..2f1e5c60b 100644 --- a/patches/server/0149-Projectile-offset-config.patch +++ b/patches/server/0149-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index aff4f33be216f62d6c6e139dcd7fd82efdbd267c..810082126567eb02bec395065b95b3c3 com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); if (!event.callEvent() || !tridentDelayed.attemptSpawn()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a334078a69c1b6456ba2c1ed7249bf66c922960..33ed5f8c42dcdf378fa5140177dbd290397d1092 100644 +index 1b1c6e20acef4e2dda93cbc89ae1d527d76e81ce..c6d39361fe5f02de3119e2d2bfc603e096c03160 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -414,6 +414,23 @@ public class PurpurWorldConfig { +@@ -416,6 +416,23 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0150-Config-for-powered-rail-activation-distance.patch b/patches/server/0150-Config-for-powered-rail-activation-distance.patch index a95d8baa4..c5d21071c 100644 --- a/patches/server/0150-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0150-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index b763361a8f0f1b46093d5dd9afe8dba0cadf9c78..bd14c08defe8afc5ceca59d16a5b1dba } 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 33ed5f8c42dcdf378fa5140177dbd290397d1092..bec9316c9e3408f39ab00f096b640f4d4d893b28 100644 +index c6d39361fe5f02de3119e2d2bfc603e096c03160..e85eb5d3dbf35c89295302db5431a7b3cb2d3ba1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -575,6 +575,11 @@ public class PurpurWorldConfig { +@@ -577,6 +577,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0151-Piglin-portal-spawn-modifier.patch b/patches/server/0151-Piglin-portal-spawn-modifier.patch index d3c6a38d0..c7b19d358 100644 --- a/patches/server/0151-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0151-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 5169cba4c43d80ce3597c57bf7d40bd0148ec8a0..2d53c57c961fa8977e37931775863665 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bec9316c9e3408f39ab00f096b640f4d4d893b28..a41a3957696d47c5059e96308d17e11b68bb1723 100644 +index e85eb5d3dbf35c89295302db5431a7b3cb2d3ba1..be247fe9ca24407350044b020db613ce9a70ff26 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 { +@@ -1715,6 +1715,7 @@ public class PurpurWorldConfig { public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index bec9316c9e3408f39ab00f096b640f4d4d893b28..a41a3957696d47c5059e96308d17e11b private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1726,6 +1727,7 @@ public class PurpurWorldConfig { +@@ -1728,6 +1729,7 @@ public class PurpurWorldConfig { piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0153-Config-for-wither-explosion-radius.patch b/patches/server/0153-Config-for-wither-explosion-radius.patch index 656e080de..b384ab056 100644 --- a/patches/server/0153-Config-for-wither-explosion-radius.patch +++ b/patches/server/0153-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index e0f25b057b7b908a10038d9e9695a500aa883c75..e63b408594b5d2673148e39c1deafc85 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a41a3957696d47c5059e96308d17e11b68bb1723..204ab35e0ee032a5596b836141eea604b3eeb5ac 100644 +index be247fe9ca24407350044b020db613ce9a70ff26..176dc97524c6383a4c10ebd0918fd2ca209af3b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2414,6 +2414,7 @@ public class PurpurWorldConfig { +@@ -2416,6 +2416,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index a41a3957696d47c5059e96308d17e11b68bb1723..204ab35e0ee032a5596b836141eea604 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2435,6 +2436,7 @@ public class PurpurWorldConfig { +@@ -2437,6 +2438,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/0155-Configurable-piston-push-limit.patch b/patches/server/0155-Configurable-piston-push-limit.patch index c9026e93a..f7a1f8a9f 100644 --- a/patches/server/0155-Configurable-piston-push-limit.patch +++ b/patches/server/0155-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 204ab35e0ee032a5596b836141eea604b3eeb5ac..990fcb015588651fff7e720594a5d5341b3f9bba 100644 +index 176dc97524c6383a4c10ebd0918fd2ca209af3b0..19e77eadb5ece2da43eb82f7b7d196e1616348af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -570,6 +570,11 @@ public class PurpurWorldConfig { +@@ -572,6 +572,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch index 6412ab3ca..31e8db0e0 100644 --- a/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 0bce10c1cbf9f1788817a2834ec0efa04dd17752..d2de324f024d0a83790e2b86dc765b01 // 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 8e86a96cfdb9b8deec4ef0de0dafb2f2635c4f2c..7571c755c49ae3b3870631e5bbdaec4c544b02cc 100644 +index 1ae95a30b6e4cf69028dc61c398651bde526418f..851d0c96350abc8d8c490d92183540b013a98d12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -952,6 +952,7 @@ public class PurpurWorldConfig { +@@ -954,6 +954,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 8e86a96cfdb9b8deec4ef0de0dafb2f2635c4f2c..7571c755c49ae3b3870631e5bbdaec4c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -968,6 +969,7 @@ public class PurpurWorldConfig { +@@ -970,6 +971,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/0160-Iron-golem-calm-anger-options.patch b/patches/server/0160-Iron-golem-calm-anger-options.patch index b04fdf4cb..eaee52c71 100644 --- a/patches/server/0160-Iron-golem-calm-anger-options.patch +++ b/patches/server/0160-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 6396d31a14815fbe4f9f51dc610af317566bf522..db8420f6d1356d400699bd09e67e5805 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7571c755c49ae3b3870631e5bbdaec4c544b02cc..defe5b19e5595d5c18fcf1100a8b1470cbc5e670 100644 +index 851d0c96350abc8d8c490d92183540b013a98d12..5caaaa88d71f84562f8ab403062bf9ac4eb4dfb9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1440,6 +1440,8 @@ public class PurpurWorldConfig { +@@ -1442,6 +1442,8 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 7571c755c49ae3b3870631e5bbdaec4c544b02cc..defe5b19e5595d5c18fcf1100a8b1470 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1453,6 +1455,8 @@ public class PurpurWorldConfig { +@@ -1455,6 +1457,8 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0161-Breedable-parrots.patch b/patches/server/0161-Breedable-parrots.patch index 43b637153..d0de34e13 100644 --- a/patches/server/0161-Breedable-parrots.patch +++ b/patches/server/0161-Breedable-parrots.patch @@ -50,10 +50,10 @@ index f951905a9b985cfeb3a960898724651e395b42e8..4a6137b3984a6a7c4bc0472ada4b61f9 @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index defe5b19e5595d5c18fcf1100a8b1470cbc5e670..aaa0fe0a1cf368bc680d0a2b94fdb4e6ddee0503 100644 +index 5caaaa88d71f84562f8ab403062bf9ac4eb4dfb9..3d226e2cd3d805a7f53f845f5b873506b6ef274a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1618,6 +1618,7 @@ public class PurpurWorldConfig { +@@ -1620,6 +1620,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index defe5b19e5595d5c18fcf1100a8b1470cbc5e670..aaa0fe0a1cf368bc680d0a2b94fdb4e6 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1631,6 +1632,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1634,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0162-Configurable-powered-rail-boost-modifier.patch b/patches/server/0162-Configurable-powered-rail-boost-modifier.patch index 1c879557c..eb22fd558 100644 --- a/patches/server/0162-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0162-Configurable-powered-rail-boost-modifier.patch @@ -34,10 +34,10 @@ index 04a622f52353ebcc21f41c233f5a0fd67690cf4a..f10ce069ef427df16fd0ce0e60b85c80 Vec3 vec3d6 = this.getDeltaMovement(); double d20 = vec3d6.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aaa0fe0a1cf368bc680d0a2b94fdb4e6ddee0503..31ccb7c37318a36c41703ea57df0da32acec27a9 100644 +index 3d226e2cd3d805a7f53f845f5b873506b6ef274a..fb10c66da40ba5e4d0eb5b567d177bbcb2c0fd4c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -268,6 +268,7 @@ public class PurpurWorldConfig { +@@ -270,6 +270,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -45,7 +45,7 @@ index aaa0fe0a1cf368bc680d0a2b94fdb4e6ddee0503..31ccb7c37318a36c41703ea57df0da32 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -320,6 +321,7 @@ public class PurpurWorldConfig { +@@ -322,6 +323,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch index f96cfafeb..8f28971bb 100644 --- a/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 3dbb473655c4f115e28ce31fa647cd0cb7fbe3c6..1cb8a5391e31017c0e0d958c72338904 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 31ccb7c37318a36c41703ea57df0da32acec27a9..56ca29d4cdc5007966a6f79a0e8f4cb0390c3a30 100644 +index fb10c66da40ba5e4d0eb5b567d177bbcb2c0fd4c..b5712c7aa0de07736c7e6ae0686ed36ed3629235 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -365,6 +365,7 @@ public class PurpurWorldConfig { +@@ -367,6 +367,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index 31ccb7c37318a36c41703ea57df0da32acec27a9..56ca29d4cdc5007966a6f79a0e8f4cb0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -384,6 +385,7 @@ public class PurpurWorldConfig { +@@ -386,6 +387,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch index f7ad719dd..2829d6e62 100644 --- a/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index 30d15686b1a81de7ac28feb0c6188eb007c6f2fd..b6799db00e157892dd4339a01d2ca360 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 56ca29d4cdc5007966a6f79a0e8f4cb0390c3a30..db82c66338f2224ac887f3a47fe5e7fcb3ba0a57 100644 +index b5712c7aa0de07736c7e6ae0686ed36ed3629235..427e257d7e53d0dc5fbd4acbaa2c1d1f2a12fff8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -497,6 +497,11 @@ public class PurpurWorldConfig { +@@ -499,6 +499,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch index a642a3029..5a8edfaee 100644 --- a/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bee can work when raining or at night diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index e6e5954ca4366ad20b1d1413053739c767c45824..ea5559e6f536ab823f987ce57fc01d6dab26314d 100644 +index 82ddbc95370effc5aec4957486915843217c4efa..7804911f296991c15b40d75e51f27b4e30a53245 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -430,7 +430,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -18,10 +18,10 @@ index e6e5954ca4366ad20b1d1413053739c767c45824..ea5559e6f536ab823f987ce57fc01d6d public void setStayOutOfHiveCountdown(int cannotEnterHiveTicks) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db82c66338f2224ac887f3a47fe5e7fcb3ba0a57..1083c6cc35206e09b57ae993623bffa5eecfb1f6 100644 +index 427e257d7e53d0dc5fbd4acbaa2c1d1f2a12fff8..8eaff3384ed2fa6b4f557e82b6c0f89fa8ae7cb4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -748,6 +748,8 @@ public class PurpurWorldConfig { +@@ -750,6 +750,8 @@ public class PurpurWorldConfig { public double beeScale = 1.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index db82c66338f2224ac887f3a47fe5e7fcb3ba0a57..1083c6cc35206e09b57ae993623bffa5 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -762,6 +764,8 @@ public class PurpurWorldConfig { +@@ -764,6 +766,8 @@ public class PurpurWorldConfig { beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0169-Config-MobEffect-by-world.patch b/patches/server/0169-Config-MobEffect-by-world.patch index 13a4b70c2..04bd2172b 100644 --- a/patches/server/0169-Config-MobEffect-by-world.patch +++ b/patches/server/0169-Config-MobEffect-by-world.patch @@ -72,10 +72,10 @@ index 55132e6e064ddd15b26286eca335305ed57b2f9e..1e04947995009689315352b79989e7ce } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1083c6cc35206e09b57ae993623bffa5eecfb1f6..cf3480e98912271cc057d944c8e6931651e9da33 100644 +index 8eaff3384ed2fa6b4f557e82b6c0f89fa8ae7cb4..b279cd51d5661c304bff6a2638bf39df0e3cf952 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -324,6 +324,21 @@ public class PurpurWorldConfig { +@@ -326,6 +326,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0170-Beacon-Activation-Range-Configurable.patch b/patches/server/0170-Beacon-Activation-Range-Configurable.patch index 80500d956..6ae76d210 100644 --- a/patches/server/0170-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0170-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 0e0d178f2793ab014358f534c8dc53218b89f083..fbc6b0099af34b0247f6144a9cef020f } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cf3480e98912271cc057d944c8e6931651e9da33..f6f645b2d7449fdf3e6bdc618ad2fb38c05846ae 100644 +index b279cd51d5661c304bff6a2638bf39df0e3cf952..2b5543f070925421e3b924e373a9610fd9b24f2a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -464,6 +464,17 @@ public class PurpurWorldConfig { +@@ -466,6 +466,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index f0cbd1a6e..e3e8d869d 100644 --- a/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -80,10 +80,10 @@ index 648c2510beb162e73aed236a3169d0bbb8fc5050..3563a241c0b697dc0167cf7b1aa73fef } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6f645b2d7449fdf3e6bdc618ad2fb38c05846ae..8fb83dae4c835ffbdd77fb55c518e37124815743 100644 +index 2b5543f070925421e3b924e373a9610fd9b24f2a..849532c99cfad2870fd22be6e759e153e8fae10b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -381,6 +381,8 @@ public class PurpurWorldConfig { +@@ -383,6 +383,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -92,7 +92,7 @@ index f6f645b2d7449fdf3e6bdc618ad2fb38c05846ae..8fb83dae4c835ffbdd77fb55c518e371 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -401,6 +403,8 @@ public class PurpurWorldConfig { +@@ -403,6 +405,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0175-Shulker-spawn-from-bullet-options.patch b/patches/server/0175-Shulker-spawn-from-bullet-options.patch index eef654bc1..b5f702948 100644 --- a/patches/server/0175-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0175-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 648e6979aa72b9d1e1ea3b40d5a876e3c690b934..d9cd4f47e9990bdd85e30f68ca3b755a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8fb83dae4c835ffbdd77fb55c518e37124815743..54c9a86cea5978215159c59fc882bf003143eec2 100644 +index 849532c99cfad2870fd22be6e759e153e8fae10b..51609ddc3890b5a6a9106b6d2960697723651ec2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1991,6 +1991,11 @@ public class PurpurWorldConfig { +@@ -1993,6 +1993,11 @@ public class PurpurWorldConfig { public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 8fb83dae4c835ffbdd77fb55c518e37124815743..54c9a86cea5978215159c59fc882bf00 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2003,6 +2008,11 @@ public class PurpurWorldConfig { +@@ -2005,6 +2010,11 @@ public class PurpurWorldConfig { shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch index 020ab9847..f04c54177 100644 --- a/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 41fbe61268c0a16078b5f846ab12bde172872ff7..317e69eb4e3a4c312d5e856a0bff31a9 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 54c9a86cea5978215159c59fc882bf003143eec2..18cf2be9270623e6088e02aaeace6b9b4711fe0a 100644 +index 51609ddc3890b5a6a9106b6d2960697723651ec2..1e5bb7dc174bd43479534a9cab0b3bf05695ae51 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -213,6 +213,7 @@ public class PurpurWorldConfig { +@@ -214,6 +214,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 54c9a86cea5978215159c59fc882bf003143eec2..18cf2be9270623e6088e02aaeace6b9b private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -258,6 +259,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0177-Option-to-make-drowned-break-doors.patch b/patches/server/0177-Option-to-make-drowned-break-doors.patch index f1e3a1c5b..b6a224d0e 100644 --- a/patches/server/0177-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0177-Option-to-make-drowned-break-doors.patch @@ -17,10 +17,10 @@ index f33fa55bd8f894389121d38eb811ff739f31c811..44f6949166cdf78e2d197ab5a5affae6 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (target, world) -> this.okTarget(target))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 18cf2be9270623e6088e02aaeace6b9b4711fe0a..acbe91bba0b245fcd4940ea19795babaaf438c80 100644 +index 1e5bb7dc174bd43479534a9cab0b3bf05695ae51..7d4570b6cc775e73a64e0a7ec4fa15397636a0f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1081,6 +1081,7 @@ public class PurpurWorldConfig { +@@ -1083,6 +1083,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -28,7 +28,7 @@ index 18cf2be9270623e6088e02aaeace6b9b4711fe0a..acbe91bba0b245fcd4940ea19795baba private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1097,6 +1098,7 @@ public class PurpurWorldConfig { +@@ -1099,6 +1100,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/0178-Configurable-hunger-starvation-damage.patch b/patches/server/0178-Configurable-hunger-starvation-damage.patch index 5f112ab89..15c8cb9d8 100644 --- a/patches/server/0178-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0178-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 4f8ee2e5db3352306f3c035052866d95630f4aaf..b8b0b89b7f0a21ecff4ab6286f8a114e this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index acbe91bba0b245fcd4940ea19795babaaf438c80..51aee36c56a8fc36c3f827ea972ed10dc7130c17 100644 +index 7d4570b6cc775e73a64e0a7ec4fa15397636a0f3..d78c39b9db77ee6948fd87c664ab5fa5b61367ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2703,4 +2703,9 @@ public class PurpurWorldConfig { +@@ -2705,4 +2705,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/0181-Tool-actionable-options.patch b/patches/server/0181-Tool-actionable-options.patch index bbd9d41fd..38514934f 100644 --- a/patches/server/0181-Tool-actionable-options.patch +++ b/patches/server/0181-Tool-actionable-options.patch @@ -133,10 +133,10 @@ index 55c18f182166f4905d623d6f5e909eefd5ed2483..d10c4705cc9e7faabd4a5619e1da1072 afterAction = () -> { // Paper if (!level.isClientSide()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51aee36c56a8fc36c3f827ea972ed10dc7130c17..ff9bb8f21d6da7f8d3b0a726098227d95e6e3207 100644 +index d78c39b9db77ee6948fd87c664ab5fa5b61367ea..6cb8722c1ca2c182ed24d8e7770025560898c9e1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -463,6 +463,280 @@ public class PurpurWorldConfig { +@@ -465,6 +465,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch index 318f68b9b..dcb26a21e 100644 --- a/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,10 +18,10 @@ index ac5dc472337cd9613db5fc03f64763245129dfd9..f8928d5ac2f107a904ecc636e6bdeee7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff9bb8f21d6da7f8d3b0a726098227d95e6e3207..277c1be1ede46b50f865a2c1d1b38ab22cae9ef9 100644 +index 6cb8722c1ca2c182ed24d8e7770025560898c9e1..294153e02ea584ab5a8fc8209dc87660bddc27a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -214,6 +214,7 @@ public class PurpurWorldConfig { +@@ -215,6 +215,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -29,7 +29,7 @@ index ff9bb8f21d6da7f8d3b0a726098227d95e6e3207..277c1be1ede46b50f865a2c1d1b38ab2 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -260,6 +261,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0186-Big-dripleaf-tilt-delay.patch b/patches/server/0186-Big-dripleaf-tilt-delay.patch index 91dfbb94b..e20bfb0a8 100644 --- a/patches/server/0186-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0186-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 9e3f1441d62128535112621bf259c24f1a90595b..2535e6d71b690f8dfde41a7d9cb76b6f 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 277c1be1ede46b50f865a2c1d1b38ab22cae9ef9..133ffdbb1d042bca487b2fe74e66a6dad9165966 100644 +index 294153e02ea584ab5a8fc8209dc87660bddc27a7..be19290cc292e31b0dba6023168a913244ef54d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -778,6 +778,22 @@ public class PurpurWorldConfig { +@@ -780,6 +780,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0187-Player-ridable-in-water-option.patch b/patches/server/0187-Player-ridable-in-water-option.patch index c033863ef..cea1c55f9 100644 --- a/patches/server/0187-Player-ridable-in-water-option.patch +++ b/patches/server/0187-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 7fccb7672e41545d747de1425335df7061222e52..2b3ec55bdc652bb432f9747d6215992f 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 133ffdbb1d042bca487b2fe74e66a6dad9165966..5ae832b108c05e8940e2dc0c7d6094742915fb1e 100644 +index be19290cc292e31b0dba6023168a913244ef54d4..1205c517d4c73a2a1718a2e3cc87b348f3026af8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -387,6 +387,7 @@ public class PurpurWorldConfig { +@@ -389,6 +389,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index 133ffdbb1d042bca487b2fe74e66a6dad9165966..5ae832b108c05e8940e2dc0c7d609474 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -409,6 +410,7 @@ public class PurpurWorldConfig { +@@ -411,6 +412,7 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 1b9fc79d7..5515dacda 100644 --- a/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index dec6be6b823b00642a0066726e3cad298b7ed6a7..2681153860b37d49eb8b12ae08198e56 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 5ae832b108c05e8940e2dc0c7d6094742915fb1e..36d6d52a83f4b5b9273661d816424025f76f4596 100644 +index 1205c517d4c73a2a1718a2e3cc87b348f3026af8..b027f35fc78373d4314a3c7c4d30065f6a2af6ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1457,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 5ae832b108c05e8940e2dc0c7d6094742915fb1e..36d6d52a83f4b5b9273661d816424025 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1477,6 +1478,7 @@ public class PurpurWorldConfig { +@@ -1479,6 +1480,7 @@ public class PurpurWorldConfig { endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0189-Add-compass-command.patch b/patches/server/0189-Add-compass-command.patch index ecd291e86..8c5d4f0ba 100644 --- a/patches/server/0189-Add-compass-command.patch +++ b/patches/server/0189-Add-compass-command.patch @@ -17,7 +17,7 @@ index 068fa5baf5b031358a1ff71e7ac376448c0ec95c..eedb3707523b47ab79db326f6d7382cc if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1b691eafa658bbdfd87dd4a7692e0f6a96103ac2..ed1d75fdee29ac92d71f219af79eb7fc5ae99099 100644 +index 59433ad1b3e187233e69a3a08781f61b022f5707..a8994b1edcc82d15afbe11d12a6a8a0a00c76143 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -329,6 +329,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -89,10 +89,10 @@ index 8d41d9a8a2b5b7946c13b8c3ce961fea1a2bc728..e8dc97694f59cfce67e2fe061868a9f0 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 36d6d52a83f4b5b9273661d816424025f76f4596..74515ad36cae0e838224caee3853d2f3d8bc0b11 100644 +index b027f35fc78373d4314a3c7c4d30065f6a2af6ed..a7cecdaffb479a4eb866cd1d3128c4306641e20e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -215,6 +215,7 @@ public class PurpurWorldConfig { +@@ -216,6 +216,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 36d6d52a83f4b5b9273661d816424025f76f4596..74515ad36cae0e838224caee3853d2f3 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -262,6 +263,7 @@ public class PurpurWorldConfig { +@@ -264,6 +265,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0191-Add-Option-for-disable-observer-clocks.patch b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch index ce40ddde1..b7997cd7c 100644 --- a/patches/server/0191-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index 93ed9406c34804831b86d006dbd6087db9948f08..26cb9990b91991e0a2eadc2dcbbf229e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1522df03dab1e9e8e6d471f62067a15350b909d9..1dcd7031ba7f5e759b98533736218c5c0e28be23 100644 +index e4abac46f4bf2011a84acb07df424af10214588b..1f7a8f2b5196d5b15b047e6d67491a8335cbdbc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -362,6 +362,11 @@ public class PurpurWorldConfig { +@@ -364,6 +364,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch index fe616fa9b..4a3468688 100644 --- a/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 95315588a523439a53ac7af3db5fc23adbed6f01..811c5c4bc98401bc9314894eb5cb64bf return InteractionResult.SUCCESS_SERVER; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1dcd7031ba7f5e759b98533736218c5c0e28be23..2710709349c9d32b4b7e83bbb1cc9b1fde29310a 100644 +index 1f7a8f2b5196d5b15b047e6d67491a8335cbdbc3..4fa501f2d0e8f99b9b1aa112e8a4155c4a3ba652 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2961,6 +2961,8 @@ public class PurpurWorldConfig { +@@ -2963,6 +2963,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 1dcd7031ba7f5e759b98533736218c5c0e28be23..2710709349c9d32b4b7e83bbb1cc9b1f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2977,6 +2979,8 @@ public class PurpurWorldConfig { +@@ -2979,6 +2981,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/0193-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch index 9fafcefac..6e606cd03 100644 --- a/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index 9201d911cf155aab7735600073426a0d4213f38b..4540d3a31ed89ea3684feeffb85a3916 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return BlockPos.TraversalNodeStatus.SKIP; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2710709349c9d32b4b7e83bbb1cc9b1fde29310a..afad9ec6ea76ba66cad2f895ce04cc704e8d3235 100644 +index 4fa501f2d0e8f99b9b1aa112e8a4155c4a3ba652..c5964b249302a386bb878d1aa3f3ce2183e52361 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -964,9 +964,13 @@ public class PurpurWorldConfig { +@@ -966,9 +966,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch index c1c2053e8..1a91c8190 100644 --- a/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 54100d5d9ed31fe292750e668f3c2ba9257f5ef3..6a85049919f0cdc7051d1789a951d9e3 // worldserver.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = world.getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index afad9ec6ea76ba66cad2f895ce04cc704e8d3235..5ffcb25ea8c96c5087ece87a67802e25312cccc9 100644 +index c5964b249302a386bb878d1aa3f3ce2183e52361..810258f3c9b49e041db0349ecb8e54d589667e02 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2796,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2798,6 +2798,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index afad9ec6ea76ba66cad2f895ce04cc704e8d3235..5ffcb25ea8c96c5087ece87a67802e25 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2818,6 +2819,7 @@ public class PurpurWorldConfig { +@@ -2820,6 +2821,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/0195-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch index bcfa418ed..51ac62c5f 100644 --- a/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index c045b1cccf0047dbef8c04d5a28d31d53389054f..bbfd8f5d404d0add94f0d8ac89a29646 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ffcb25ea8c96c5087ece87a67802e25312cccc9..081a8a388b354210f3ea04e8a4b6428fc97a9d84 100644 +index 810258f3c9b49e041db0349ecb8e54d589667e02..72d2f15839d04b588e8f43d6a1f06680e7b3d9ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -805,6 +805,11 @@ public class PurpurWorldConfig { +@@ -807,6 +807,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch index ff850ba75..f80ba5e24 100644 --- a/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,10 +18,10 @@ index db7caaa2e77b9b98adac8add3040131c673c036b..262d9b2507d37edf0ed9c0821059e518 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 081a8a388b354210f3ea04e8a4b6428fc97a9d84..55d2c1729f639ef2bbb41e72ddd0945dd5662aaf 100644 +index 72d2f15839d04b588e8f43d6a1f06680e7b3d9ee..bb8f71030a2da27cc66820a032ffacf667c0d42b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -397,6 +397,7 @@ public class PurpurWorldConfig { +@@ -399,6 +399,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index 081a8a388b354210f3ea04e8a4b6428fc97a9d84..55d2c1729f639ef2bbb41e72ddd0945d 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 { +@@ -422,6 +423,7 @@ public class PurpurWorldConfig { playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0197-Conduit-behavior-configuration.patch b/patches/server/0197-Conduit-behavior-configuration.patch index 3cffc1546..b38fd0fbc 100644 --- a/patches/server/0197-Conduit-behavior-configuration.patch +++ b/patches/server/0197-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 55d2c1729f639ef2bbb41e72ddd0945dd5662aaf..d42047c0e5495a52d324eb6ec2f293bec4b6c472 100644 +index bb8f71030a2da27cc66820a032ffacf667c0d42b..69128f50386bc8a7f0b484493bc24cbc4544a9c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3030,4 +3030,27 @@ public class PurpurWorldConfig { +@@ -3032,4 +3032,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0198-Cauldron-fill-chances.patch b/patches/server/0198-Cauldron-fill-chances.patch index 3daf2f1ed..efe956723 100644 --- a/patches/server/0198-Cauldron-fill-chances.patch +++ b/patches/server/0198-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index 53cea36ec931de89e0060613acf87beb51dc16ec..fd5489993dca0f940da69e9163f78e5c if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d42047c0e5495a52d324eb6ec2f293bec4b6c472..7b9bf48039c457f95f23b4d0b80f095a65c55e22 100644 +index 69128f50386bc8a7f0b484493bc24cbc4544a9c1..e3130f456aa1d7e981018017cf3853bd027a41a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3053,4 +3053,15 @@ public class PurpurWorldConfig { +@@ -3055,4 +3055,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0200-Shulker-change-color-with-dye.patch b/patches/server/0200-Shulker-change-color-with-dye.patch index 52f0beba5..e22f5776f 100644 --- a/patches/server/0200-Shulker-change-color-with-dye.patch +++ b/patches/server/0200-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index 8464a8288f7ec7ae14e44b93607ebb0617790c46..837a251afd68b68c5f5f6ab940d62332 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 3cf70e3e79b581d97a0e76e88075600aaa2af7d4..cf0ca3f712e825898cda9ca0a8d6699195d6f26c 100644 +index 22ca0a30da56af326741fa000bedb37751a5b5fe..6eccd21195c648e8e59ac2e02616d004ce1f2dba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2318,6 +2318,7 @@ public class PurpurWorldConfig { +@@ -2320,6 +2320,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 3cf70e3e79b581d97a0e76e88075600aaa2af7d4..cf0ca3f712e825898cda9ca0a8d66991 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2335,6 +2336,7 @@ public class PurpurWorldConfig { +@@ -2337,6 +2338,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index ba36507d7..67ff6edc3 100644 --- a/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 9bafac9b2c7b487f745fb64354f4bbc6a7ded468..1c34691da51d7f7ba3d54e095a3b58b7 .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 16d2dbafb996932dd99edbe6eea37c7036f4b77e..ea1314eb2ac0f8c1dd681b85951bcdd2cead1bf6 100644 +index c2b7e0ebcaf1f95bf496e703760ed2fa29438ed5..8fc61bd5ac93ea63d7ed01c34ef0dc971bb73290 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -765,6 +765,11 @@ public class PurpurWorldConfig { +@@ -767,6 +767,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 16d2dbafb996932dd99edbe6eea37c7036f4b77e..ea1314eb2ac0f8c1dd681b85951bcdd2 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -902,6 +907,11 @@ public class PurpurWorldConfig { +@@ -904,6 +909,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch index 69bd0256b..9988db300 100644 --- a/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 7315e604a2f9cb068eb5bbca744e44eeabac09c9..88eb3774f688bcff383efa7f113bd0b1 + // 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 10757591f1318222f79ff4e3df4c59bacfc41dee..8d52446ddd452a62fa727469f2e191acba1b7d24 100644 +index c8cf05ac72a7b30e8d2239c4e07c9cc52d5990e2..be98cb1fa2ad79d41ebb6b6052b877253492174a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2153,6 +2153,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2156,6 +2156,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,10 +48,10 @@ index 10757591f1318222f79ff4e3df4c59bacfc41dee..8d52446ddd452a62fa727469f2e191ac 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 ea1314eb2ac0f8c1dd681b85951bcdd2cead1bf6..e351feee5916492edebb92f9af47c87e582b239d 100644 +index 8fc61bd5ac93ea63d7ed01c34ef0dc971bb73290..fcc093edad7e4e79cd51dbbf1be13a3d13035fe1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -404,6 +404,7 @@ public class PurpurWorldConfig { +@@ -406,6 +406,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index ea1314eb2ac0f8c1dd681b85951bcdd2cead1bf6..e351feee5916492edebb92f9af47c87e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -428,6 +429,7 @@ public class PurpurWorldConfig { +@@ -430,6 +431,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch index b12f651ba..c85bb7572 100644 --- a/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index bcc6435c177189aa59a3fbe67795ae5092685133..fad0b8157a9c30a0e9b35fe32b6a9f2e 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 e351feee5916492edebb92f9af47c87e582b239d..2fd6f601524f8fc748be73a38edf4df06c5e9459 100644 +index fcc093edad7e4e79cd51dbbf1be13a3d13035fe1..f15373de0dda4bfc318891beaaf995469a83ba06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1358,6 +1358,7 @@ public class PurpurWorldConfig { +@@ -1360,6 +1360,7 @@ public class PurpurWorldConfig { public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index e351feee5916492edebb92f9af47c87e582b239d..2fd6f601524f8fc748be73a38edf4df0 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1373,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1375,6 +1376,7 @@ public class PurpurWorldConfig { dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch index 2f132fc44..373894d73 100644 --- a/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 4ad3571403ee8044d17f53987bd47b6c43d42f0e..380bd41336d8d24bffd4e10885e46c95e5bb71fd 100644 +index 2b887a05cbf43a53869c740aa9df7bc75048de05..7ff6425276c7c9004caeee46f1138287ef5e5b64 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -37,6 +37,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; @@ -61,10 +61,10 @@ index 4ad3571403ee8044d17f53987bd47b6c43d42f0e..380bd41336d8d24bffd4e10885e46c95 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2fd6f601524f8fc748be73a38edf4df06c5e9459..26c7ccd547430f04dad6495ba7db5be5c0349a8f 100644 +index f15373de0dda4bfc318891beaaf995469a83ba06..de5d1c49f39cd1224bf52aae2f55e163feee96dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1290,7 +1290,14 @@ public class PurpurWorldConfig { +@@ -1292,7 +1292,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index 2fd6f601524f8fc748be73a38edf4df06c5e9459..26c7ccd547430f04dad6495ba7db5be5 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 { +@@ -1306,6 +1313,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/0208-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch index 73d505486..40a151d2d 100644 --- a/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 5a522d73d41f9aa3977807173d7e34c057a37c7a..373d00fce9e8bcb8d9a8d3e8a05987cf 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 26c7ccd547430f04dad6495ba7db5be5c0349a8f..efecfd2379d5e955d78c48fb9771197f52263fd6 100644 +index de5d1c49f39cd1224bf52aae2f55e163feee96dc..b8e8f2dd0405f91bdda94cdb9bdae57f07486c41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -784,6 +784,7 @@ public class PurpurWorldConfig { +@@ -786,6 +786,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 26c7ccd547430f04dad6495ba7db5be5c0349a8f..efecfd2379d5e955d78c48fb9771197f public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -794,6 +795,7 @@ public class PurpurWorldConfig { +@@ -796,6 +797,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0209-Halloween-options-and-optimizations.patch b/patches/server/0209-Halloween-options-and-optimizations.patch index a76e57bca..54db4aa12 100644 --- a/patches/server/0209-Halloween-options-and-optimizations.patch +++ b/patches/server/0209-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index b34dec421adc3ce56c0720a839a43ce42faeefaf..98e7b57a45ae3cae704c65ec6db5f715 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 efecfd2379d5e955d78c48fb9771197f52263fd6..8c2fa8ef4630f69998cb8e893a94a6470b035506 100644 +index b8e8f2dd0405f91bdda94cdb9bdae57f07486c41..a783b9cbe2f76f91fc85e514464e078e0dff23ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1721,6 +1721,13 @@ public class PurpurWorldConfig { +@@ -1723,6 +1723,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0212-Campfire-option-for-lit-when-placed.patch b/patches/server/0212-Campfire-option-for-lit-when-placed.patch index 1cdfa0ba6..7b348abbf 100644 --- a/patches/server/0212-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0212-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 1b94f26e78db062f80d806b82f714a815b4710ff..299d782c4e84d8548f2faddfb03712ba @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c2fa8ef4630f69998cb8e893a94a6470b035506..a5c9410c9ef3747004b09adac38ff54d63d0ec97 100644 +index a783b9cbe2f76f91fc85e514464e078e0dff23ba..ad639c2dfe6f74039387c23b214c2d85e0e8fcdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -827,6 +827,11 @@ public class PurpurWorldConfig { +@@ -829,6 +829,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0213-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0213-options-to-extinguish-fire-blocks-with-snowballs.patch index 6217bcf36..e5a9573ab 100644 --- a/patches/server/0213-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0213-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index f712963fcd80535eee2bd04ec55ae1abdadef2bd..6fdacf2f6934521a0dd4b25aea35a6a1 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 a5c9410c9ef3747004b09adac38ff54d63d0ec97..e3428e00f2b28bf2ec6aaed4de33905f25d0b68d 100644 +index ad639c2dfe6f74039387c23b214c2d85e0e8fcdd..23c0edd4a38f47335c492742c9a9accf5feb044c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -224,6 +224,9 @@ public class PurpurWorldConfig { +@@ -225,6 +225,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index a5c9410c9ef3747004b09adac38ff54d63d0ec97..e3428e00f2b28bf2ec6aaed4de33905f private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -272,6 +275,9 @@ public class PurpurWorldConfig { +@@ -274,6 +277,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0214-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0214-Add-option-to-disable-zombie-villagers-cure.patch index 2950f8a0b..2df9b073d 100644 --- a/patches/server/0214-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0214-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 811c5c4bc98401bc9314894eb5cb64bf31b03f63..624b19d415dab0c864b96edf4a706347 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 e3428e00f2b28bf2ec6aaed4de33905f25d0b68d..750e2e857c30b3bf9ae02bf038b26fd74246ce51 100644 +index 23c0edd4a38f47335c492742c9a9accf5feb044c..84d7034b5674fd855835bf97ac33fa3c8294f85b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3027,6 +3027,7 @@ public class PurpurWorldConfig { +@@ -3029,6 +3029,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index e3428e00f2b28bf2ec6aaed4de33905f25d0b68d..750e2e857c30b3bf9ae02bf038b26fd7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3045,6 +3046,7 @@ public class PurpurWorldConfig { +@@ -3047,6 +3048,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0216-Signs-allow-color-codes.patch b/patches/server/0216-Signs-allow-color-codes.patch index c24127b85..1ff3defec 100644 --- a/patches/server/0216-Signs-allow-color-codes.patch +++ b/patches/server/0216-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ed1d75fdee29ac92d71f219af79eb7fc5ae99099..7e785394de3db56e5d0fd8bea5edf5df9fa129fa 100644 +index a8994b1edcc82d15afbe11d12a6a8a0a00c76143..5d7e539d0baaddffe1bd4660b3552887dfacca5f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1959,6 +1959,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -84,10 +84,10 @@ index 7a1d9a718dc57b5f630ca8e5358120cebaeefb9c..b51b0b0f48b1da6187387d6ec025681e 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 70807e2540ac7f7d376df9b41b0b4e5fd3092d60..b9b47cd429c73c856d6ecd9d48fe0c46cee7330d 100644 +index a61c0a67996ae71e2cfde8e8bafaa49bd18cbf22..0f02d924d8b8fd939e268923d234d50c3e406ca9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1000,6 +1000,11 @@ public class PurpurWorldConfig { +@@ -1002,6 +1002,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0218-Mobs-always-drop-experience.patch b/patches/server/0218-Mobs-always-drop-experience.patch index 2c18bfc34..ab56b09da 100644 --- a/patches/server/0218-Mobs-always-drop-experience.patch +++ b/patches/server/0218-Mobs-always-drop-experience.patch @@ -37,7 +37,7 @@ index 7b773edc6fa661e75964a80dcb6820d1b5def54d..c8ffbbccbf20ce911a3d75fa860d5a14 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index ea5559e6f536ab823f987ce57fc01d6dab26314d..8e2b71d7fe766261cfa539e9f18fede83958408f 100644 +index 7804911f296991c15b40d75e51f27b4e30a53245..e2c6691ecca79df5828e6136568933b41ba5e1fa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -505,6 +505,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -101,7 +101,7 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 380bd41336d8d24bffd4e10885e46c95e5bb71fd..6b517deec01445de4205eedb1557995a92d3ae67 100644 +index 7ff6425276c7c9004caeee46f1138287ef5e5b64..51b4314cdba44146871aa8646ab6fa41051b5265 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -85,6 +85,11 @@ public class Cow extends Animal { @@ -341,7 +341,7 @@ index f445a96eb3991410103225d1b9289261399182ff..13eecc676e33623e776d32495969f111 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 34647054fe2fce16bc9b31d8af374079fd932c5c..da04ee901ad77637ee2c28a9a96f481affcce808 100644 +index 10a4d74dadf5b23bcb9e75d0e0aa221409483790..b59556e6429a25a0725b6f1102248ec669722c6b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -98,6 +98,11 @@ public class Squid extends AgeableWaterCreature { @@ -389,7 +389,7 @@ index 96a6f13fe6ea02412974fd4c8cf015467ef8e02c..c9e307452a097329c26893673055cfb7 this.entityData.set(Turtle.HOME_POS, pos); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index cbc28ca0d359f64bf583e9a1134bc18363e516ec..53c4a71d6611a7fab0920157d441e1c3cef69d07 100644 +index be949279dabeabee6b6b24910d82bee73a194a83..15b655fa1d483e8e4154b7cdbb5338f134ab1741 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -223,6 +223,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1632,7 +1632,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1942,6 +2001,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +2003,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1640,7 +1640,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean mooshroomRidable = false; -@@ -1951,6 +2011,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +2013,7 @@ public class PurpurWorldConfig { public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1648,7 +1648,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1964,6 +2025,7 @@ public class PurpurWorldConfig { +@@ -1966,6 +2027,7 @@ public class PurpurWorldConfig { mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1656,7 +1656,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean muleRidableInWater = false; -@@ -1975,6 +2037,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2039,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1664,7 +1664,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1992,6 +2055,7 @@ public class PurpurWorldConfig { +@@ -1994,6 +2057,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1672,7 +1672,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean ocelotRidable = false; -@@ -2001,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -2003,6 +2067,7 @@ public class PurpurWorldConfig { public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1680,7 +1680,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2014,6 +2079,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2081,7 @@ public class PurpurWorldConfig { ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1688,7 +1688,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean pandaRidable = false; -@@ -2023,6 +2089,7 @@ public class PurpurWorldConfig { +@@ -2025,6 +2091,7 @@ public class PurpurWorldConfig { public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1696,7 +1696,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -2036,6 +2103,7 @@ public class PurpurWorldConfig { +@@ -2038,6 +2105,7 @@ public class PurpurWorldConfig { pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1704,7 +1704,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean parrotRidable = false; -@@ -2046,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2048,6 +2116,7 @@ public class PurpurWorldConfig { public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1712,7 +1712,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2060,6 +2129,7 @@ public class PurpurWorldConfig { +@@ -2062,6 +2131,7 @@ public class PurpurWorldConfig { parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1720,7 +1720,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean phantomRidable = false; -@@ -2087,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2089,6 +2159,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1728,7 +1728,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2122,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2124,6 +2195,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1736,7 +1736,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean pigRidable = false; -@@ -2132,6 +2204,7 @@ public class PurpurWorldConfig { +@@ -2134,6 +2206,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1744,7 +1744,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2146,6 +2219,7 @@ public class PurpurWorldConfig { +@@ -2148,6 +2221,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1752,7 +1752,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean piglinRidable = false; -@@ -2156,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2232,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1760,7 +1760,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2170,6 +2245,7 @@ public class PurpurWorldConfig { +@@ -2172,6 +2247,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1768,7 +1768,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean piglinBruteRidable = false; -@@ -2178,6 +2254,7 @@ public class PurpurWorldConfig { +@@ -2180,6 +2256,7 @@ public class PurpurWorldConfig { public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2190,6 +2267,7 @@ public class PurpurWorldConfig { +@@ -2192,6 +2269,7 @@ public class PurpurWorldConfig { piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean pillagerRidable = false; -@@ -2199,6 +2277,7 @@ public class PurpurWorldConfig { +@@ -2201,6 +2279,7 @@ public class PurpurWorldConfig { public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2212,6 +2291,7 @@ public class PurpurWorldConfig { +@@ -2214,6 +2293,7 @@ public class PurpurWorldConfig { pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1800,7 +1800,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean polarBearRidable = false; -@@ -2223,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2225,6 +2305,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1808,7 +1808,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2239,6 +2320,7 @@ public class PurpurWorldConfig { +@@ -2241,6 +2322,7 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1816,7 +1816,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean pufferfishRidable = false; -@@ -2246,6 +2328,7 @@ public class PurpurWorldConfig { +@@ -2248,6 +2330,7 @@ public class PurpurWorldConfig { public double pufferfishMaxHealth = 3.0D; public double pufferfishScale = 1.0D; public boolean pufferfishTakeDamageFromWater = false; @@ -1824,7 +1824,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2257,6 +2340,7 @@ public class PurpurWorldConfig { +@@ -2259,6 +2342,7 @@ public class PurpurWorldConfig { pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1832,7 +1832,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean rabbitRidable = false; -@@ -2269,6 +2353,7 @@ public class PurpurWorldConfig { +@@ -2271,6 +2355,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1840,7 +1840,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2285,6 +2370,7 @@ public class PurpurWorldConfig { +@@ -2287,6 +2372,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1848,7 +1848,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean ravagerRidable = false; -@@ -2295,6 +2381,7 @@ public class PurpurWorldConfig { +@@ -2297,6 +2383,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1856,7 +1856,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2325,6 +2412,7 @@ public class PurpurWorldConfig { +@@ -2327,6 +2414,7 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1864,7 +1864,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean salmonRidable = false; -@@ -2332,6 +2420,7 @@ public class PurpurWorldConfig { +@@ -2334,6 +2422,7 @@ public class PurpurWorldConfig { public double salmonMaxHealth = 3.0D; public double salmonScale = 1.0D; public boolean salmonTakeDamageFromWater = false; @@ -1872,7 +1872,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2343,6 +2432,7 @@ public class PurpurWorldConfig { +@@ -2345,6 +2434,7 @@ public class PurpurWorldConfig { salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1880,7 +1880,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean sheepRidable = false; -@@ -2353,6 +2443,7 @@ public class PurpurWorldConfig { +@@ -2355,6 +2445,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1888,7 +1888,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2367,6 +2458,7 @@ public class PurpurWorldConfig { +@@ -2369,6 +2460,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1896,7 +1896,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean shulkerRidable = false; -@@ -2381,6 +2473,7 @@ public class PurpurWorldConfig { +@@ -2383,6 +2475,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1904,7 +1904,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2399,6 +2492,7 @@ public class PurpurWorldConfig { +@@ -2401,6 +2494,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1912,7 +1912,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean silverfishRidable = false; -@@ -2410,6 +2504,7 @@ public class PurpurWorldConfig { +@@ -2412,6 +2506,7 @@ public class PurpurWorldConfig { public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1920,7 +1920,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2425,6 +2520,7 @@ public class PurpurWorldConfig { +@@ -2427,6 +2522,7 @@ public class PurpurWorldConfig { silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1928,7 +1928,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean skeletonRidable = false; -@@ -2433,6 +2529,7 @@ public class PurpurWorldConfig { +@@ -2435,6 +2531,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1936,7 +1936,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2445,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2447,6 +2544,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1944,7 +1944,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean skeletonHorseRidable = false; -@@ -2457,6 +2555,7 @@ public class PurpurWorldConfig { +@@ -2459,6 +2557,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1952,7 +1952,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2474,6 +2573,7 @@ public class PurpurWorldConfig { +@@ -2476,6 +2575,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1960,7 +1960,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean slimeRidable = false; -@@ -2484,6 +2584,7 @@ public class PurpurWorldConfig { +@@ -2486,6 +2586,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1968,7 +1968,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2498,6 +2599,7 @@ public class PurpurWorldConfig { +@@ -2500,6 +2601,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1976,7 +1976,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean snowGolemRidable = false; -@@ -2513,6 +2615,7 @@ public class PurpurWorldConfig { +@@ -2515,6 +2617,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1984,7 +1984,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2532,6 +2635,7 @@ public class PurpurWorldConfig { +@@ -2534,6 +2637,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1992,7 +1992,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean snifferRidable = false; -@@ -2557,6 +2661,7 @@ public class PurpurWorldConfig { +@@ -2559,6 +2663,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -2000,7 +2000,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2571,6 +2676,7 @@ public class PurpurWorldConfig { +@@ -2573,6 +2678,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2008,7 +2008,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean spiderRidable = false; -@@ -2579,6 +2685,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2687,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; public boolean spiderTakeDamageFromWater = false; @@ -2016,7 +2016,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2591,6 +2698,7 @@ public class PurpurWorldConfig { +@@ -2593,6 +2700,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2024,7 +2024,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean strayRidable = false; -@@ -2599,6 +2707,7 @@ public class PurpurWorldConfig { +@@ -2601,6 +2709,7 @@ public class PurpurWorldConfig { public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; public boolean strayTakeDamageFromWater = false; @@ -2032,7 +2032,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2611,6 +2720,7 @@ public class PurpurWorldConfig { +@@ -2613,6 +2722,7 @@ public class PurpurWorldConfig { strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2040,7 +2040,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean striderRidable = false; -@@ -2621,6 +2731,7 @@ public class PurpurWorldConfig { +@@ -2623,6 +2733,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2048,7 +2048,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2635,6 +2746,7 @@ public class PurpurWorldConfig { +@@ -2637,6 +2748,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2056,7 +2056,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean tadpoleRidable = false; -@@ -2657,6 +2769,7 @@ public class PurpurWorldConfig { +@@ -2659,6 +2771,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2064,7 +2064,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2676,6 +2789,7 @@ public class PurpurWorldConfig { +@@ -2678,6 +2791,7 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean tropicalFishRidable = false; -@@ -2683,6 +2797,7 @@ public class PurpurWorldConfig { +@@ -2685,6 +2799,7 @@ public class PurpurWorldConfig { public double tropicalFishMaxHealth = 3.0D; public double tropicalFishScale = 1.0D; public boolean tropicalFishTakeDamageFromWater = false; @@ -2080,7 +2080,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2694,6 +2809,7 @@ public class PurpurWorldConfig { +@@ -2696,6 +2811,7 @@ public class PurpurWorldConfig { tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2088,7 +2088,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean turtleRidable = false; -@@ -2703,6 +2819,7 @@ public class PurpurWorldConfig { +@@ -2705,6 +2821,7 @@ public class PurpurWorldConfig { public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2096,7 +2096,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2716,6 +2833,7 @@ public class PurpurWorldConfig { +@@ -2718,6 +2835,7 @@ public class PurpurWorldConfig { turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2104,7 +2104,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean vexRidable = false; -@@ -2725,6 +2843,7 @@ public class PurpurWorldConfig { +@@ -2727,6 +2845,7 @@ public class PurpurWorldConfig { public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; public boolean vexTakeDamageFromWater = false; @@ -2112,7 +2112,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2738,6 +2857,7 @@ public class PurpurWorldConfig { +@@ -2740,6 +2859,7 @@ public class PurpurWorldConfig { vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2120,7 +2120,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean villagerRidable = false; -@@ -2755,6 +2875,7 @@ public class PurpurWorldConfig { +@@ -2757,6 +2877,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2128,7 +2128,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2776,6 +2897,7 @@ public class PurpurWorldConfig { +@@ -2778,6 +2899,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2136,7 +2136,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean vindicatorRidable = false; -@@ -2785,6 +2907,7 @@ public class PurpurWorldConfig { +@@ -2787,6 +2909,7 @@ public class PurpurWorldConfig { public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2144,7 +2144,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2798,6 +2921,7 @@ public class PurpurWorldConfig { +@@ -2800,6 +2923,7 @@ public class PurpurWorldConfig { vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2152,7 +2152,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean wanderingTraderRidable = false; -@@ -2810,6 +2934,7 @@ public class PurpurWorldConfig { +@@ -2812,6 +2936,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2160,7 +2160,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2826,6 +2951,7 @@ public class PurpurWorldConfig { +@@ -2828,6 +2953,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2168,7 +2168,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean wardenRidable = false; -@@ -2843,6 +2969,7 @@ public class PurpurWorldConfig { +@@ -2845,6 +2971,7 @@ public class PurpurWorldConfig { public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; public boolean witchTakeDamageFromWater = false; @@ -2176,7 +2176,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2855,6 +2982,7 @@ public class PurpurWorldConfig { +@@ -2857,6 +2984,7 @@ public class PurpurWorldConfig { witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2184,7 +2184,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean witherRidable = false; -@@ -2870,6 +2998,7 @@ public class PurpurWorldConfig { +@@ -2872,6 +3000,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2192,7 +2192,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2893,6 +3022,7 @@ public class PurpurWorldConfig { +@@ -2895,6 +3024,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2200,7 +2200,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean witherSkeletonRidable = false; -@@ -2901,6 +3031,7 @@ public class PurpurWorldConfig { +@@ -2903,6 +3033,7 @@ public class PurpurWorldConfig { public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2208,7 +2208,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2913,6 +3044,7 @@ public class PurpurWorldConfig { +@@ -2915,6 +3046,7 @@ public class PurpurWorldConfig { witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2216,7 +2216,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean wolfRidable = false; -@@ -2925,6 +3057,7 @@ public class PurpurWorldConfig { +@@ -2927,6 +3059,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2224,7 +2224,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2945,6 +3078,7 @@ public class PurpurWorldConfig { +@@ -2947,6 +3080,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2232,7 +2232,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean zoglinRidable = false; -@@ -2953,6 +3087,7 @@ public class PurpurWorldConfig { +@@ -2955,6 +3089,7 @@ public class PurpurWorldConfig { public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2240,7 +2240,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2965,6 +3100,7 @@ public class PurpurWorldConfig { +@@ -2967,6 +3102,7 @@ public class PurpurWorldConfig { zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2248,7 +2248,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean zombieRidable = false; -@@ -2979,6 +3115,7 @@ public class PurpurWorldConfig { +@@ -2981,6 +3117,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2256,7 +2256,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2997,6 +3134,7 @@ public class PurpurWorldConfig { +@@ -2999,6 +3136,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2264,7 +2264,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean zombieHorseRidable = false; -@@ -3010,6 +3148,7 @@ public class PurpurWorldConfig { +@@ -3012,6 +3150,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2272,7 +2272,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -3028,6 +3167,7 @@ public class PurpurWorldConfig { +@@ -3030,6 +3169,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2280,7 +2280,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean zombieVillagerRidable = false; -@@ -3043,6 +3183,7 @@ public class PurpurWorldConfig { +@@ -3045,6 +3185,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2288,7 +2288,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3062,6 +3203,7 @@ public class PurpurWorldConfig { +@@ -3064,6 +3205,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2296,7 +2296,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae } public boolean zombifiedPiglinRidable = false; -@@ -3075,6 +3217,7 @@ public class PurpurWorldConfig { +@@ -3077,6 +3219,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2304,7 +2304,7 @@ index b9b47cd429c73c856d6ecd9d48fe0c46cee7330d..744730583ec613adc8e31565780fbcae private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3092,6 +3235,7 @@ public class PurpurWorldConfig { +@@ -3094,6 +3237,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/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 537db8b26..659d942ef 100644 --- a/patches/server/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index 7bb4994d6474c8ea59c102009253552020691b8f..b571bca4375ca7caf9b75dbf84009cb0 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 744730583ec613adc8e31565780fbcae72a9b69c..931e2a3d04e2ec43b5389144c675914cb595b04d 100644 +index d6f3f21751613038dae7db5ada4aa89444a82546..ef835aa6568bad1a20cc7ebb8775a538234b7915 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -507,6 +507,8 @@ public class PurpurWorldConfig { +@@ -509,6 +509,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 744730583ec613adc8e31565780fbcae72a9b69c..931e2a3d04e2ec43b5389144c675914c private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -774,6 +776,8 @@ public class PurpurWorldConfig { +@@ -776,6 +778,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch index 2f552ce6f..336041369 100644 --- a/patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index a265c5bf1a4d6f3c84cad20f9b3c285dcebd0372..72c89f14977844e1460e9a914f39e896 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 931e2a3d04e2ec43b5389144c675914cb595b04d..0e3c1b37d386a7115cdfa027a5afb235ec4d363f 100644 +index ef835aa6568bad1a20cc7ebb8775a538234b7915..957e6d3570a4ad7472afb5dc83da70f4c88ba541 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1034,11 +1034,13 @@ public class PurpurWorldConfig { +@@ -1036,11 +1036,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0222-Mob-head-visibility-percent.patch b/patches/server/0222-Mob-head-visibility-percent.patch index 1d275cdec..88eec79cf 100644 --- a/patches/server/0222-Mob-head-visibility-percent.patch +++ b/patches/server/0222-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 0af3e463971697626f847cb96f8a431857c1261e..8c2c14769ae32c9a92bc043f9e753abf // 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 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661762552ff 100644 +index 957e6d3570a4ad7472afb5dc83da70f4c88ba541..db707841e9d7f2840ff00c2e32933634045315df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1392,6 +1392,7 @@ public class PurpurWorldConfig { +@@ -1394,6 +1394,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1410,6 +1411,7 @@ public class PurpurWorldConfig { +@@ -1412,6 +1413,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 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 } public boolean dolphinRidable = false; -@@ -2237,6 +2239,7 @@ public class PurpurWorldConfig { +@@ -2239,6 +2241,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2252,6 +2255,7 @@ public class PurpurWorldConfig { +@@ -2254,6 +2257,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 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 } public boolean piglinBruteRidable = false; -@@ -2536,6 +2540,7 @@ public class PurpurWorldConfig { +@@ -2538,6 +2542,7 @@ public class PurpurWorldConfig { public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2549,6 +2554,7 @@ public class PurpurWorldConfig { +@@ -2551,6 +2556,7 @@ public class PurpurWorldConfig { skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 } public boolean skeletonHorseRidable = false; -@@ -3122,6 +3128,7 @@ public class PurpurWorldConfig { +@@ -3124,6 +3130,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3141,6 +3148,7 @@ public class PurpurWorldConfig { +@@ -3143,6 +3150,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/0224-Stop-bees-from-dying-after-stinging.patch b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch index f6273e5e6..edd44e9dc 100644 --- a/patches/server/0224-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stop bees from dying after stinging diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 8e2b71d7fe766261cfa539e9f18fede83958408f..5ca5f128e5614146e76935e6d674e0699c65dfdb 100644 +index e2c6691ecca79df5828e6136568933b41ba5e1fa..c533e8c98411ea857df56a98581e903a871b98e2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -465,6 +465,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -17,10 +17,10 @@ index 8e2b71d7fe766261cfa539e9f18fede83958408f..5ca5f128e5614146e76935e6d674e069 ++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 b49d8ef5fe4a3b4bd99124cca2e5e661762552ff..01306ed51e4ca205bc58c171e6df5594c96aa22e 100644 +index db707841e9d7f2840ff00c2e32933634045315df..ecef27cf83b1c77d33ffd1cb96e0d72f91427b75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1153,6 +1153,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1155,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index b49d8ef5fe4a3b4bd99124cca2e5e661762552ff..01306ed51e4ca205bc58c171e6df5594 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1170,6 +1171,7 @@ public class PurpurWorldConfig { +@@ -1172,6 +1173,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/0226-Configurable-farmland-trample-height.patch b/patches/server/0226-Configurable-farmland-trample-height.patch index c2303555c..ac7ecc34c 100644 --- a/patches/server/0226-Configurable-farmland-trample-height.patch +++ b/patches/server/0226-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index af135f8b70b0e2af470afce9053976c3a1e03477..eaac00e2534aca4eab92c7b9f9248e04 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 01306ed51e4ca205bc58c171e6df5594c96aa22e..529e8a930ca9e01cfdfd1e7c15027d85e7f8076d 100644 +index ecef27cf83b1c77d33ffd1cb96e0d72f91427b75..2e2b84ea36dfd33fe7f78f14d07e9bce1211a98d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -927,6 +927,7 @@ public class PurpurWorldConfig { +@@ -929,6 +929,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 01306ed51e4ca205bc58c171e6df5594c96aa22e..529e8a930ca9e01cfdfd1e7c15027d85 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -934,6 +935,7 @@ public class PurpurWorldConfig { +@@ -936,6 +937,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/0227-Configurable-player-pickup-exp-delay.patch b/patches/server/0227-Configurable-player-pickup-exp-delay.patch index 1e85727bf..477a8063a 100644 --- a/patches/server/0227-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0227-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index 2b3ec55bdc652bb432f9747d6215992fd3d710a5..d19b1e127a1018a798eed181d8060a78 } 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 529e8a930ca9e01cfdfd1e7c15027d85e7f8076d..11a914b310517c356807c5dc4dad0cc3ff309a51 100644 +index 2e2b84ea36dfd33fe7f78f14d07e9bce1211a98d..9d21baf4ada7dc6e3e87682534aa51bc874be9fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -421,6 +421,7 @@ public class PurpurWorldConfig { +@@ -423,6 +423,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 529e8a930ca9e01cfdfd1e7c15027d85e7f8076d..11a914b310517c356807c5dc4dad0cc3 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -446,6 +447,7 @@ public class PurpurWorldConfig { +@@ -448,6 +449,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0228-Allow-void-trading.patch b/patches/server/0228-Allow-void-trading.patch index 01b07a6c3..9002b0684 100644 --- a/patches/server/0228-Allow-void-trading.patch +++ b/patches/server/0228-Allow-void-trading.patch @@ -18,10 +18,10 @@ index a580610c6e528cd3a54f88f6d1031db1e6c46028..d0653880e8f8852a27e16c5c964fb7b8 } // 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 11a914b310517c356807c5dc4dad0cc3ff309a51..8985a32587261accd84f3ff62d864b6d0c6da333 100644 +index 9d21baf4ada7dc6e3e87682534aa51bc874be9fb..79df9922bf8f0fc9a74b1ef97e59ff47e749cd7b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -422,6 +422,7 @@ public class PurpurWorldConfig { +@@ -424,6 +424,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 11a914b310517c356807c5dc4dad0cc3ff309a51..8985a32587261accd84f3ff62d864b6d private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -448,6 +449,7 @@ public class PurpurWorldConfig { +@@ -450,6 +451,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0229-Configurable-phantom-size.patch b/patches/server/0229-Configurable-phantom-size.patch index b50c05554..d1b70479b 100644 --- a/patches/server/0229-Configurable-phantom-size.patch +++ b/patches/server/0229-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 3104b76d98a2b3870535ea5e776fb8fb6e5d3680..23ca324c5379f9735232a9f74071117d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8985a32587261accd84f3ff62d864b6d0c6da333..af9e6ee31e0ad8436a0a43b6d914445ca7737d9d 100644 +index 79df9922bf8f0fc9a74b1ef97e59ff47e749cd7b..aa8ea52c7e9a4c60864328a30a86530e73385563 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2174,6 +2174,8 @@ public class PurpurWorldConfig { +@@ -2176,6 +2176,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 8985a32587261accd84f3ff62d864b6d0c6da333..af9e6ee31e0ad8436a0a43b6d914445c private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2210,6 +2212,13 @@ public class PurpurWorldConfig { +@@ -2212,6 +2214,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/0231-Configurable-minimum-demand-for-trades.patch b/patches/server/0231-Configurable-minimum-demand-for-trades.patch index ca15d2643..0f2e63375 100644 --- a/patches/server/0231-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0231-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 af9e6ee31e0ad8436a0a43b6d914445ca7737d9d..70258ae10d19f0aac01e3a550ec0d538f598d077 100644 +index aa8ea52c7e9a4c60864328a30a86530e73385563..73510c194f9c15611f5776f60cc9bee07aa816ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2905,6 +2905,7 @@ public class PurpurWorldConfig { +@@ -2907,6 +2907,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index af9e6ee31e0ad8436a0a43b6d914445ca7737d9d..70258ae10d19f0aac01e3a550ec0d538 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2927,6 +2928,7 @@ public class PurpurWorldConfig { +@@ -2929,6 +2930,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/0232-Lobotomize-stuck-villagers.patch b/patches/server/0232-Lobotomize-stuck-villagers.patch index 7fd4dfab2..c1f389de2 100644 --- a/patches/server/0232-Lobotomize-stuck-villagers.patch +++ b/patches/server/0232-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 8e895d6f84f7d84b219f2424909dd42e5f08dec4..53dcce0701d713c5dd097340a91b8be4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70258ae10d19f0aac01e3a550ec0d538f598d077..f23ac725c57006176564c97b30d348551dd9444f 100644 +index 73510c194f9c15611f5776f60cc9bee07aa816ab..5f3bbb6adabaefaf54d4a313c5e7c99eaf3f1391 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2906,6 +2906,9 @@ public class PurpurWorldConfig { +@@ -2908,6 +2908,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 70258ae10d19f0aac01e3a550ec0d538f598d077..f23ac725c57006176564c97b30d34855 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2929,6 +2932,18 @@ public class PurpurWorldConfig { +@@ -2931,6 +2934,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/0233-Option-for-villager-display-trade-item.patch b/patches/server/0233-Option-for-villager-display-trade-item.patch index 49e1c4a79..1fa73b8ea 100644 --- a/patches/server/0233-Option-for-villager-display-trade-item.patch +++ b/patches/server/0233-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 f23ac725c57006176564c97b30d348551dd9444f..fc357473f30258a54a2ee36dc0d63c2a52f2eaea 100644 +index 5f3bbb6adabaefaf54d4a313c5e7c99eaf3f1391..8edb79160b90f9caaa58233608621078ad31cb47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2909,6 +2909,7 @@ public class PurpurWorldConfig { +@@ -2911,6 +2911,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index f23ac725c57006176564c97b30d348551dd9444f..fc357473f30258a54a2ee36dc0d63c2a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2944,6 +2945,7 @@ public class PurpurWorldConfig { +@@ -2946,6 +2947,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/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index ac1de5cf8..e65314871 100644 --- a/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 8c4532a250f8679d729a35c17e9b5bd339264450..2b8336bd88641cfb29e94c8f01abfbdb } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc357473f30258a54a2ee36dc0d63c2a52f2eaea..f4584785ce8b16d3acc27c848eb79cc55bf08a18 100644 +index 8edb79160b90f9caaa58233608621078ad31cb47..5a9073ceeac3f41ed8ee9659dd7a33769f4e2f04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1021,8 +1021,10 @@ public class PurpurWorldConfig { +@@ -1023,8 +1023,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0236-Anvil-repair-damage-options.patch b/patches/server/0236-Anvil-repair-damage-options.patch index c6788bfe3..0002d6896 100644 --- a/patches/server/0236-Anvil-repair-damage-options.patch +++ b/patches/server/0236-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 50c907c962f936d2035bb7550750cdbd220b29c2..f9a2d2d4f798efa0d691996ec5ff7fe0 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 74373b7875906bd79595ca02b86add222d9645e0..f34de537ab3bd3727572313f7e8004703c73f641 100644 +index 1a37f10b480c9d63b912543afbc80913095aaa7b..3d545e57066270d1d39e9ca45c559a707966f815 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -788,9 +788,13 @@ public class PurpurWorldConfig { +@@ -790,9 +790,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 4827bbbd0..544695a87 100644 --- a/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 72c89f14977844e1460e9a914f39e896c9d498fd..f1dfb23160ff70e0da4dd2af2d83e879 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 f34de537ab3bd3727572313f7e8004703c73f641..a50e634a83234a3396a5e1471706f77dcfbb5d7c 100644 +index 3d545e57066270d1d39e9ca45c559a707966f815..f7ef17c90205e129d776c0faa9aaf6a2607a31ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1049,12 +1049,14 @@ public class PurpurWorldConfig { +@@ -1051,12 +1051,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch index 2706531fb..0e9a78929 100644 --- a/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index a191fb8563c01413dc4119e3adf81e23aacb824b..15ddc44bb266b4cdb1036c92dd60f137 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 a50e634a83234a3396a5e1471706f77dcfbb5d7c..011ac10466da8720800f2764a316a9cc9bb50fd9 100644 +index f7ef17c90205e129d776c0faa9aaf6a2607a31ba..26f90270a8b6f1eccf0ddf9babfc6d8026f1d509 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2920,6 +2920,8 @@ public class PurpurWorldConfig { +@@ -2922,6 +2922,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index a50e634a83234a3396a5e1471706f77dcfbb5d7c..011ac10466da8720800f2764a316a9cc private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2956,6 +2958,8 @@ public class PurpurWorldConfig { +@@ -2958,6 +2960,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/0241-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch index 912740377..69dd13a4d 100644 --- a/patches/server/0241-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -143,10 +143,10 @@ index 2090ecfebe8bc164239d198c1c50b134c7bc60c5..dba6a69891f50ba057187a8138ff227a 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 011ac10466da8720800f2764a316a9cc9bb50fd9..30b11ecbf75e5a4752d6d117f738828273b63b2f 100644 +index 26f90270a8b6f1eccf0ddf9babfc6d8026f1d509..22ae60309fa0b19ba3d2b58c919a6e262eb1903d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1044,6 +1044,11 @@ public class PurpurWorldConfig { +@@ -1046,6 +1046,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch index f6ee0cdc9..fd37174a9 100644 --- a/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 7ffdcf18bf4bd8b5325c76945b2d80ca3fe52958..dfa931316fde0b2e80068a0edd1427ff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30b11ecbf75e5a4752d6d117f738828273b63b2f..8893ce54385e8b6d9de6b87ebf203efde140fff4 100644 +index 22ae60309fa0b19ba3d2b58c919a6e262eb1903d..4eb94ba260c76984f78a96e0ceb721a857be6e75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -985,6 +985,11 @@ public class PurpurWorldConfig { +@@ -987,6 +987,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0243-Add-config-for-snow-on-blue-ice.patch b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch index 31a57db21..ade77f277 100644 --- a/patches/server/0243-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 9908a0b5b1fec5f9de518a733f7abbbff7e1a9f9..0ad444cf7f798f63e9140a42c5d5d8ca } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8893ce54385e8b6d9de6b87ebf203efde140fff4..4a6646711c1aa32a7123396126933d74d2cb5173 100644 +index 4eb94ba260c76984f78a96e0ceb721a857be6e75..eb84c63b029a39ac352d1b0cf5a264c0c14d2f8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -966,9 +966,11 @@ public class PurpurWorldConfig { +@@ -968,9 +968,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0244-Skeletons-eat-wither-roses.patch b/patches/server/0244-Skeletons-eat-wither-roses.patch index 869456815..bb1d0adae 100644 --- a/patches/server/0244-Skeletons-eat-wither-roses.patch +++ b/patches/server/0244-Skeletons-eat-wither-roses.patch @@ -91,10 +91,10 @@ index 61b5f27c1125ed1b183dd3b86b44a10b7098f91c..84bd180ce29d4560675b029a1fa01b03 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a6646711c1aa32a7123396126933d74d2cb5173..647852226244c862735c113e16fcf4410d39698d 100644 +index eb84c63b029a39ac352d1b0cf5a264c0c14d2f8e..c4d13f49beeaf2e0a5059a7e916d59502e6c36c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2580,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2582,6 +2582,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -102,7 +102,7 @@ index 4a6646711c1aa32a7123396126933d74d2cb5173..647852226244c862735c113e16fcf441 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2594,6 +2595,7 @@ public class PurpurWorldConfig { +@@ -2596,6 +2597,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/0245-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch index de57cfdb8..92ae74363 100644 --- a/patches/server/0245-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -136,10 +136,10 @@ index 39aac959775afeaeea211f21d498cb0ddf0a3fcb..6349a342c023f378af431a73a62fb017 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 647852226244c862735c113e16fcf4410d39698d..37dc3ba688e546f3feb64927134b6ef926929a5f 100644 +index c4d13f49beeaf2e0a5059a7e916d59502e6c36c1..716ec5b0afcd4e3818d5d749eb5d12d3917e0e86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1556,6 +1556,11 @@ public class PurpurWorldConfig { +@@ -1558,6 +1558,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch index 157741fb3..380631b15 100644 --- a/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 7990a6c225c27845ccada0df91cf5ed7e4315a88..db2b21d5842fafa48dbde25a461505d0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 37dc3ba688e546f3feb64927134b6ef926929a5f..1b55aacef555565308b9182a7664bed4d98ac18c 100644 +index 716ec5b0afcd4e3818d5d749eb5d12d3917e0e86..3ad962a28cd4471f2d7593f6053008871a78e50c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { +@@ -1025,6 +1025,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0248-Config-to-not-let-coral-die.patch b/patches/server/0248-Config-to-not-let-coral-die.patch index 0231549f0..70f003e34 100644 --- a/patches/server/0248-Config-to-not-let-coral-die.patch +++ b/patches/server/0248-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index a59b23f4062fa896836dec72cbd5097411774ad1..c526ea13a726624adaa654f09ff84c89 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 1b55aacef555565308b9182a7664bed4d98ac18c..e13d1e6d15cdfc58f4655ff288d9393e4c134a51 100644 +index 3ad962a28cd4471f2d7593f6053008871a78e50c..ffd131b4ff8d0c49c76829ec202c955509f9ae96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -872,6 +872,11 @@ public class PurpurWorldConfig { +@@ -874,6 +874,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch index e818a14f2..41bb440a0 100644 --- a/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index c1b76a1ebc1eea7ab70cf61d8175a31794dd122a..dc15c15951e4ca30b8341d24f813259a 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 47b29febec2af1f3a8ef7b9afc6a4982df08eb47..e94c9fb93191d880b7cbd1b293a8da5c1074aba4 100644 +index a0c49166a93ee18abc24dd40e95bdf4ece7e90b3..bff614ae120300622b803187bcfdf7e6f88fa7a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -378,6 +378,7 @@ public class PurpurWorldConfig { +@@ -380,6 +380,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index 47b29febec2af1f3a8ef7b9afc6a4982df08eb47..e94c9fb93191d880b7cbd1b293a8da5c 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); -@@ -386,6 +387,7 @@ public class PurpurWorldConfig { +@@ -388,6 +389,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0255-Add-skeleton-bow-accuracy-option.patch b/patches/server/0255-Add-skeleton-bow-accuracy-option.patch index 9a261e965..dcd7828ff 100644 --- a/patches/server/0255-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0255-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index f90f3e3ad7c941e3222a8119d9b01d571eef4c1b..0235488faee8078186fbb78038789da0 // CraftBukkit end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e94c9fb93191d880b7cbd1b293a8da5c1074aba4..b38c114e063c3f49cdf19f9c489ee92bcb7006ed 100644 +index bff614ae120300622b803187bcfdf7e6f88fa7a8..1fda4d542e3395612b2550aa32bfb3f882b797e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2600,6 +2600,8 @@ public class PurpurWorldConfig { +@@ -2602,6 +2602,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index e94c9fb93191d880b7cbd1b293a8da5c1074aba4..b38c114e063c3f49cdf19f9c489ee92b private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2615,6 +2617,18 @@ public class PurpurWorldConfig { +@@ -2617,6 +2619,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/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch index e9f26f096..c5baf038f 100644 --- a/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 446cdd50d4b5d5ed2e58f4bc4fbb13810399754d..342d5111bd3d4b434071f7499467a860a278ee08 100644 +index 2cc357dea94572362f7c67c051031352c4781e3e..6528d3c3e0d817e8e903ff99f8b71dc78d4f58c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1439,6 +1439,7 @@ public class PurpurWorldConfig { +@@ -1441,6 +1441,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 446cdd50d4b5d5ed2e58f4bc4fbb13810399754d..342d5111bd3d4b434071f7499467a860 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1458,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1460,6 +1461,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 6b287c490..7a3556bbb 100644 --- a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1832f7ef8a14fb60e004cb7b99a0cd0155332349..da7ffdf85907c92fe6c4c6a5ebe571ef4666fcb8 100644 +index d19c284986d7fdbb7a2685fcc4a4879db4269403..904805ada13164ec6989e2451583fcc8d290e51f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1004,6 +1004,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -17,10 +17,10 @@ index 1832f7ef8a14fb60e004cb7b99a0cd0155332349..da7ffdf85907c92fe6c4c6a5ebe571ef } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 342d5111bd3d4b434071f7499467a860a278ee08..89e80073eb911e72d0bac5b50119421a91cd3a16 100644 +index 6528d3c3e0d817e8e903ff99f8b71dc78d4f58c8..114d8082fe8d5a0cb8bbf48dbbf8d315e6a039d5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -418,6 +418,7 @@ public class PurpurWorldConfig { +@@ -420,6 +420,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 342d5111bd3d4b434071f7499467a860a278ee08..89e80073eb911e72d0bac5b50119421a public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -445,6 +446,7 @@ public class PurpurWorldConfig { +@@ -447,6 +448,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0271-End-Crystal-Cramming.patch b/patches/server/0271-End-Crystal-Cramming.patch index 9b1469291..eaa01301d 100644 --- a/patches/server/0271-End-Crystal-Cramming.patch +++ b/patches/server/0271-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 305c3350116f656c3d0e6134e4d8023eac50f3ad..b1db1e92de3a88a0f0e0fdb42b0bf973 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 89e80073eb911e72d0bac5b50119421a91cd3a16..991d13948d90039a4a344b51317b52f882b34e5f 100644 +index 114d8082fe8d5a0cb8bbf48dbbf8d315e6a039d5..6e634c6997c98a8242a6a8b3056c6bb2efed1c2f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -915,6 +915,7 @@ public class PurpurWorldConfig { +@@ -917,6 +917,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 89e80073eb911e72d0bac5b50119421a91cd3a16..991d13948d90039a4a344b51317b52f8 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -942,6 +943,7 @@ public class PurpurWorldConfig { +@@ -944,6 +945,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 65e8b4064..56f783a26 100644 --- a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index fbc6b0099af34b0247f6144a9cef020f9ccddeef..2d190b3a6378b8cbadfa65510df1ccfb 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 991d13948d90039a4a344b51317b52f882b34e5f..5fb1b4ca45faaf9d172adb8f3a7879322ae29117 100644 +index 6e634c6997c98a8242a6a8b3056c6bb2efed1c2f..2cb1a54fd54504ef5ac2ac284df0e7a3052edb4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -814,11 +814,13 @@ public class PurpurWorldConfig { +@@ -816,11 +816,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch index a5d7b1bd9..2083540a4 100644 --- a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index 547ea09ed84595286c97c128b3b96f6d387ae25f..d0f8a13f27132257ece6dadf736c2dc6 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 12ccac3893097d428c3c7f9cfdfc67e78dd9d691..4ef5aaa033f6ba5a4260345df12426954b8d6fbe 100644 +index e5a855b5dfc0e23a00c9e44c2c0ee5f701fe696e..f6c59ba4c36382c522c009e78a5c96d702a49fe4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -868,8 +868,20 @@ public class PurpurWorldConfig { +@@ -870,8 +870,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0280-Shears-can-defuse-TNT.patch b/patches/server/0280-Shears-can-defuse-TNT.patch index 1d2107b82..86295e75b 100644 --- a/patches/server/0280-Shears-can-defuse-TNT.patch +++ b/patches/server/0280-Shears-can-defuse-TNT.patch @@ -44,10 +44,10 @@ index 809f5e847e2f5bb594c130cebd2cb897ea768d82..6f1e21d6c104d71fe4fc3376ed2f2273 + // 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 4ef5aaa033f6ba5a4260345df12426954b8d6fbe..f8c49f69297fac41f65c3d37ba0e1020fa3f0736 100644 +index f6c59ba4c36382c522c009e78a5c96d702a49fe4..640a7380fe1d3091eed8ca6c95dc8ddb4faf8edc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3414,4 +3414,11 @@ public class PurpurWorldConfig { +@@ -3416,4 +3416,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch index 671fa61b4..73b11e793 100644 --- a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 14634de26c218a3d26afd3e7e6ca89c1a0595178..dee59cb4b87845c940ee089aa932aa69 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8c49f69297fac41f65c3d37ba0e1020fa3f0736..29c934fa57da481730d80601bf86a90d5b8def09 100644 +index 640a7380fe1d3091eed8ca6c95dc8ddb4faf8edc..ad1c62c92a0fa2ff49f14108c69370cb73e7f4e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2150,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2152,6 +2152,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index f8c49f69297fac41f65c3d37ba0e1020fa3f0736..29c934fa57da481730d80601bf86a90d private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2164,6 +2165,7 @@ public class PurpurWorldConfig { +@@ -2166,6 +2167,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 5a27bad09..d4bfc001e 100644 --- a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index e283b1296c1e831376bfe9491cbf02ed4b3fffe4..27a6de70530c2a1cbe2f77a7fb493038 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 29c934fa57da481730d80601bf86a90d5b8def09..a040f13bd39bd9e0b24ac9be4a95a093930977d1 100644 +index ad1c62c92a0fa2ff49f14108c69370cb73e7f4e6..35db58344e79bd3c83099626a425ea8d75a95ae5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2327,6 +2327,7 @@ public class PurpurWorldConfig { +@@ -2329,6 +2329,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index 29c934fa57da481730d80601bf86a90d5b8def09..a040f13bd39bd9e0b24ac9be4a95a093 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2343,6 +2344,7 @@ public class PurpurWorldConfig { +@@ -2345,6 +2346,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0285-place-end-crystal-on-any-block.patch b/patches/server/0285-place-end-crystal-on-any-block.patch index 75ce23242..d09aae1fb 100644 --- a/patches/server/0285-place-end-crystal-on-any-block.patch +++ b/patches/server/0285-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 2bee342e59e600426c8681a3ce641a12f22790be..e75930f26604b772a141a93c6f4b7782 } 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 a040f13bd39bd9e0b24ac9be4a95a093930977d1..c9ad3129146f5f29f1a1d0afbbc911d92bb4e8fb 100644 +index 35db58344e79bd3c83099626a425ea8d75a95ae5..b966d7cbdc8f62e0d5df93e84e2829b6c4818e7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -935,6 +935,7 @@ public class PurpurWorldConfig { +@@ -937,6 +937,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 a040f13bd39bd9e0b24ac9be4a95a093930977d1..c9ad3129146f5f29f1a1d0afbbc911d9 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -963,6 +964,7 @@ public class PurpurWorldConfig { +@@ -965,6 +966,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/0288-Configurable-villager-search-radius.patch b/patches/server/0288-Configurable-villager-search-radius.patch index 1e29bb581..07e4e3b48 100644 --- a/patches/server/0288-Configurable-villager-search-radius.patch +++ b/patches/server/0288-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b3e2d1ab8ad0b388a0bd3947feea43e602b8781..d396a9fee2326620a0222ff91dba63f187907525 100644 +index a1798851f0aad048a6242c9c57c4fd63687c9f48..07caef996ac0ff36afe14c098ccccffb6dc3e16a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3004,6 +3004,8 @@ public class PurpurWorldConfig { +@@ -3006,6 +3006,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 9b3e2d1ab8ad0b388a0bd3947feea43e602b8781..d396a9fee2326620a0222ff91dba63f1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -3042,6 +3044,8 @@ public class PurpurWorldConfig { +@@ -3044,6 +3046,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch index 66b1f9b83..0004bf74a 100644 --- a/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,10 +18,10 @@ index 5688f6ff0c1d9d1fbca548dcff8d8dfa5b42b8fd..17aaa3f376ce6183911739536206f9f7 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 d396a9fee2326620a0222ff91dba63f187907525..57ddb4e6a464567cc67e09ce06218cc25af4ddf9 100644 +index 07caef996ac0ff36afe14c098ccccffb6dc3e16a..9f01bef0abbc059629fbc38304d5d5df79589b70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2485,6 +2485,7 @@ public class PurpurWorldConfig { +@@ -2487,6 +2487,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index d396a9fee2326620a0222ff91dba63f187907525..57ddb4e6a464567cc67e09ce06218cc2 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2516,6 +2517,7 @@ public class PurpurWorldConfig { +@@ -2518,6 +2519,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);