From 930084af05a1795c86af153e5051fc7354650f59 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Mon, 17 Jan 2022 21:38:01 -0600 Subject: [PATCH] phantom size; slime/magmacube/phantom attack_damage --- .../0001-Pufferfish-Server-Changes.patch | 8 +- patches/server/0003-Purpur-config-files.patch | 11 +- patches/server/0006-Ridables.patch | 12 +- ...-Configurable-entity-base-attributes.patch | 136 ++++++--- patches/server/0011-AFK-API.patch | 6 +- .../0018-Player-invulnerabilities.patch | 6 +- ...20-Configurable-villager-brain-ticks.patch | 6 +- patches/server/0022-Silk-touch-spawners.patch | 4 +- ...772-Fix-Add-turtle-egg-block-options.patch | 4 +- patches/server/0027-Giants-AI-settings.patch | 6 +- .../0028-Zombie-horse-naturally-spawn.patch | 8 +- ...0029-Charged-creeper-naturally-spawn.patch | 6 +- ...bit-naturally-spawn-toast-and-killer.patch | 6 +- .../server/0032-Tulips-change-fox-type.patch | 6 +- .../server/0033-Breedable-Polar-Bears.patch | 6 +- .../server/0034-Chickens-can-retaliate.patch | 6 +- ...option-to-set-armorstand-step-height.patch | 4 +- .../server/0036-Cat-spawning-options.patch | 6 +- patches/server/0038-Cows-eat-mushrooms.patch | 6 +- .../server/0040-Pigs-give-saddle-back.patch | 6 +- ...41-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...42-Ender-dragon-always-drop-full-exp.patch | 6 +- .../0043-Signs-editable-on-right-click.patch | 4 +- ...moisten-from-water-directly-under-it.patch | 4 +- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...able-loot-drops-on-death-by-cramming.patch | 4 +- ...ption-to-toggle-milk-curing-bad-omen.patch | 4 +- ...low-loyalty-on-tridents-to-work-in-t.patch | 4 +- ...derman-and-creeper-griefing-controls.patch | 10 +- ...0055-Villagers-follow-emerald-blocks.patch | 10 +- .../0056-Allow-leashing-villagers.patch | 12 +- ...urable-search-radius-for-villagers-t.patch | 6 +- .../0058-Implement-infinite-liquids.patch | 6 +- ...59-Make-lava-flow-speed-configurable.patch | 4 +- ...Add-player-death-exp-control-options.patch | 6 +- ...urable-void-damage-height-and-damage.patch | 4 +- ...ispenser-curse-of-binding-protection.patch | 6 +- ...n-for-boats-to-eject-players-on-land.patch | 4 +- ...g-mends-most-damages-equipment-first.patch | 6 +- .../0067-Implement-elytra-settings.patch | 4 +- .../server/0068-Item-entity-immunities.patch | 4 +- .../0072-Configurable-jockey-options.patch | 20 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 30 +- .../0074-Add-phantom-spawning-options.patch | 6 +- ...0075-Implement-bed-explosion-options.patch | 4 +- ...ent-respawn-anchor-explosion-options.patch | 4 +- patches/server/0079-Entity-lifespan.patch | 6 +- ...leport-to-spawn-if-outside-world-bor.patch | 8 +- patches/server/0081-Squid-EAR-immunity.patch | 6 +- .../server/0082-Phantoms-burn-in-light.patch | 14 +- .../0083-Configurable-villager-breeding.patch | 6 +- .../0084-Redstone-deactivates-spawners.patch | 4 +- .../0085-Totems-work-in-inventory.patch | 6 +- ...6-Add-vindicator-johnny-spawn-chance.patch | 6 +- .../0088-Dispensers-place-anvils-option.patch | 4 +- patches/server/0089-Allow-anvil-colors.patch | 4 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 8 +- ...tities-can-use-portals-configuration.patch | 8 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 8 +- .../server/0098-Raid-cooldown-setting.patch | 6 +- ...e-config-options-per-projectile-type.patch | 4 +- ...sable-zombie-aggressiveness-towards-.patch | 8 +- patches/server/0102-Flying-squids-Oh-my.patch | 8 +- .../server/0103-Infinity-bow-settings.patch | 4 +- patches/server/0104-Stonecutter-damage.patch | 6 +- .../0105-Configurable-daylight-cycle.patch | 8 +- ...07-Furnace-uses-lava-from-underneath.patch | 4 +- ...re-add-farmland-mechanics-from-Alpha.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 98 +++--- ...mes-from-item-forms-of-entities-to-e.patch | 8 +- ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 4 +- ...llowing-Endermen-to-despawn-even-whi.patch | 6 +- ...115-Add-configurable-snowball-damage.patch | 4 +- ...16-Changeable-Mob-Left-Handed-Chance.patch | 6 +- .../0117-Add-boat-fall-damage-config.patch | 6 +- .../0118-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 6 +- ...24-Configurable-default-collar-color.patch | 10 +- .../server/0125-Phantom-flames-on-swoop.patch | 34 +-- ...s-to-open-even-with-a-solid-block-on.patch | 4 +- .../0128-Striders-give-saddle-back.patch | 6 +- ...therite-armor-grants-fire-resistance.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 70 ++--- ...allow-Note-Block-sounds-when-blocked.patch | 6 +- ...0134-Add-EntityTeleportHinderedEvent.patch | 6 +- .../0135-Farmland-trampling-changes.patch | 4 +- ...36-Movement-options-for-armor-stands.patch | 6 +- .../server/0137-Fix-stuck-in-portals.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 269 ++++++++-------- ...39-Config-to-always-tame-in-Creative.patch | 6 +- .../0140-End-crystal-explosion-options.patch | 4 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 10 +- .../server/0142-Dont-run-with-scissors.patch | 8 +- patches/server/0143-One-Punch-Man.patch | 6 +- ...0144-Add-config-for-snow-on-blue-ice.patch | 4 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 6 +- ...an-aggressiveness-towards-Endermites.patch | 8 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 8 +- patches/server/0150-Tick-fluids-config.patch | 6 +- ...151-Config-to-disable-Llama-caravans.patch | 6 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- ...0154-Sneak-to-bulk-process-composter.patch | 4 +- .../0155-Config-for-skipping-night.patch | 8 +- ...0156-Add-config-for-villager-trading.patch | 10 +- patches/server/0158-Drowning-Settings.patch | 8 +- ...Break-individual-slabs-when-sneaking.patch | 4 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 4 +- ...ig-to-show-Armor-Stand-arms-on-spawn.patch | 6 +- ...ption-to-make-doors-require-redstone.patch | 4 +- .../0164-Configurable-sponge-absorption.patch | 4 +- .../0165-Projectile-offset-config.patch | 4 +- ...for-powered-rail-activation-distance.patch | 4 +- .../0167-Piglin-portal-spawn-modifier.patch | 6 +- ...ble-damage-settings-for-magma-blocks.patch | 6 +- ...0-Config-for-wither-explosion-radius.patch | 6 +- ...ing-the-blocks-that-turn-into-dirt-p.patch | 4 +- .../0173-Configurable-piston-push-limit.patch | 4 +- .../0175-Configurable-mob-blindness.patch | 8 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- .../0178-Iron-golem-poppy-calms-anger.patch | 6 +- patches/server/0179-Breedable-parrots.patch | 6 +- ...igurable-powered-rail-boost-modifier.patch | 6 +- ...nge-multiplier-critical-damage-value.patch | 6 +- ...on-to-disable-dragon-egg-teleporting.patch | 4 +- ...85-ShulkerBox-allow-oversized-stacks.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 6 +- ...187-API-for-any-mob-to-burn-daylight.patch | 10 +- .../0188-Config-MobEffect-by-world.patch | 4 +- ...Beacon-Activation-Range-Configurable.patch | 6 +- .../0190-Add-toggle-for-sand-duping-fix.patch | 4 +- ...ggle-for-end-portal-safe-teleporting.patch | 6 +- ...ing-food-fills-hunger-bar-completely.patch | 6 +- ...97-Shulker-spawn-from-bullet-options.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 6 +- ...9-Option-to-make-drowned-break-doors.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- .../0202-Armor-click-equip-options.patch | 6 +- .../server/0205-Tool-actionable-options.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 6 +- ...0210-Silk-touchable-budding-amethyst.patch | 6 +- .../server/0211-Big-dripleaf-tilt-delay.patch | 4 +- .../0212-Player-ridable-in-water-option.patch | 6 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0214-Add-compass-command.patch | 8 +- ...ent-horses-from-standing-with-riders.patch | 6 +- .../0216-Toggle-for-kinetic-damage.patch | 4 +- ...d-Option-for-disable-observer-clocks.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...9-Option-for-sponges-to-work-on-lava.patch | 4 +- ...0220-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- ...emove-curse-of-binding-with-weakness.patch | 6 +- .../0223-Conduit-behavior-configuration.patch | 4 +- .../server/0224-Cauldron-fill-chances.patch | 4 +- ...to-allow-mobs-to-pathfind-over-rails.patch | 6 +- .../0226-Shulker-change-color-with-dye.patch | 6 +- ...ain-and-thunder-should-stop-on-sleep.patch | 8 +- ...a-blocks-to-grow-into-trees-naturall.patch | 6 +- ...t-right-click-to-use-exp-for-mending.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...or-beds-to-explode-on-villager-sleep.patch | 4 +- ...-Halloween-options-and-optimizations.patch | 4 +- ...-Campfire-option-for-lit-when-placed.patch | 4 +- ...xtinguish-fire-blocks-with-snowballs.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 6 +- .../server/0242-Signs-allow-color-codes.patch | 4 +- ...-twisting-vines-configurable-max-gro.patch | 10 +- .../0244-Mobs-always-drop-experience.patch | 287 +++++++++--------- ...t-spiders-from-climbing-world-border.patch | 8 +- ...oe-to-replant-crops-and-nether-warts.patch | 6 +- ...aring-jeb-produces-random-color-wool.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0251-Mob-head-visibility-percent.patch | 16 +- ...-Stop-bees-from-dying-after-stinging.patch | 6 +- ...Configurable-farmland-trample-height.patch | 6 +- ...Configurable-player-pickup-exp-delay.patch | 6 +- patches/server/0258-Allow-void-trading.patch | 8 +- .../0260-Configurable-phantom-size.patch | 50 +++ patches/server/0260-Fix-lightning.patch | 32 -- 188 files changed, 1086 insertions(+), 1001 deletions(-) create mode 100644 patches/server/0260-Configurable-phantom-size.patch delete mode 100644 patches/server/0260-Fix-lightning.patch diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index ab6bb5e3c..ff5a4c334 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -2355,7 +2355,7 @@ index 9a6c67b614944f841813ec2892381c3342bc365c..e80176708db486190dd527e3ade5fc69 this.wasOnGround = this.entity.isOnGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a2abb8aa1a257ccd2b5dbddc037fffc6eb600758..27791d82b3343f14ff99efd4aed2193ea276b852 100644 +index a2abb8aa1a257ccd2b5dbddc037fffc6eb600758..8cdacd7ed9a26e6757eeff89545fde21ddb80fd2 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -667,7 +667,20 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -2398,7 +2398,7 @@ index a2abb8aa1a257ccd2b5dbddc037fffc6eb600758..27791d82b3343f14ff99efd4aed2193e final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - if (!this.paperConfig.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder -+ if (!this.paperConfig.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0 && chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning ++ if (!this.paperConfig.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); @@ -3808,7 +3808,7 @@ index ed3518fe7c841d9e1a9c97626acaa3d765a6d76f..da00f75ccc9f8c2e2174d4450479202a @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 7567a8bf848c82b27383f084056cb43c41df6d0c..2b697f0d0b59b5af5aa59850d5e501cde9acf577 100644 +index 7567a8bf848c82b27383f084056cb43c41df6d0c..9e9cdabefce3767a2e482f7cc5eb69c635ea17a7 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -94,6 +94,18 @@ public class LevelChunk extends ChunkAccess { @@ -3820,7 +3820,7 @@ index 7567a8bf848c82b27383f084056cb43c41df6d0c..2b697f0d0b59b5af5aa59850d5e501cd + // shouldDoLightning compiles down to 29 bytes, which with the default of 35 byte inlining should guarantee an inline + public final boolean shouldDoLightning(java.util.Random random) { + if (this.lightningTick-- <= 0) { -+ this.lightningTick = random.nextInt(100000) << 1; ++ this.lightningTick = random.nextInt(this.level.spigotConfig.thunderChance) << 1; + return true; + } + return false; diff --git a/patches/server/0003-Purpur-config-files.patch b/patches/server/0003-Purpur-config-files.patch index 6d45f7376..f4ad47511 100644 --- a/patches/server/0003-Purpur-config-files.patch +++ b/patches/server/0003-Purpur-config-files.patch @@ -172,7 +172,7 @@ index 55bae3efbc630be6d40d415509de4c3e744a5004..9d649923e28f4839106b336fce41bd3f .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..0272581e93b573937ee4d449687217f7564887d7 +index 0000000000000000000000000000000000000000..806ed097578eb75b25a222b95ef7cc32a4293416 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,159 @@ @@ -239,8 +239,8 @@ index 0000000000000000000000000000000000000000..0272581e93b573937ee4d449687217f7 + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 24); -+ set("config-version", 24); ++ version = getInt("config-version", 25); ++ set("config-version", 25); + + readConfig(PurpurConfig.class, null); + } @@ -337,14 +337,15 @@ index 0000000000000000000000000000000000000000..0272581e93b573937ee4d449687217f7 +} diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..ad0c7304f8791b2dca92d9e0c5412354e174d5be +index 0000000000000000000000000000000000000000..0ce93836629522c2ff2a57226583009302271daf --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,90 @@ +@@ -0,0 +1,91 @@ +package org.purpurmc.purpur; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; ++import net.minecraft.util.Mth; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 7249a2e1c..91b827351 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -34,7 +34,7 @@ index 31950910c206a5ab21ef2c9bc7ea284bd3e45b54..54ce8f0b9219790f6317c3eb95b81cad this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 27791d82b3343f14ff99efd4aed2193ea276b852..07e602d4319095f7a805b930f6afe1b0251cc5b5 100644 +index 8cdacd7ed9a26e6757eeff89545fde21ddb80fd2..cd01b2f06b0dd34c3261d84beead96bba76cf825 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -211,6 +211,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1303,7 +1303,7 @@ index a781048b0c43e63e441e6afecec125d7f838c342..d3311df20c37517e7c4ae1b8fbee6add this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index f9be50049325a1139d67ccf590caeeceadb2fd23..ed8890d6a5431412248722182c697844f7792c6e 100644 +index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..906b0f0b7907f84f9a4344d8a06e5dcfc2c6d8a8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -107,6 +107,27 @@ public class Panda extends Animal { @@ -4252,7 +4252,7 @@ index 056e4c2f7f632dadc0015710c032a0b718d46ff9..54a545836f3c318e7f90d43aca7fea8a this.level.getProfiler().pop(); this.updateActivity(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index e72e9b748b3f3e34baddf01366c703efba50c67c..d6ae8468f5d507b8278fa887d1d1770db212da0c 100644 +index 35f0203d260c11b729c30e6241316fda4b70bfd7..ceb15697d28799064b3fab56b5f53b6249e81789 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -104,11 +104,25 @@ public class Zombie extends Monster { @@ -4653,7 +4653,7 @@ index 35cc150adf51f79e2fccef8b094c90554aafbee2..b6f2bae38781f16c46ad515f34d82907 event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fdfb20170c27711085aa0772866876035e0d98c2..5350ffab8477a2da4891132cf8b7a65cf776574b 100644 +index 806ed097578eb75b25a222b95ef7cc32a4293416..b6a1701f98d831b3c8794f63f33fad3aa40fac67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -156,4 +156,9 @@ public class PurpurConfig { @@ -4667,10 +4667,10 @@ index fdfb20170c27711085aa0772866876035e0d98c2..5350ffab8477a2da4891132cf8b7a65c + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ad0c7304f8791b2dca92d9e0c5412354e174d5be..b8103294d3963a9bfe7d4f4199be866158f580ec 100644 +index 0ce93836629522c2ff2a57226583009302271daf..aec3628645d75ae0b4bf7207a4c80af465561151 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -87,4 +87,532 @@ public class PurpurWorldConfig { +@@ -88,4 +88,532 @@ public class PurpurWorldConfig { final Map value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index bdbcf1ac3..a6772aa1e 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -238,7 +238,7 @@ index d3311df20c37517e7c4ae1b8fbee6add6d32332e..ccb18fea0e03d08405b0fff5e9df5025 public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index ed8890d6a5431412248722182c697844f7792c6e..1a4434432516f8b7f2bbbc64f9554c340530ce89 100644 +index 906b0f0b7907f84f9a4344d8a06e5dcfc2c6d8a8..45a92265ac626ae401342e6a21b0ba271ba5b371 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -126,6 +126,12 @@ public class Panda extends Animal { @@ -982,42 +982,74 @@ index 647796e6f3352582c49c780a860a617ce7b44ddd..4ed0fb155dfae60cee24dc0752fa525c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 95741b63d68bdf815212d718c3cc0fc689c0e4de..68abf045f0510abc45bdc2fd8c147f27c2fa784d 100644 +index 95741b63d68bdf815212d718c3cc0fc689c0e4de..cf69ac8710df2f01fed76389d53fb121a2319273 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -42,6 +42,16 @@ public class MagmaCube extends Slime { +@@ -42,6 +42,26 @@ public class MagmaCube extends Slime { public float getJumpPower() { return 0.42F * this.getBlockJumpFactor(); // from EntityLiving } + + @Override -+ public void initAttributes() { -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.generateMaxHealth()); ++ protected String getMaxHealthEquation() { ++ return level.purpurConfig.magmaCubeMaxHealth; + } + + @Override -+ protected String getMaxHealthEquation() { -+ return level.purpurConfig.magmaCubeMaxHealth; ++ protected String getAttackDamageEquation() { ++ return level.purpurConfig.magmaCubeAttackDamage; ++ } ++ ++ @Override ++ protected java.util.Map getMaxHealthCache() { ++ return level.purpurConfig.magmaCubeMaxHealthCache; ++ } ++ ++ @Override ++ protected java.util.Map getAttackDamageCache() { ++ return level.purpurConfig.magmaCubeAttackDamageCache; + } // Purpur end public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index e4401125da58e0a82a30f9b4a137f5804ae2a8dc..f4da51e75b3f8772f0d3de17ef4699845a08fdd1 100644 +index e4401125da58e0a82a30f9b4a137f5804ae2a8dc..59289140f51ea63e81ebebc97d5a54fc2b0e1914 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -111,6 +111,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -111,6 +111,21 @@ public class Phantom extends FlyingMob implements Enemy { level.addFreshEntity(flames); return true; } + -+ @Override -+ public void initAttributes() { -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.phantomMaxHealth); ++ private double getFromCache(java.util.function.Supplier equation, java.util.function.Supplier> cache, java.util.function.Supplier defaultValue) { ++ int size = getPhantomSize(); ++ Double value = cache.get().get(size); ++ if (value == null) { ++ try { ++ scriptEngine.eval("size = " + size); ++ value = (double) scriptEngine.eval(equation.get()); ++ } catch (Exception e) { ++ value = defaultValue.get(); ++ } ++ cache.get().put(size, value); ++ } ++ return value; + } // Purpur end @Override +@@ -145,7 +160,10 @@ public class Phantom extends FlyingMob implements Enemy { + + private void updatePhantomSizeInfo() { + this.refreshDimensions(); +- this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue((double) (6 + this.getPhantomSize())); ++ // Purpur start ++ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(getFromCache(() -> this.level.purpurConfig.phantomMaxHealth, () -> this.level.purpurConfig.phantomMaxHealthCache, () -> 20.0D)); ++ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(getFromCache(() -> this.level.purpurConfig.phantomAttackDamage, () -> this.level.purpurConfig.phantomAttackDamageCache, () -> (double) 6 + this.getPhantomSize())); ++ // Purpur end + } + + public int getPhantomSize() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java index 1457c0eda11000a0513e601ea60b6ca4a5b463b6..2c7155f2b3c29ff1f777ff6b6d0b19ef922614ae 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java @@ -1099,49 +1131,59 @@ index a8c6971cc7d004bdc61a2b49e4542a8af46e8539..9448bdd5026f35bba805dee19ceead5d @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 08935565ca3d1ee779abc491aa1e9eec13342bb5..3a3f5d6fb7ad5bb6082016c7415c25ab48405780 100644 +index 08935565ca3d1ee779abc491aa1e9eec13342bb5..296165ff7b1ac5c6690fb3cc195a3ae3e6115611 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -101,6 +101,30 @@ public class Slime extends Mob implements Enemy { +@@ -101,6 +101,37 @@ public class Slime extends Mob implements Enemy { } return true; // do not jump() in wasd controller, let vanilla controller handle } + -+ @Override -+ public void initAttributes() { -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.generateMaxHealth()); -+ } -+ + protected String getMaxHealthEquation() { + return level.purpurConfig.slimeMaxHealth; + } + -+ protected double generateMaxHealth() { ++ protected String getAttackDamageEquation() { ++ return level.purpurConfig.slimeAttackDamage; ++ } ++ ++ protected java.util.Map getMaxHealthCache() { ++ return level.purpurConfig.slimeMaxHealthCache; ++ } ++ ++ protected java.util.Map getAttackDamageCache() { ++ return level.purpurConfig.slimeAttackDamageCache; ++ } ++ ++ protected double getFromCache(java.util.function.Supplier equation, java.util.function.Supplier> cache, java.util.function.Supplier defaultValue) { + int size = getSize(); -+ Double maxHealth = level.purpurConfig.slimeMaxHealthCache.get(size); -+ if (maxHealth == null) { ++ Double value = cache.get().get(size); ++ if (value == null) { + try { + scriptEngine.eval("size = " + size); -+ maxHealth = (double) scriptEngine.eval(getMaxHealthEquation()); ++ value = (double) scriptEngine.eval(equation.get()); + } catch (Exception e) { -+ maxHealth = (double) size * size; ++ value = defaultValue.get(); + } -+ level.purpurConfig.slimeMaxHealthCache.put(size, maxHealth); ++ cache.get().put(size, value); + } -+ return maxHealth; ++ return value; + } // Purpur end @Override -@@ -129,7 +153,7 @@ public class Slime extends Mob implements Enemy { +@@ -129,9 +160,9 @@ public class Slime extends Mob implements Enemy { this.entityData.set(Slime.ID_SIZE, j); this.reapplyPosition(); this.refreshDimensions(); - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double) (j * j)); -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth()); // Purpur ++ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(getFromCache(this::getMaxHealthEquation, this::getMaxHealthCache, () -> (double) size * size)); // Purpur this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue((double) (0.2F + 0.1F * (float) j)); - this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue((double) j); +- this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue((double) j); ++ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(getFromCache(this::getAttackDamageEquation, this::getAttackDamageCache, () -> (double) j)); // Purpur if (heal) { + this.setHealth(this.getMaxHealth()); + } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java index a31a5186a48e6ba90c2a87bec104d10bdc3c50d5..d095df11ffc34dd641bc2795365a4d1dda8cbc88 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -1422,10 +1464,10 @@ index ab648e7dafd78f414646cef96b422e87da5c1982..0bcfece84ac11f04671ed38a99b31da9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05e287ee08 100644 +index aec3628645d75ae0b4bf7207a4c80af465561151..a524f120c7ba18cc0f89fa365a6097bebb48aea4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -98,257 +98,573 @@ public class PurpurWorldConfig { +@@ -99,257 +99,579 @@ public class PurpurWorldConfig { } public boolean axolotlRidable = false; @@ -1905,6 +1947,9 @@ index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05 public boolean magmaCubeRidable = false; public boolean magmaCubeRidableInWater = false; + public String magmaCubeMaxHealth = "size * size"; ++ public String magmaCubeAttackDamage = "size"; ++ public Map magmaCubeMaxHealthCache = new HashMap<>(); ++ public Map magmaCubeAttackDamageCache = new HashMap<>(); private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); @@ -1914,6 +1959,9 @@ index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05 + set("mobs.magma_cube.attributes.max_health", oldValue); + } + magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max_health", magmaCubeMaxHealth); ++ magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); ++ magmaCubeMaxHealthCache.clear(); ++ magmaCubeAttackDamageCache.clear(); } public boolean mooshroomRidable = false; @@ -1999,24 +2047,34 @@ index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05 } public boolean phantomRidable = false; -@@ -357,6 +673,7 @@ public class PurpurWorldConfig { +@@ -358,6 +680,10 @@ public class PurpurWorldConfig { public float phantomFlameDamage = 1.0F; public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; -+ public double phantomMaxHealth = 20.0D; ++ public String phantomMaxHealth = "20.0"; ++ public String phantomAttackDamage = "6 + size"; ++ public Map phantomMaxHealthCache = new HashMap<>(); ++ public Map phantomAttackDamageCache = new HashMap<>(); private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -364,255 +681,559 @@ public class PurpurWorldConfig { +@@ -365,255 +691,570 @@ public class PurpurWorldConfig { phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage); phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime); phantomAllowGriefing = getBoolean("mobs.phantom.allow-griefing", phantomAllowGriefing); + if (PurpurConfig.version < 10) { -+ double oldValue = getDouble("mobs.phantom.attributes.max-health", phantomMaxHealth); ++ double oldValue = getDouble("mobs.phantom.attributes.max-health", Double.parseDouble(phantomMaxHealth)); + set("mobs.phantom.attributes.max-health", null); -+ set("mobs.phantom.attributes.max_health", oldValue); ++ set("mobs.phantom.attributes.max_health", String.valueOf(oldValue)); + } -+ phantomMaxHealth = getDouble("mobs.phantom.attributes.max_health", phantomMaxHealth); ++ if (PurpurConfig.version < 25) { ++ double oldValue = getDouble("mobs.phantom.attributes.max_health", Double.parseDouble(phantomMaxHealth)); ++ set("mobs.phantom.attributes.max_health", String.valueOf(oldValue)); ++ } ++ phantomMaxHealth = getString("mobs.phantom.attributes.max_health", phantomMaxHealth); ++ phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); ++ phantomMaxHealthCache.clear(); ++ phantomAttackDamageCache.clear(); } public boolean pigRidable = false; @@ -2225,7 +2283,9 @@ index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05 public boolean slimeRidable = false; public boolean slimeRidableInWater = false; + public String slimeMaxHealth = "size * size"; ++ public String slimeAttackDamage = "size"; + public Map slimeMaxHealthCache = new HashMap<>(); ++ public Map slimeAttackDamageCache = new HashMap<>(); private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); @@ -2235,7 +2295,9 @@ index b8103294d3963a9bfe7d4f4199be866158f580ec..373bdce6590564bd9de4a571a91bbf05 + set("mobs.slime.attributes.max_health", oldValue); + } + slimeMaxHealth = getString("mobs.slime.attributes.max_health", slimeMaxHealth); ++ slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); + slimeMaxHealthCache.clear(); ++ slimeAttackDamageCache.clear(); } public boolean snowGolemRidable = false; diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 39e8e27e5..4dda550f3 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -255,7 +255,7 @@ index c5e3dfd91aba27d9b0115d264a3bbf3d50066356..59d375e9a02c990afa5037819593654f // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b404fcddc67b7593201f1679587d0ac4c4bfd51c..25f31ce77337079ebc2074f1ae2990ccaac03860 100644 +index 59398d99da9e81a047c6ed4b927398db5abec1ff..6e10eb700827a9ad63f9ebab9fd1029e0a089888 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -158,8 +158,16 @@ public class PurpurConfig { @@ -276,10 +276,10 @@ index b404fcddc67b7593201f1679587d0ac4c4bfd51c..25f31ce77337079ebc2074f1ae2990cc public static int barrelRows = 3; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 373bdce6590564bd9de4a571a91bbf05e287ee08..27d70e8e29902fe4275200cf7508298047b578cf 100644 +index a524f120c7ba18cc0f89fa365a6097bebb48aea4..ff78acf9c8ad5e9446e1e259f2881b7df878443a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -88,6 +88,24 @@ public class PurpurWorldConfig { +@@ -89,6 +89,24 @@ public class PurpurWorldConfig { return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index 8cba62e74..2e90100fc 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -146,10 +146,10 @@ index 59d375e9a02c990afa5037819593654fac853302..69de6463d169ec7a0af4331d6a58eabe // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27d70e8e29902fe4275200cf7508298047b578cf..29de4c4316285b7ddf77c508d098584d2cb365e9 100644 +index ff78acf9c8ad5e9446e1e259f2881b7df878443a..83f2729035d42674d480bb508737497a7bffb4c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -93,6 +93,8 @@ public class PurpurWorldConfig { +@@ -94,6 +94,8 @@ public class PurpurWorldConfig { public boolean idleTimeoutCountAsSleeping = false; public boolean idleTimeoutUpdateTabList = false; public boolean idleTimeoutTargetPlayer = true; @@ -158,7 +158,7 @@ index 27d70e8e29902fe4275200cf7508298047b578cf..29de4c4316285b7ddf77c508d098584d private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -104,6 +106,8 @@ public class PurpurWorldConfig { +@@ -105,6 +107,8 @@ public class PurpurWorldConfig { idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); diff --git a/patches/server/0020-Configurable-villager-brain-ticks.patch b/patches/server/0020-Configurable-villager-brain-ticks.patch index b2f5913b9..fe9835e24 100644 --- a/patches/server/0020-Configurable-villager-brain-ticks.patch +++ b/patches/server/0020-Configurable-villager-brain-ticks.patch @@ -36,10 +36,10 @@ index 0f466c9301c38e3747a22f116b98d47d1d912601..783cdc4949549725c884cdc0edff4859 this.getBrain().tick((ServerLevel) this.level, this); // Paper } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 29de4c4316285b7ddf77c508d098584d2cb365e9..ccd3597d78a12d8e6a3514c0f9cfa2aa31b688f8 100644 +index 83f2729035d42674d480bb508737497a7bffb4c7..a4111896ba007d252cb6fed8824cb99d78727991 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1071,6 +1071,8 @@ public class PurpurWorldConfig { +@@ -1092,6 +1092,8 @@ public class PurpurWorldConfig { public boolean villagerRidable = false; public boolean villagerRidableInWater = false; public double villagerMaxHealth = 20.0D; @@ -48,7 +48,7 @@ index 29de4c4316285b7ddf77c508d098584d2cb365e9..ccd3597d78a12d8e6a3514c0f9cfa2aa private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1080,6 +1082,8 @@ public class PurpurWorldConfig { +@@ -1101,6 +1103,8 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); diff --git a/patches/server/0022-Silk-touch-spawners.patch b/patches/server/0022-Silk-touch-spawners.patch index ca75f241d..4a9f3342d 100644 --- a/patches/server/0022-Silk-touch-spawners.patch +++ b/patches/server/0022-Silk-touch-spawners.patch @@ -139,10 +139,10 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7c // this.popExperience(worldserver, blockposition, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccd3597d78a12d8e6a3514c0f9cfa2aa31b688f8..0b6d6763e8ba54768c35fdb2a30fbb89f81c7b67 100644 +index a4111896ba007d252cb6fed8824cb99d78727991..55c53f7ff2bc312ae8a34c44566521f563277a8c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -110,6 +110,38 @@ public class PurpurWorldConfig { +@@ -111,6 +111,38 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); } diff --git a/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch index 2b4fe7f58..326750e04 100644 --- a/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch @@ -50,10 +50,10 @@ index 8033d2074d68635515b4737b4416ec9354a3edad..b942e7c85e6c8f9a7664d9e5bf93bcd7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b6d6763e8ba54768c35fdb2a30fbb89f81c7b67..345b55b1d44499d7b748a3f75906a66867afef10 100644 +index 55c53f7ff2bc312ae8a34c44566521f563277a8c..a56f00a40b6db80f0164260914219afaed8f0cce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -142,6 +142,15 @@ public class PurpurWorldConfig { +@@ -143,6 +143,15 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0027-Giants-AI-settings.patch b/patches/server/0027-Giants-AI-settings.patch index 518b93df1..f7ae779dd 100644 --- a/patches/server/0027-Giants-AI-settings.patch +++ b/patches/server/0027-Giants-AI-settings.patch @@ -120,10 +120,10 @@ index d1756353b9fc22f6e9b957a708073545ab3c941a..de7c2064b2c3876eebdee01908b39b1b } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 345b55b1d44499d7b748a3f75906a66867afef10..fd207fad3f094edb0c531edd396fc56da9b24521 100644 +index a56f00a40b6db80f0164260914219afaed8f0cce..d2db6d8199f6c799bca1855d0405b0aa6ff8074a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -471,6 +471,10 @@ public class PurpurWorldConfig { +@@ -472,6 +472,10 @@ public class PurpurWorldConfig { public double giantMovementSpeed = 0.5D; public double giantAttackDamage = 50.0D; public double giantMaxHealth = 100.0D; @@ -134,7 +134,7 @@ index 345b55b1d44499d7b748a3f75906a66867afef10..fd207fad3f094edb0c531edd396fc56d private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -486,6 +490,10 @@ public class PurpurWorldConfig { +@@ -487,6 +491,10 @@ public class PurpurWorldConfig { set("mobs.giant.attributes.max_health", oldValue); } giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); diff --git a/patches/server/0028-Zombie-horse-naturally-spawn.patch b/patches/server/0028-Zombie-horse-naturally-spawn.patch index 44d3cd409..d902c5d24 100644 --- a/patches/server/0028-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0028-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 41c9033b3e4fc9574793f670df3bb90c395ac991..99eb79174cb45ac4d94990afef410dba0daf632c 100644 +index cd01b2f06b0dd34c3261d84beead96bba76cf825..2f8efdd72ee3ef12ce8223b73281f4170ad1bbf1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -765,9 +765,15 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -28,10 +28,10 @@ index 41c9033b3e4fc9574793f670df3bb90c395ac991..99eb79174cb45ac4d94990afef410dba entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd207fad3f094edb0c531edd396fc56da9b24521..7c2fe960ae8c04b828ad549d33ccf36392521e99 100644 +index d2db6d8199f6c799bca1855d0405b0aa6ff8074a..3c114e679811c0b3221665fdd1a26313f539191d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1263,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1284,6 +1284,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -39,7 +39,7 @@ index fd207fad3f094edb0c531edd396fc56da9b24521..7c2fe960ae8c04b828ad549d33ccf363 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1278,6 +1279,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1300,7 @@ public class PurpurWorldConfig { zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); diff --git a/patches/server/0029-Charged-creeper-naturally-spawn.patch b/patches/server/0029-Charged-creeper-naturally-spawn.patch index 4ae9cd204..cdca90843 100644 --- a/patches/server/0029-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0029-Charged-creeper-naturally-spawn.patch @@ -24,10 +24,10 @@ index cee9afa518547afab1f2772b0352dcf05752df44..624b736f11341816c91f422cf6098ac0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c2fe960ae8c04b828ad549d33ccf36392521e99..e93db3a16ac8ea0f7674dcdd508984b8c49a56b8 100644 +index 3c114e679811c0b3221665fdd1a26313f539191d..425541175639632a3af9226b338dcce40320e2d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -293,6 +293,7 @@ public class PurpurWorldConfig { +@@ -294,6 +294,7 @@ public class PurpurWorldConfig { public boolean creeperRidable = false; public boolean creeperRidableInWater = false; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index 7c2fe960ae8c04b828ad549d33ccf36392521e99..e93db3a16ac8ea0f7674dcdd508984b8 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -302,6 +303,7 @@ public class PurpurWorldConfig { +@@ -303,6 +304,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch index 4119dedeb..862a4627e 100644 --- a/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch @@ -38,10 +38,10 @@ index 562262f4811d5748dd04a284f243024c059c8756..c1c2909728197dcb9137fb380ed210e7 int i = this.random.nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e93db3a16ac8ea0f7674dcdd508984b8c49a56b8..572a9ce6a65be37e95fe308923c2a387cf2f47fe 100644 +index 425541175639632a3af9226b338dcce40320e2d6..108548eac8f473e5dddce54268a2a10abb0e0c06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -847,6 +847,8 @@ public class PurpurWorldConfig { +@@ -864,6 +864,8 @@ public class PurpurWorldConfig { public boolean rabbitRidable = false; public boolean rabbitRidableInWater = false; public double rabbitMaxHealth = 3.0D; @@ -50,7 +50,7 @@ index e93db3a16ac8ea0f7674dcdd508984b8c49a56b8..572a9ce6a65be37e95fe308923c2a387 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -856,6 +858,8 @@ public class PurpurWorldConfig { +@@ -873,6 +875,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0032-Tulips-change-fox-type.patch b/patches/server/0032-Tulips-change-fox-type.patch index 22513204a..008b2f0b5 100644 --- a/patches/server/0032-Tulips-change-fox-type.patch +++ b/patches/server/0032-Tulips-change-fox-type.patch @@ -75,10 +75,10 @@ index b07b1302978b2a1212e094652e46ad2754fb1d6c..a2e56aadf75918d3b2c30b54ec53ba4d // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 572a9ce6a65be37e95fe308923c2a387cf2f47fe..809ded91042e66c2c761b813816d9b432cd9dff5 100644 +index 108548eac8f473e5dddce54268a2a10abb0e0c06..ca90e421b6f020eb92949ea3cbf4a8e5c31b3096 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -441,6 +441,7 @@ public class PurpurWorldConfig { +@@ -442,6 +442,7 @@ public class PurpurWorldConfig { public boolean foxRidable = false; public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; @@ -86,7 +86,7 @@ index 572a9ce6a65be37e95fe308923c2a387cf2f47fe..809ded91042e66c2c761b813816d9b43 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -450,6 +451,7 @@ public class PurpurWorldConfig { +@@ -451,6 +452,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0033-Breedable-Polar-Bears.patch b/patches/server/0033-Breedable-Polar-Bears.patch index e26ded6b0..b24278538 100644 --- a/patches/server/0033-Breedable-Polar-Bears.patch +++ b/patches/server/0033-Breedable-Polar-Bears.patch @@ -59,10 +59,10 @@ index 69e495a93cd1519297dcd8ef4971cca61b80f201..0b5d4416ad4dc0a90cbd1826c45c4741 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 809ded91042e66c2c761b813816d9b432cd9dff5..38af39e6b855be606240f3d6d85ed368cced78f8 100644 +index ca90e421b6f020eb92949ea3cbf4a8e5c31b3096..d87f38f214b5f737e96ef6ab6b9298a3412f48b3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -823,6 +823,8 @@ public class PurpurWorldConfig { +@@ -840,6 +840,8 @@ public class PurpurWorldConfig { public boolean polarBearRidable = false; public boolean polarBearRidableInWater = false; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index 809ded91042e66c2c761b813816d9b432cd9dff5..38af39e6b855be606240f3d6d85ed368 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -832,6 +834,9 @@ public class PurpurWorldConfig { +@@ -849,6 +851,9 @@ public class PurpurWorldConfig { set("mobs.polar_bear.attributes.max_health", oldValue); } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); diff --git a/patches/server/0034-Chickens-can-retaliate.patch b/patches/server/0034-Chickens-can-retaliate.patch index 1cb5a90af..00eadfca2 100644 --- a/patches/server/0034-Chickens-can-retaliate.patch +++ b/patches/server/0034-Chickens-can-retaliate.patch @@ -51,10 +51,10 @@ index 419a774733ac3d562e636f2615005c953bbd87df..ca584a5a801d0909f4bdbaa8a635608e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38af39e6b855be606240f3d6d85ed368cced78f8..42aca5776c26ce45469b742f5c7392f222984948 100644 +index d87f38f214b5f737e96ef6ab6b9298a3412f48b3..7ce2825871386d63301f90179408e52a2e101275 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -253,6 +253,7 @@ public class PurpurWorldConfig { +@@ -254,6 +254,7 @@ public class PurpurWorldConfig { public boolean chickenRidable = false; public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index 38af39e6b855be606240f3d6d85ed368cced78f8..42aca5776c26ce45469b742f5c7392f2 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -262,6 +263,7 @@ public class PurpurWorldConfig { +@@ -263,6 +264,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0035-Add-option-to-set-armorstand-step-height.patch b/patches/server/0035-Add-option-to-set-armorstand-step-height.patch index 4ea2dc50e..f950c4abd 100644 --- a/patches/server/0035-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0035-Add-option-to-set-armorstand-step-height.patch @@ -17,10 +17,10 @@ index e5ef24d92de21c4c0e6a98e06985e52d47bfdce0..dc1630a1a769f848059f576c3d1220a2 if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 42aca5776c26ce45469b742f5c7392f222984948..26c72e481c116bf7ac459a2a817250e18357978e 100644 +index 7ce2825871386d63301f90179408e52a2e101275..cdb0cae8af965f57d6c5d128d2190f9c496ea9b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -88,6 +88,11 @@ public class PurpurWorldConfig { +@@ -89,6 +89,11 @@ public class PurpurWorldConfig { return value.isEmpty() ? fallback : value; } diff --git a/patches/server/0036-Cat-spawning-options.patch b/patches/server/0036-Cat-spawning-options.patch index 1b28afad8..71a55ba6c 100644 --- a/patches/server/0036-Cat-spawning-options.patch +++ b/patches/server/0036-Cat-spawning-options.patch @@ -49,10 +49,10 @@ index 436f9cb45ff5b83f55b12f291bed355fa12a0655..0784f6a0aa39c8e49b009f53d91432ff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26c72e481c116bf7ac459a2a817250e18357978e..ea45c601cc5d4cacd7e216552d6375f8c1c0dc5c 100644 +index cdb0cae8af965f57d6c5d128d2190f9c496ea9b7..9b3c77424a9c43d3e980ddc0d1c7bc5fc4c31020 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -230,6 +230,9 @@ public class PurpurWorldConfig { +@@ -231,6 +231,9 @@ public class PurpurWorldConfig { public boolean catRidable = false; public boolean catRidableInWater = false; public double catMaxHealth = 10.0D; @@ -62,7 +62,7 @@ index 26c72e481c116bf7ac459a2a817250e18357978e..ea45c601cc5d4cacd7e216552d6375f8 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -239,6 +242,9 @@ public class PurpurWorldConfig { +@@ -240,6 +243,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0038-Cows-eat-mushrooms.patch b/patches/server/0038-Cows-eat-mushrooms.patch index 6dbfe8f14..7c26a99e5 100644 --- a/patches/server/0038-Cows-eat-mushrooms.patch +++ b/patches/server/0038-Cows-eat-mushrooms.patch @@ -114,10 +114,10 @@ index d602597132b69c51c6da9115d0a2c9a8a1f39405..0db4dd5423508acb5214ed3205bb5632 public Cow getBreedOffspring(ServerLevel world, AgeableMob entity) { return (Cow) EntityType.COW.create(world); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ea45c601cc5d4cacd7e216552d6375f8c1c0dc5c..44751c0ebca4cbbb42e0de6fea30f0ea0f53c3f4 100644 +index 9b3c77424a9c43d3e980ddc0d1c7bc5fc4c31020..8314452a8739b32264e3793616d2f50f25d1c2a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -292,6 +292,7 @@ public class PurpurWorldConfig { +@@ -293,6 +293,7 @@ public class PurpurWorldConfig { public boolean cowRidable = false; public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; @@ -125,7 +125,7 @@ index ea45c601cc5d4cacd7e216552d6375f8c1c0dc5c..44751c0ebca4cbbb42e0de6fea30f0ea private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -301,6 +302,7 @@ public class PurpurWorldConfig { +@@ -302,6 +303,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0040-Pigs-give-saddle-back.patch b/patches/server/0040-Pigs-give-saddle-back.patch index 91f229e42..d730df33e 100644 --- a/patches/server/0040-Pigs-give-saddle-back.patch +++ b/patches/server/0040-Pigs-give-saddle-back.patch @@ -28,10 +28,10 @@ index 7313d6bd41a312a8f9352240f181543d7cccb378..f4ae6de32bc1d854c54da829e45ca2cd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 44751c0ebca4cbbb42e0de6fea30f0ea0f53c3f4..4dbf0d6e8bc62a7f0b0556042009681b83a0fd31 100644 +index 8314452a8739b32264e3793616d2f50f25d1c2a8..341ea0d8d67e5028a8b9e6083119b8538d531c03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -782,6 +782,7 @@ public class PurpurWorldConfig { +@@ -799,6 +799,7 @@ public class PurpurWorldConfig { public boolean pigRidable = false; public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; @@ -39,7 +39,7 @@ index 44751c0ebca4cbbb42e0de6fea30f0ea0f53c3f4..4dbf0d6e8bc62a7f0b0556042009681b private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -791,6 +792,7 @@ public class PurpurWorldConfig { +@@ -808,6 +809,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch index a3852a648..111ad167d 100644 --- a/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch @@ -32,10 +32,10 @@ index e194774b2ba7976565642534ceeca2079e23945e..a9c1b07f23c604d9364ccdee9478baf1 this.forceDrops = false; // CraftBukkit } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4dbf0d6e8bc62a7f0b0556042009681b83a0fd31..73d01ed4c0951a10372c2ed101c7964dc4bbdadb 100644 +index 341ea0d8d67e5028a8b9e6083119b8538d531c03..8a50904dead7fb0c15d97b2424493a1f3ce35ccf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1013,6 +1013,8 @@ public class PurpurWorldConfig { +@@ -1034,6 +1034,8 @@ public class PurpurWorldConfig { public boolean snowGolemRidableInWater = false; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -44,7 +44,7 @@ index 4dbf0d6e8bc62a7f0b0556042009681b83a0fd31..73d01ed4c0951a10372c2ed101c7964d private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1023,6 +1025,8 @@ public class PurpurWorldConfig { +@@ -1044,6 +1046,8 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); diff --git a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch index fe82079f0..c64dd02a0 100644 --- a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index 73506ce90426bdfb8fbc08687c6e21de637fbd77..9d4dd8c460d1d69ab56e166e10fd7137 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 73d01ed4c0951a10372c2ed101c7964dc4bbdadb..2309deca435b740b5e27bd8413654b1e8137bb16 100644 +index 8a50904dead7fb0c15d97b2424493a1f3ce35ccf..149b3cf94e6e60007a91cb1653419aed7b88b388 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -395,6 +395,7 @@ public class PurpurWorldConfig { +@@ -396,6 +396,7 @@ public class PurpurWorldConfig { public boolean enderDragonRidableInWater = false; public double enderDragonMaxY = 256D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index 73d01ed4c0951a10372c2ed101c7964dc4bbdadb..2309deca435b740b5e27bd8413654b1e private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -409,6 +410,7 @@ public class PurpurWorldConfig { +@@ -410,6 +411,7 @@ public class PurpurWorldConfig { set("mobs.ender_dragon.attributes.max_health", oldValue); } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); diff --git a/patches/server/0043-Signs-editable-on-right-click.patch b/patches/server/0043-Signs-editable-on-right-click.patch index 2e2e8108b..89f4f5865 100644 --- a/patches/server/0043-Signs-editable-on-right-click.patch +++ b/patches/server/0043-Signs-editable-on-right-click.patch @@ -35,10 +35,10 @@ index ed3d78494735ceda14ad0ea23adeadc374f3b35e..a0d23b7e244e7df8a462b801dee18fd4 } else { return InteractionResult.PASS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2309deca435b740b5e27bd8413654b1e8137bb16..e13d9a7b4bdd3d27cd72efdaa15f6ce4e777d012 100644 +index 149b3cf94e6e60007a91cb1653419aed7b88b388..6469e3c2976ef07fb10be7298b4126efbb46ea61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -147,6 +147,11 @@ public class PurpurWorldConfig { +@@ -148,6 +148,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch index 3cdcbd427..392e77d5b 100644 --- a/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,10 +18,10 @@ index d0720d5e6612d98d1e86e33e8e6564e371595630..e102795a2464eac028b30977be8d99ce } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e13d9a7b4bdd3d27cd72efdaa15f6ce4e777d012..da0bb5a0b7ba9b4ed0826a0318ba0288d8b8d9f8 100644 +index 6469e3c2976ef07fb10be7298b4126efbb46ea61..3440e9962a1fa3c9bafcf31417ffa13c84cffbc6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -147,6 +147,11 @@ public class PurpurWorldConfig { +@@ -148,6 +148,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0045-Minecart-settings-and-WASD-controls.patch b/patches/server/0045-Minecart-settings-and-WASD-controls.patch index 119747735..171baa240 100644 --- a/patches/server/0045-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0045-Minecart-settings-and-WASD-controls.patch @@ -148,10 +148,10 @@ index 05c46f3b3bce5225b819d86e6e06729a5093e092..b2dd2a211bdd1441eae67dd6bd936919 protected final float explosionResistance; protected final boolean isRandomlyTicking; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da0bb5a0b7ba9b4ed0826a0318ba0288d8b8d9f8..d7511e69b93231f5b1cbadea5a5847596153f2da 100644 +index 3440e9962a1fa3c9bafcf31417ffa13c84cffbc6..78d2cb224260ebcf48bee46976cddacd69ab38e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -93,6 +93,68 @@ public class PurpurWorldConfig { +@@ -94,6 +94,68 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch index de2b74b5d..72355b744 100644 --- a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch @@ -22,10 +22,10 @@ index 9414424cb9b9bf1a6ffee2dbb38423055fcc3e9c..3ccac5096d83e21b19dd610a62f37ba2 // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d7511e69b93231f5b1cbadea5a5847596153f2da..e101ee0bda27bbf7ff319d5dc748b13e8b954f26 100644 +index 78d2cb224260ebcf48bee46976cddacd69ab38e2..a252c0d92d83eddfc65ecda9cf889b6789f4ee16 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -93,6 +93,11 @@ public class PurpurWorldConfig { +@@ -94,6 +94,11 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch index 6efb73c2d..2c92dd4e1 100644 --- a/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0047-Option-to-toggle-milk-curing-bad-omen.patch @@ -28,10 +28,10 @@ index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e101ee0bda27bbf7ff319d5dc748b13e8b954f26..50a1223f66adc486bae85e7c2a8567516473c8f0 100644 +index a252c0d92d83eddfc65ecda9cf889b6789f4ee16..928f903e0a607646be42dca6e9ad2a84ccd56583 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,8 +94,10 @@ public class PurpurWorldConfig { +@@ -95,8 +95,10 @@ public class PurpurWorldConfig { } public boolean disableDropsOnCrammingDeath = false; diff --git a/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index 53cce57e3..932a503b7 100644 --- a/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0053-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,10 +18,10 @@ index a367f50b0e3fe9e7a1b87892a8c98e88bd678f6f..52d41fb8d0495f61346c718c8f2395bc if (!this.level.isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50a1223f66adc486bae85e7c2a8567516473c8f0..95446bfc4fdb13d9eedc5ea9bf2b8797681886ee 100644 +index 928f903e0a607646be42dca6e9ad2a84ccd56583..4b81cc5d43182fa117c2a5d720a89f17ddf7f39b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -95,9 +95,11 @@ public class PurpurWorldConfig { +@@ -96,9 +96,11 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; diff --git a/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch index 623f85cea..e8a935602 100644 --- a/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0054-Add-enderman-and-creeper-griefing-controls.patch @@ -38,10 +38,10 @@ index 1cec7bb3efa1e3377f72489c090d3234123d3e26..434e51325cbfe4539470f9ec5164e8eb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95446bfc4fdb13d9eedc5ea9bf2b8797681886ee..965e7ccb8175c18bad8d1ed92a70792f0656bebb 100644 +index 4b81cc5d43182fa117c2a5d720a89f17ddf7f39b..7952a21e91ab87da057e69eae260f1d892fa38e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -390,6 +390,7 @@ public class PurpurWorldConfig { +@@ -391,6 +391,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = false; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index 95446bfc4fdb13d9eedc5ea9bf2b8797681886ee..965e7ccb8175c18bad8d1ed92a70792f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -400,6 +401,7 @@ public class PurpurWorldConfig { +@@ -401,6 +402,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); @@ -57,7 +57,7 @@ index 95446bfc4fdb13d9eedc5ea9bf2b8797681886ee..965e7ccb8175c18bad8d1ed92a70792f } public boolean dolphinRidable = false; -@@ -497,6 +499,7 @@ public class PurpurWorldConfig { +@@ -498,6 +500,7 @@ public class PurpurWorldConfig { public boolean endermanRidable = false; public boolean endermanRidableInWater = false; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index 95446bfc4fdb13d9eedc5ea9bf2b8797681886ee..965e7ccb8175c18bad8d1ed92a70792f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -506,6 +509,7 @@ public class PurpurWorldConfig { +@@ -507,6 +510,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0055-Villagers-follow-emerald-blocks.patch b/patches/server/0055-Villagers-follow-emerald-blocks.patch index 6c42ce1ad..b53170f06 100644 --- a/patches/server/0055-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0055-Villagers-follow-emerald-blocks.patch @@ -54,10 +54,10 @@ index 0bcfece84ac11f04671ed38a99b31da9f8b03858..2f0bcf917af26fb7628bda134b650a8b this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 965e7ccb8175c18bad8d1ed92a70792f0656bebb..f97e9a32c0f5e330a491e06d5341f68520e36664 100644 +index 7952a21e91ab87da057e69eae260f1d892fa38e5..627a655c4d988c7634817ed08a3b92b08fc6fd2a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1243,6 +1243,7 @@ public class PurpurWorldConfig { +@@ -1264,6 +1264,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; @@ -65,7 +65,7 @@ index 965e7ccb8175c18bad8d1ed92a70792f0656bebb..f97e9a32c0f5e330a491e06d5341f685 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1254,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1276,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); @@ -73,7 +73,7 @@ index 965e7ccb8175c18bad8d1ed92a70792f0656bebb..f97e9a32c0f5e330a491e06d5341f685 } public boolean vindicatorRidable = false; -@@ -1273,6 +1275,7 @@ public class PurpurWorldConfig { +@@ -1294,6 +1296,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidable = false; public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index 965e7ccb8175c18bad8d1ed92a70792f0656bebb..f97e9a32c0f5e330a491e06d5341f685 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1282,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1306,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0056-Allow-leashing-villagers.patch b/patches/server/0056-Allow-leashing-villagers.patch index 331f5c298..b41a3ebae 100644 --- a/patches/server/0056-Allow-leashing-villagers.patch +++ b/patches/server/0056-Allow-leashing-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index ed1d5508d894f5d2f6e61899a2013cbe47fbbc73..fe58b02540b56b99a02067bdde1bcfa00c758f39 100644 +index cbb2f643c619c80d3bebcf1a8f066a87fc52d274..1b1323ef9aaaede71a73a5a817ef57f14756991c 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1242,6 +1242,7 @@ public abstract class Mob extends LivingEntity { @@ -49,10 +49,10 @@ index 2f0bcf917af26fb7628bda134b650a8b296091ea..c5dbb1c8210b71f7d9d91089cb139f65 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f97e9a32c0f5e330a491e06d5341f68520e36664..9c2411632713b245746a943d3afb9f7611603267 100644 +index 627a655c4d988c7634817ed08a3b92b08fc6fd2a..bfffa9db556a3518b600052c2f42b922f760cea2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1244,6 +1244,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1265,7 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index f97e9a32c0f5e330a491e06d5341f68520e36664..9c2411632713b245746a943d3afb9f76 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1256,6 +1257,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1278,7 @@ public class PurpurWorldConfig { villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index f97e9a32c0f5e330a491e06d5341f68520e36664..9c2411632713b245746a943d3afb9f76 } public boolean vindicatorRidable = false; -@@ -1276,6 +1278,7 @@ public class PurpurWorldConfig { +@@ -1297,6 +1299,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index f97e9a32c0f5e330a491e06d5341f68520e36664..9c2411632713b245746a943d3afb9f76 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1286,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1310,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch index 6cf1e5d5b..2267f0d23 100644 --- a/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index c6596547c23365b2f7028f3764dbd0b5571f898c..fbed51cacb1963b10946056a42fa6878 for (int i = 0; i < 10; ++i) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c2411632713b245746a943d3afb9f7611603267..404c8a7c74fd997de323dc36ae90ed4cc8008dac 100644 +index bfffa9db556a3518b600052c2f42b922f760cea2..72a8eed3b7debcd3f87308579aee58c0ca4b3070 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1245,6 +1245,8 @@ public class PurpurWorldConfig { +@@ -1266,6 +1266,8 @@ public class PurpurWorldConfig { public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -30,7 +30,7 @@ index 9c2411632713b245746a943d3afb9f7611603267..404c8a7c74fd997de323dc36ae90ed4c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1258,6 +1260,8 @@ public class PurpurWorldConfig { +@@ -1279,6 +1281,8 @@ public class PurpurWorldConfig { villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0058-Implement-infinite-liquids.patch b/patches/server/0058-Implement-infinite-liquids.patch index 402fff9eb..66b2bd28a 100644 --- a/patches/server/0058-Implement-infinite-liquids.patch +++ b/patches/server/0058-Implement-infinite-liquids.patch @@ -81,10 +81,10 @@ index 56d50b9310d30e0f81f3d2549ff5c256eb07cc2a..4cc6d665c7d52b6edcaaa5f9ed131407 @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 404c8a7c74fd997de323dc36ae90ed4cc8008dac..25f8fe880cc754c6a1f96b20925ea6002ab94f3a 100644 +index 72a8eed3b7debcd3f87308579aee58c0ca4b3070..5c2f818db7ff6f200d408ab69627d8cebcb0a492 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -223,6 +223,13 @@ public class PurpurWorldConfig { +@@ -224,6 +224,13 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } @@ -98,7 +98,7 @@ index 404c8a7c74fd997de323dc36ae90ed4cc8008dac..25f8fe880cc754c6a1f96b20925ea600 public boolean signRightClickEdit = false; private void signSettings() { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); -@@ -237,6 +244,13 @@ public class PurpurWorldConfig { +@@ -238,6 +245,13 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } diff --git a/patches/server/0059-Make-lava-flow-speed-configurable.patch b/patches/server/0059-Make-lava-flow-speed-configurable.patch index b2bf24c59..f3ffc275e 100644 --- a/patches/server/0059-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0059-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index 9fc7bc3141c0fe6b65d78edf6bac3c45d46ae4fe..a7d2fcad13f1f9b7055732636cd58039 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25f8fe880cc754c6a1f96b20925ea6002ab94f3a..e86533cfa8f24c135dfbee34429b58313d1839c5 100644 +index 5c2f818db7ff6f200d408ab69627d8cebcb0a492..30b611ff62b07ba8eaade89e2409b06023608382 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -225,9 +225,13 @@ public class PurpurWorldConfig { +@@ -226,9 +226,13 @@ public class PurpurWorldConfig { public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; diff --git a/patches/server/0060-Add-player-death-exp-control-options.patch b/patches/server/0060-Add-player-death-exp-control-options.patch index 8b33263fb..d41ed6a48 100644 --- a/patches/server/0060-Add-player-death-exp-control-options.patch +++ b/patches/server/0060-Add-player-death-exp-control-options.patch @@ -31,10 +31,10 @@ index fd83ec264d2d2dabadd50a73065ba61544196bfa..ad41bfb05122086aafc290c2b816a28b return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e86533cfa8f24c135dfbee34429b58313d1839c5..e7c0102d9c154b77ac2099f1f310762e0a384f12 100644 +index 30b611ff62b07ba8eaade89e2409b06023608382..d5778eb9b05257703e366588cc3f66bd260ef52a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -171,6 +171,8 @@ public class PurpurWorldConfig { +@@ -172,6 +172,8 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public int playerSpawnInvulnerableTicks = 60; public boolean playerInvulnerableWhileAcceptingResourcePack = false; @@ -43,7 +43,7 @@ index e86533cfa8f24c135dfbee34429b58313d1839c5..e7c0102d9c154b77ac2099f1f310762e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -184,6 +186,8 @@ public class PurpurWorldConfig { +@@ -185,6 +187,8 @@ public class PurpurWorldConfig { idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); playerSpawnInvulnerableTicks = getInt("gameplay-mechanics.player.spawn-invulnerable-ticks", playerSpawnInvulnerableTicks); playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); diff --git a/patches/server/0061-Configurable-void-damage-height-and-damage.patch b/patches/server/0061-Configurable-void-damage-height-and-damage.patch index d001d2d3f..715513722 100644 --- a/patches/server/0061-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0061-Configurable-void-damage-height-and-damage.patch @@ -31,10 +31,10 @@ index 8d2f0a07792d88c8f53c87333d32e67502b4e39f..195efa0326e2943a7c1c9190de76f61f protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7c0102d9c154b77ac2099f1f310762e0a384f12..a5f5aaa8eb31680dadb0e9a0b0c5d20f88e5df7c 100644 +index d5778eb9b05257703e366588cc3f66bd260ef52a..0e08661ece83d8d3ab4cc26a9da30aa94dce1eb2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,10 +96,14 @@ public class PurpurWorldConfig { +@@ -97,10 +97,14 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; diff --git a/patches/server/0063-Dispenser-curse-of-binding-protection.patch b/patches/server/0063-Dispenser-curse-of-binding-protection.patch index 7ca8452d1..8176f3195 100644 --- a/patches/server/0063-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0063-Dispenser-curse-of-binding-protection.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index fe58b02540b56b99a02067bdde1bcfa00c758f39..9d43556ecdafed0605bfd6f65c4f5795a41261a9 100644 +index 1b1323ef9aaaede71a73a5a817ef57f14756991c..79d258458f5ad997a7e88af6c616d1b677d84581 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -63,6 +63,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; @@ -43,10 +43,10 @@ index baa7e055d8ee4a153842128b07984b9f6deac6ca..014dd3aa8a7313d978d4781a1b7c6f53 // CraftBukkit start Level world = pointer.getLevel(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5f5aaa8eb31680dadb0e9a0b0c5d20f88e5df7c..ccfee8a75592c6dbf3a2256d3c0d0c338bc3eea5 100644 +index 0e08661ece83d8d3ab4cc26a9da30aa94dce1eb2..ffd4ebfb93266f18a456d691eb7c7428706fadaa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -226,6 +226,11 @@ public class PurpurWorldConfig { +@@ -227,6 +227,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch index 06f284985..1868e40b6 100644 --- a/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,10 +17,10 @@ index b967177cb10041f96831322c311579e409050e88..4b38f8186dcd9a98a5413a51c5563c49 } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccfee8a75592c6dbf3a2256d3c0d0c338bc3eea5..417878da19deaf23018c5d1bf208479bf9aae4e5 100644 +index ffd4ebfb93266f18a456d691eb7c7428706fadaa..3ec6ec2f9e4fb575de56c4f93c3b1d0db5d1e84d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -93,12 +93,14 @@ public class PurpurWorldConfig { +@@ -94,12 +94,14 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } diff --git a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch index 1a33ae1dc..3aa23044a 100644 --- a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch @@ -73,10 +73,10 @@ index 7bc5aa35b52de0027cf58a6127a9903464ccaf47..f3ec99d2eae31ba7ce7d4b8e7399a56d Entry entry = getRandomItemWith(enchantment, entityliving); return entry != null ? entry.getValue() : ItemStack.EMPTY; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 417878da19deaf23018c5d1bf208479bf9aae4e5..f9bfb328c2056d39df5b2a4092d03c75c8fdfc57 100644 +index 3ec6ec2f9e4fb575de56c4f93c3b1d0db5d1e84d..811e1c0c4dfcb7b8740f73fdb1bc394232cef180 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -93,6 +93,7 @@ public class PurpurWorldConfig { +@@ -94,6 +94,7 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } @@ -84,7 +84,7 @@ index 417878da19deaf23018c5d1bf208479bf9aae4e5..f9bfb328c2056d39df5b2a4092d03c75 public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; -@@ -100,6 +101,7 @@ public class PurpurWorldConfig { +@@ -101,6 +102,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { diff --git a/patches/server/0067-Implement-elytra-settings.patch b/patches/server/0067-Implement-elytra-settings.patch index 5caf77f09..e35f67049 100644 --- a/patches/server/0067-Implement-elytra-settings.patch +++ b/patches/server/0067-Implement-elytra-settings.patch @@ -99,10 +99,10 @@ index 998758be827efbcb7693ed36ab1dffc0ef0369bf..5beaafec0759543d3bddf99028c97d0d entityhuman.startAutoSpinAttack(20); if (entityhuman.isOnGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f9bfb328c2056d39df5b2a4092d03c75c8fdfc57..9963ded057f721ad884f420d62a74b9e06f8b4b9 100644 +index 811e1c0c4dfcb7b8740f73fdb1bc394232cef180..4d2f8fc1ee5ca497b19621b633124c28e1e5e4d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -110,6 +110,19 @@ public class PurpurWorldConfig { +@@ -111,6 +111,19 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } diff --git a/patches/server/0068-Item-entity-immunities.patch b/patches/server/0068-Item-entity-immunities.patch index b1e8d3301..4b6834fd3 100644 --- a/patches/server/0068-Item-entity-immunities.patch +++ b/patches/server/0068-Item-entity-immunities.patch @@ -147,10 +147,10 @@ index 8d56f0ab748373e55c0166b92382c126fe8e5381..0637e074dbe4a10bc19e7bf9dd79e2d9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9963ded057f721ad884f420d62a74b9e06f8b4b9..4f2ce450267a98f6b5e2814eb0303fc37125f792 100644 +index 4d2f8fc1ee5ca497b19621b633124c28e1e5e4d2..703a41c7c90124d8b8aa925a3f494ca61a268a92 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -123,6 +123,49 @@ public class PurpurWorldConfig { +@@ -124,6 +124,49 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0072-Configurable-jockey-options.patch b/patches/server/0072-Configurable-jockey-options.patch index 82ec6b4eb..28e110a05 100644 --- a/patches/server/0072-Configurable-jockey-options.patch +++ b/patches/server/0072-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index f30b36b3f1153e1cbd9b8242909d9ba8c995df1d..76f1bbec2b8ebe037de65ee5ec718e17 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f75b86420 100644 +index 703a41c7c90124d8b8aa925a3f494ca61a268a92..982646423785bfb98be99044a8f4c59a16775d93 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -541,6 +541,9 @@ public class PurpurWorldConfig { +@@ -542,6 +542,9 @@ public class PurpurWorldConfig { public boolean drownedRidableInWater = false; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -551,6 +554,9 @@ public class PurpurWorldConfig { +@@ -552,6 +555,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f } public boolean elderGuardianRidable = false; -@@ -763,6 +769,9 @@ public class PurpurWorldConfig { +@@ -764,6 +770,9 @@ public class PurpurWorldConfig { public boolean huskRidableInWater = false; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -773,6 +782,9 @@ public class PurpurWorldConfig { +@@ -774,6 +783,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f } public boolean illusionerRidable = false; -@@ -1467,6 +1479,9 @@ public class PurpurWorldConfig { +@@ -1488,6 +1500,9 @@ public class PurpurWorldConfig { public boolean zombieRidableInWater = false; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1477,6 +1492,9 @@ public class PurpurWorldConfig { +@@ -1498,6 +1513,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f } public boolean zombieHorseRidableInWater = false; -@@ -1510,6 +1528,9 @@ public class PurpurWorldConfig { +@@ -1531,6 +1549,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerRidableInWater = false; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1520,12 +1541,18 @@ public class PurpurWorldConfig { +@@ -1541,12 +1562,18 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -259,7 +259,7 @@ index 4f2ce450267a98f6b5e2814eb0303fc37125f792..d251746cbb14fce9756af250e6e2276f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1536,5 +1563,8 @@ public class PurpurWorldConfig { +@@ -1557,5 +1584,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 4c5130531..5b85ebd94 100644 --- a/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0073-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -73,7 +73,7 @@ index d8c4f36ae0e65c6d0398fac80c93b78646bdf6a4..f8863cabad1bd0c3c2c62b8e17612d95 @Override protected void addAdditionalSaveData(CompoundTag nbt) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index f4da51e75b3f8772f0d3de17ef4699845a08fdd1..5dc5bddfce5b46fd065fd14112febc415e19860c 100644 +index 59289140f51ea63e81ebebc97d5a54fc2b0e1914..61b40d0b7dbb956fa25271c6f6768ac147afc563 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -84,9 +84,9 @@ index f4da51e75b3f8772f0d3de17ef4699845a08fdd1..5dc5bddfce5b46fd065fd14112febc41 public Phantom(EntityType type, Level world) { super(type, world); -@@ -116,6 +117,24 @@ public class Phantom extends FlyingMob implements Enemy { - public void initAttributes() { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.phantomMaxHealth); +@@ -126,6 +127,24 @@ public class Phantom extends FlyingMob implements Enemy { + } + return value; } + + @Override @@ -109,7 +109,7 @@ index f4da51e75b3f8772f0d3de17ef4699845a08fdd1..5dc5bddfce5b46fd065fd14112febc41 // Purpur end @Override -@@ -130,11 +149,17 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -140,11 +159,17 @@ public class Phantom extends FlyingMob implements Enemy { @Override protected void registerGoals() { @@ -132,7 +132,7 @@ index f4da51e75b3f8772f0d3de17ef4699845a08fdd1..5dc5bddfce5b46fd065fd14112febc41 this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -324,6 +349,124 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -337,6 +362,124 @@ public class Phantom extends FlyingMob implements Enemy { private AttackPhase() {} } @@ -258,23 +258,23 @@ index f4da51e75b3f8772f0d3de17ef4699845a08fdd1..5dc5bddfce5b46fd065fd14112febc41 private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d251746cbb14fce9756af250e6e2276f75b86420..814d71572fdce49e02d7ee5ee20210b3de2a4076 100644 +index 982646423785bfb98be99044a8f4c59a16775d93..9627fc7c186da877be610d0d8464b3f557eb400d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -954,6 +954,9 @@ public class PurpurWorldConfig { - public int phantomFlameFireTime = 8; - public boolean phantomAllowGriefing = false; - public double phantomMaxHealth = 20.0D; +@@ -964,6 +964,9 @@ public class PurpurWorldConfig { + public String phantomAttackDamage = "6 + size"; + public Map phantomMaxHealthCache = new HashMap<>(); + public Map phantomAttackDamageCache = new HashMap<>(); + public double phantomAttackedByCrystalRadius = 0.0D; + public float phantomAttackedByCrystalDamage = 1.0F; + public double phantomOrbitCrystalRadius = 0.0D; private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -967,6 +970,9 @@ public class PurpurWorldConfig { - set("mobs.phantom.attributes.max_health", oldValue); - } - phantomMaxHealth = getDouble("mobs.phantom.attributes.max_health", phantomMaxHealth); +@@ -984,6 +987,9 @@ public class PurpurWorldConfig { + phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); + phantomMaxHealthCache.clear(); + phantomAttackDamageCache.clear(); + phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); + phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); + phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0074-Add-phantom-spawning-options.patch b/patches/server/0074-Add-phantom-spawning-options.patch index 26240048d..705c3912c 100644 --- a/patches/server/0074-Add-phantom-spawning-options.patch +++ b/patches/server/0074-Add-phantom-spawning-options.patch @@ -48,10 +48,10 @@ index 1e21d6cf2f03219fb2b7217c9a72bdd83c2146f7..dad5d3c754395b39e96be1e35a99c8bf for (int l = 0; l < k; ++l) { // Paper start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 814d71572fdce49e02d7ee5ee20210b3de2a4076..98680d303bb17ddc72b64233670dabad9ab1d807 100644 +index 9627fc7c186da877be610d0d8464b3f557eb400d..d6744436fbac28e3e6486a6d36f20e20a7d99d3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -957,6 +957,18 @@ public class PurpurWorldConfig { +@@ -967,6 +967,18 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -70,7 +70,7 @@ index 814d71572fdce49e02d7ee5ee20210b3de2a4076..98680d303bb17ddc72b64233670dabad private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -973,6 +985,18 @@ public class PurpurWorldConfig { +@@ -990,6 +1002,18 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0075-Implement-bed-explosion-options.patch b/patches/server/0075-Implement-bed-explosion-options.patch index 083cae812..9516c2ce9 100644 --- a/patches/server/0075-Implement-bed-explosion-options.patch +++ b/patches/server/0075-Implement-bed-explosion-options.patch @@ -27,10 +27,10 @@ index 20c0030d566012146021613325c6a979f392740e..340e5dee8bf5d8a865c19a8fe63399ae } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98680d303bb17ddc72b64233670dabad9ab1d807..13ad57956dadf60fbe9a1b6f12effa84cf321abf 100644 +index d6744436fbac28e3e6486a6d36f20e20a7d99d3e..f4588e514e60bb244c789b162b8503c236950a3b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -286,6 +286,22 @@ public class PurpurWorldConfig { +@@ -287,6 +287,22 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0076-Implement-respawn-anchor-explosion-options.patch b/patches/server/0076-Implement-respawn-anchor-explosion-options.patch index 74cee617d..f734c050f 100644 --- a/patches/server/0076-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0076-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index 07e893f1859abe3c2a765694c21309d60346ca82..0fabe3ec1e9d7dae952db1f1e3dd3af8 public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13ad57956dadf60fbe9a1b6f12effa84cf321abf..96fd3a8735eacd42ec983b4f91ad88bec2a9a3a5 100644 +index f4588e514e60bb244c789b162b8503c236950a3b..a38a4bdba8c87bfce09487714b58082f74432b9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -323,6 +323,22 @@ public class PurpurWorldConfig { +@@ -324,6 +324,22 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0079-Entity-lifespan.patch b/patches/server/0079-Entity-lifespan.patch index 6b4b502b0..63e5ff942 100644 --- a/patches/server/0079-Entity-lifespan.patch +++ b/patches/server/0079-Entity-lifespan.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 9d43556ecdafed0605bfd6f65c4f5795a41261a9..6f4396ab99bf87560544e3eb7f4e8711595af2ae 100644 +index 79d258458f5ad997a7e88af6c616d1b677d84581..1ef0de7544f26faf69dc0395da8e09f9514a4aff 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -129,6 +129,7 @@ public abstract class Mob extends LivingEntity { @@ -89,10 +89,10 @@ index 9d43556ecdafed0605bfd6f65c4f5795a41261a9..6f4396ab99bf87560544e3eb7f4e8711 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96fd3a8735eacd42ec983b4f91ad88bec2a9a3a5..29609a60af03e8334f847aeb90c57a9e352b1893 100644 +index a38a4bdba8c87bfce09487714b58082f74432b9d..9a7cbf1473c00af0681865f14455f6531036f4cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -123,6 +123,11 @@ public class PurpurWorldConfig { +@@ -124,6 +124,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 03ad2bc7d..3db756056 100644 --- a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -35,7 +35,7 @@ index ae40f50a33f676059738625773127ff9ae181be0..295658d4b479e8a3e825f0b5ce5dfc2c + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 38c9aa1e1f717cd9b596db85e9234d2651ac0de0..2950a9556fd474b659d66c1fc4d5e6e451ad9fda 100644 +index 5a42b378012a4de689c6d63d5233bfa6df251917..72341e3907ea19e16b5f09a7e7b38aac73d1ad50 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -43,6 +43,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; @@ -55,10 +55,10 @@ index 38c9aa1e1f717cd9b596db85e9234d2651ac0de0..2950a9556fd474b659d66c1fc4d5e6e4 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 29609a60af03e8334f847aeb90c57a9e352b1893..b5d48e3979361e1b6407a1dcf0f5271542273974 100644 +index 9a7cbf1473c00af0681865f14455f6531036f4cd..337e6f2515591c690a2a18055c6dbdb006f0aea2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -242,6 +242,7 @@ public class PurpurWorldConfig { +@@ -243,6 +243,7 @@ public class PurpurWorldConfig { public boolean playerInvulnerableWhileAcceptingResourcePack = false; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -66,7 +66,7 @@ index 29609a60af03e8334f847aeb90c57a9e352b1893..b5d48e3979361e1b6407a1dcf0f52715 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -257,6 +258,7 @@ public class PurpurWorldConfig { +@@ -258,6 +259,7 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); diff --git a/patches/server/0081-Squid-EAR-immunity.patch b/patches/server/0081-Squid-EAR-immunity.patch index c216b3edc..42a26731b 100644 --- a/patches/server/0081-Squid-EAR-immunity.patch +++ b/patches/server/0081-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b5d48e3979361e1b6407a1dcf0f5271542273974..71eef6cc623db385db98d3fe98ea657453ae28fb 100644 +index 337e6f2515591c690a2a18055c6dbdb006f0aea2..e31ed42038f800125f2129b1dbfafa86eacbf1b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { +@@ -1311,6 +1311,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index b5d48e3979361e1b6407a1dcf0f5271542273974..71eef6cc623db385db98d3fe98ea6574 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1298,6 +1299,7 @@ public class PurpurWorldConfig { +@@ -1319,6 +1320,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0082-Phantoms-burn-in-light.patch b/patches/server/0082-Phantoms-burn-in-light.patch index da2031406..b43854a17 100644 --- a/patches/server/0082-Phantoms-burn-in-light.patch +++ b/patches/server/0082-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 5dc5bddfce5b46fd065fd14112febc415e19860c..284532bfe697d288529eacbad0fcfcb6a3680446 100644 +index 61b40d0b7dbb956fa25271c6f6768ac147afc563..72a790e6aba656e8817a84d2c729ce722e9a43ef 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -16,7 +16,7 @@ index 5dc5bddfce5b46fd065fd14112febc415e19860c..284532bfe697d288529eacbad0fcfcb6 public Phantom(EntityType type, Level world) { super(type, world); -@@ -229,7 +230,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -242,7 +243,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -25,7 +25,7 @@ index 5dc5bddfce5b46fd065fd14112febc415e19860c..284532bfe697d288529eacbad0fcfcb6 this.setSecondsOnFire(8); } -@@ -633,6 +634,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -646,6 +647,12 @@ public class Phantom extends FlyingMob implements Enemy { return false; } else if (!entityliving.isAlive()) { return false; @@ -38,7 +38,7 @@ index 5dc5bddfce5b46fd065fd14112febc415e19860c..284532bfe697d288529eacbad0fcfcb6 } else { if (entityliving instanceof Player) { Player entityhuman = (Player) entityliving; -@@ -778,6 +785,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -791,6 +798,7 @@ public class Phantom extends FlyingMob implements Enemy { this.nextScanTick = reducedTickDelay(60); List list = Phantom.this.level.getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D)); @@ -47,10 +47,10 @@ index 5dc5bddfce5b46fd065fd14112febc415e19860c..284532bfe697d288529eacbad0fcfcb6 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71eef6cc623db385db98d3fe98ea657453ae28fb..878173f5bfbd164eb9873dc5b38272c444f19715 100644 +index e31ed42038f800125f2129b1dbfafa86eacbf1b9..e2aa7524253adecd6536530d93f68e75482af97f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1008,6 +1008,9 @@ public class PurpurWorldConfig { +@@ -1018,6 +1018,9 @@ public class PurpurWorldConfig { public int phantomSpawnOverheadRadius = 10; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -60,7 +60,7 @@ index 71eef6cc623db385db98d3fe98ea657453ae28fb..878173f5bfbd164eb9873dc5b38272c4 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1036,6 +1039,9 @@ public class PurpurWorldConfig { +@@ -1053,6 +1056,9 @@ public class PurpurWorldConfig { phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0083-Configurable-villager-breeding.patch b/patches/server/0083-Configurable-villager-breeding.patch index 6ecb4e3c2..50eee2713 100644 --- a/patches/server/0083-Configurable-villager-breeding.patch +++ b/patches/server/0083-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index fbed51cacb1963b10946056a42fa6878e88a31a9..3d755f2c6253e83d0d9fb1348f066f4f private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 878173f5bfbd164eb9873dc5b38272c444f19715..5d731291b435c5512143c01a59ee7a63e94f0c46 100644 +index e2aa7524253adecd6536530d93f68e75482af97f..ce4d44d130ee3ed5b6925090ffa2b2d8da9c221b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1427,6 +1427,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1448,7 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -29,7 +29,7 @@ index 878173f5bfbd164eb9873dc5b38272c444f19715..5d731291b435c5512143c01a59ee7a63 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1442,6 +1443,7 @@ public class PurpurWorldConfig { +@@ -1463,6 +1464,7 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0084-Redstone-deactivates-spawners.patch b/patches/server/0084-Redstone-deactivates-spawners.patch index ccfa694f4..bb117b12b 100644 --- a/patches/server/0084-Redstone-deactivates-spawners.patch +++ b/patches/server/0084-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index 03726227fdd60e9cf77213d50184abff438e01ef..76979991d2ded84161e8a0fc72cbb2d2 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5d731291b435c5512143c01a59ee7a63e94f0c46..328a33211582554b3ec89ae1c28a00c980055eef 100644 +index ce4d44d130ee3ed5b6925090ffa2b2d8da9c221b..4e7edce9874038b375a92a4e01d9233ecc7a10c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -351,6 +351,11 @@ public class PurpurWorldConfig { +@@ -352,6 +352,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0085-Totems-work-in-inventory.patch b/patches/server/0085-Totems-work-in-inventory.patch index 5767a0d37..de834883b 100644 --- a/patches/server/0085-Totems-work-in-inventory.patch +++ b/patches/server/0085-Totems-work-in-inventory.patch @@ -29,10 +29,10 @@ index 72341e3907ea19e16b5f09a7e7b38aac73d1ad50..66628b9c301da2fee3afe42ed321a2c3 event.setCancelled(itemstack == null); this.level.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 328a33211582554b3ec89ae1c28a00c980055eef..e0e95b0956a0ee2f7f22bd04fb4d7d5b19868ebe 100644 +index 4e7edce9874038b375a92a4e01d9233ecc7a10c1..c28ed3ae75695d5f4052726a2acf526dde7cd261 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -243,6 +243,7 @@ public class PurpurWorldConfig { +@@ -244,6 +244,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -40,7 +40,7 @@ index 328a33211582554b3ec89ae1c28a00c980055eef..e0e95b0956a0ee2f7f22bd04fb4d7d5b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -259,6 +260,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch index 396af5e07..94688e455 100644 --- a/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch @@ -30,10 +30,10 @@ index c92c948989543248b22db0830a3cb1b6f7940d60..9db267a9a52aa1bde4423711bd0ac6b9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e0e95b0956a0ee2f7f22bd04fb4d7d5b19868ebe..59b32ac760bc267182d1a6691ef18665d8d3dc15 100644 +index c28ed3ae75695d5f4052726a2acf526dde7cd261..ccdbeca6fa964fc2d1b4b25bdd4a218ea13a92df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1456,6 +1456,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1477,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidable = false; public boolean vindicatorRidableInWater = false; public double vindicatorMaxHealth = 24.0D; @@ -41,7 +41,7 @@ index e0e95b0956a0ee2f7f22bd04fb4d7d5b19868ebe..59b32ac760bc267182d1a6691ef18665 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1465,6 +1466,7 @@ public class PurpurWorldConfig { +@@ -1486,6 +1487,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0088-Dispensers-place-anvils-option.patch b/patches/server/0088-Dispensers-place-anvils-option.patch index 6b88dba35..40f67b8ae 100644 --- a/patches/server/0088-Dispensers-place-anvils-option.patch +++ b/patches/server/0088-Dispensers-place-anvils-option.patch @@ -41,10 +41,10 @@ index 59db245fe11384282af84ec1d5be08ab0e9484ca..a08eebaa08a75be4e7e8f6d560740ea1 static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59b32ac760bc267182d1a6691ef18665d8d3dc15..a286c2651b3fd43806897a9fea7cddd5f624995d 100644 +index ccdbeca6fa964fc2d1b4b25bdd4a218ea13a92df..4d6d6d14556790a2ad6d129afb57a3b042662f01 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -312,8 +312,10 @@ public class PurpurWorldConfig { +@@ -313,8 +313,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0089-Allow-anvil-colors.patch b/patches/server/0089-Allow-anvil-colors.patch index d84876918..83d57f3f8 100644 --- a/patches/server/0089-Allow-anvil-colors.patch +++ b/patches/server/0089-Allow-anvil-colors.patch @@ -37,10 +37,10 @@ index 3314cb81d4d5ce9c1d5472e1213b6bcc1c688b9c..69d996fead45bcf9fe5a29727f7f0a7a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a286c2651b3fd43806897a9fea7cddd5f624995d..65e778e49e4d99988a68c7f069a55dfdf04502c2 100644 +index 4d6d6d14556790a2ad6d129afb57a3b042662f01..e636499f07581429e0bc42f6b9c1c80fb48cc71a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -295,6 +295,11 @@ public class PurpurWorldConfig { +@@ -296,6 +296,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch index 6e7f67b43..8863fdde2 100644 --- a/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 16f32f0a58b090174f3d8b38c583adbcca58c9e4..ea0fb3b032a86223bfdee05a56baa15a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65e778e49e4d99988a68c7f069a55dfdf04502c2..073eb58ae5eef87156c6951bf8eee356697fe3a6 100644 +index e636499f07581429e0bc42f6b9c1c80fb48cc71a..06c50a42e2acd17b6c89ac8428b25c5866e6127e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -553,6 +553,7 @@ public class PurpurWorldConfig { +@@ -554,6 +554,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 65e778e49e4d99988a68c7f069a55dfdf04502c2..073eb58ae5eef87156c6951bf8eee356 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -564,6 +565,7 @@ public class PurpurWorldConfig { +@@ -565,6 +566,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch index 01db7c591..0bd753f2b 100644 --- a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0ff2b5c23c904826098af23f17e95aba790ef3de..4fad4e9a15be08154c3eb7af1653a61dae9a581f 100644 +index fda1d7f9b4bdfd12a531104ca8b571bd39e758f4..851edf3d77ccc887943a68ea6835d4c9bd4c16a9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3914,6 +3914,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -54,10 +54,10 @@ index 68cc6f2a78a06293a29317fda72ab3ee79b3533a..cfb2e46b34b2982d6724f18214557fc8 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 073eb58ae5eef87156c6951bf8eee356697fe3a6..852acd97bb38fedd6aeb16abe40fa1166af31799 100644 +index 06c50a42e2acd17b6c89ac8428b25c5866e6127e..bce10b6b23b563a95a16400d9ee80300fbb67939 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1313,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1334,6 +1334,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 073eb58ae5eef87156c6951bf8eee356697fe3a6..852acd97bb38fedd6aeb16abe40fa116 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1322,6 +1323,7 @@ public class PurpurWorldConfig { +@@ -1343,6 +1344,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0094-Entities-can-use-portals-configuration.patch b/patches/server/0094-Entities-can-use-portals-configuration.patch index 573c61a83..d8b03fcde 100644 --- a/patches/server/0094-Entities-can-use-portals-configuration.patch +++ b/patches/server/0094-Entities-can-use-portals-configuration.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4fad4e9a15be08154c3eb7af1653a61dae9a581f..4d9ba5bfd3632c5402badde37996b6ae8c4dea5b 100644 +index 851edf3d77ccc887943a68ea6835d4c9bd4c16a9..134be4b6a485f76c6f20361de5ef06121f21baab 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2743,7 +2743,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -27,10 +27,10 @@ index 4fad4e9a15be08154c3eb7af1653a61dae9a581f..4d9ba5bfd3632c5402badde37996b6ae public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 852acd97bb38fedd6aeb16abe40fa1166af31799..d1198bf0e9a64af5da22486982d15d7c68a8681c 100644 +index bce10b6b23b563a95a16400d9ee80300fbb67939..e92a269a9340cd6b76cb7e13738ca46906675b2f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,6 +96,7 @@ public class PurpurWorldConfig { +@@ -97,6 +97,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; @@ -38,7 +38,7 @@ index 852acd97bb38fedd6aeb16abe40fa1166af31799..d1198bf0e9a64af5da22486982d15d7c public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; -@@ -104,6 +105,7 @@ public class PurpurWorldConfig { +@@ -105,6 +106,7 @@ public class PurpurWorldConfig { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); diff --git a/patches/server/0096-Customizable-wither-health-and-healing.patch b/patches/server/0096-Customizable-wither-health-and-healing.patch index d4acf1d07..8d8a797bf 100644 --- a/patches/server/0096-Customizable-wither-health-and-healing.patch +++ b/patches/server/0096-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 9a0a5da86e0502382cb538d6abea8e425e40dddc..93cc8dbf2ff435777a5edc11a834ca1b this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1198bf0e9a64af5da22486982d15d7c68a8681c..549c69dc47896f90c6976e6c18bbaa139e698ab6 100644 +index e92a269a9340cd6b76cb7e13738ca46906675b2f..8ff90ee18ed8a6d6c5be991a5a0841383dd93f6c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1518,6 +1518,8 @@ public class PurpurWorldConfig { +@@ -1539,6 +1539,8 @@ public class PurpurWorldConfig { public boolean witherRidableInWater = false; public double witherMaxY = 256D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index d1198bf0e9a64af5da22486982d15d7c68a8681c..549c69dc47896f90c6976e6c18bbaa13 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1532,6 +1534,8 @@ public class PurpurWorldConfig { +@@ -1553,6 +1555,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch index 299a5bf37..9ec908709 100644 --- a/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ba095685ec775cb5a7ac9a5b7b0a91797f87b087..e0d2446a3e203a8980f2b4a8d45f677f5d7a7698 100644 +index 2f8efdd72ee3ef12ce8223b73281f4170ad1bbf1..3fc111ee19000a9e665f00e168d1278cd5de0d25 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -83,6 +83,7 @@ import net.minecraft.world.entity.MobCategory; @@ -94,10 +94,10 @@ index 323eea2bccacfcc85849b5d82c2b30d991e0c0d8..bb5918ff947eb4cc4d0c964b2a8a9166 if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 549c69dc47896f90c6976e6c18bbaa139e698ab6..16de8bd3f940e1d83970ddbd5aa89118c0b2a97c 100644 +index 8ff90ee18ed8a6d6c5be991a5a0841383dd93f6c..8063f1d20a6f505514c94a28b890488319ca5628 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -67,6 +67,12 @@ public class PurpurWorldConfig { +@@ -68,6 +68,12 @@ public class PurpurWorldConfig { return PurpurConfig.config.getBoolean("world-settings." + worldName + "." + path, PurpurConfig.config.getBoolean("world-settings.default." + path)); } @@ -110,7 +110,7 @@ index 549c69dc47896f90c6976e6c18bbaa139e698ab6..16de8bd3f940e1d83970ddbd5aa89118 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -235,6 +241,21 @@ public class PurpurWorldConfig { +@@ -236,6 +242,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0098-Raid-cooldown-setting.patch b/patches/server/0098-Raid-cooldown-setting.patch index 3e6b2dd37..93c025438 100644 --- a/patches/server/0098-Raid-cooldown-setting.patch +++ b/patches/server/0098-Raid-cooldown-setting.patch @@ -52,10 +52,10 @@ index e8dd1fdf1a3b697a2e040424df49ac6527b68312..120f77f52ef493f16c2bd8fbc8d8d0a4 if (!this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16de8bd3f940e1d83970ddbd5aa89118c0b2a97c..cd001f91921ca908c1bc426c10640eaff25ad178 100644 +index 8063f1d20a6f505514c94a28b890488319ca5628..e4bba9ac3a8b1f5b454a4907700a520ae76456c4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -107,6 +107,7 @@ public class PurpurWorldConfig { +@@ -108,6 +108,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -63,7 +63,7 @@ index 16de8bd3f940e1d83970ddbd5aa89118c0b2a97c..cd001f91921ca908c1bc426c10640eaf private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -116,6 +117,7 @@ public class PurpurWorldConfig { +@@ -117,6 +118,7 @@ public class PurpurWorldConfig { tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); diff --git a/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch index 6efcd7c2a..51ce5e278 100644 --- a/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch @@ -289,10 +289,10 @@ index 2867e841e73a3edfdeb83af9d96e0d0cd4116a68..8613008090a9d7cf5cd7c2a598f2c725 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd001f91921ca908c1bc426c10640eaff25ad178..6b22d0c7787dd9c866d27debc1e56795473d0140 100644 +index e4bba9ac3a8b1f5b454a4907700a520ae76456c4..88fae3bed78da308a047aec1347d13017ebfd933 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -288,6 +288,35 @@ public class PurpurWorldConfig { +@@ -289,6 +289,35 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } diff --git a/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 0244a70d1..c26da115c 100644 --- a/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -46,7 +46,7 @@ index 54028f6c708e78e71b6db84898b9a6b30759023c..02c8fd96d11e3a27b5fddb27d65fddff this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 26ba3700d7c6f2502ab8fa8698430e7bbd2572dd..8fe5ce2242b136f930584fdf6b5fcf27030f248b 100644 +index c6ecf05dedeef70fb4aad55c6c8455fb7b69ab46..f2ff721fd7d1124e72f8cea4141769fb37f97b16 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -149,7 +149,19 @@ public class Zombie extends Monster { @@ -71,10 +71,10 @@ index 26ba3700d7c6f2502ab8fa8698430e7bbd2572dd..8fe5ce2242b136f930584fdf6b5fcf27 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b22d0c7787dd9c866d27debc1e56795473d0140..a5d6ff6c7986088e653fcdfe0305ae144c87a4c1 100644 +index 88fae3bed78da308a047aec1347d13017ebfd933..04a9739ef2339cc0f886162401b90a0ed337e431 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1639,6 +1639,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1660,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index 6b22d0c7787dd9c866d27debc1e56795473d0140..a5d6ff6c7986088e653fcdfe0305ae14 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1652,6 +1653,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1674,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0102-Flying-squids-Oh-my.patch b/patches/server/0102-Flying-squids-Oh-my.patch index bc37a9dd3..094a94b77 100644 --- a/patches/server/0102-Flying-squids-Oh-my.patch +++ b/patches/server/0102-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index 55f94d28a536f5ceda00831e1b22c8db31c07c2f..d4e1e0117ce9105452679d64779086b8 float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5d6ff6c7986088e653fcdfe0305ae144c87a4c1..366181b16bddb33cf0a447f086b3d7a2039b170a 100644 +index 04a9739ef2339cc0f886162401b90a0ed337e431..99f99096c773ddc14f4abe5a17ebe4c88d298c8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -810,9 +810,11 @@ public class PurpurWorldConfig { +@@ -811,9 +811,11 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public double glowSquidMaxHealth = 10.0D; @@ -73,7 +73,7 @@ index a5d6ff6c7986088e653fcdfe0305ae144c87a4c1..366181b16bddb33cf0a447f086b3d7a2 } public boolean goatRidable = false; -@@ -1368,6 +1370,7 @@ public class PurpurWorldConfig { +@@ -1389,6 +1391,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -81,7 +81,7 @@ index a5d6ff6c7986088e653fcdfe0305ae144c87a4c1..366181b16bddb33cf0a447f086b3d7a2 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1378,6 +1381,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1402,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0103-Infinity-bow-settings.patch b/patches/server/0103-Infinity-bow-settings.patch index e4b97c1af..553b9edcf 100644 --- a/patches/server/0103-Infinity-bow-settings.patch +++ b/patches/server/0103-Infinity-bow-settings.patch @@ -27,10 +27,10 @@ index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 366181b16bddb33cf0a447f086b3d7a2039b170a..8e3e8db4c77bdc15a7f77c5c981e338c0cd0dd39 100644 +index 99f99096c773ddc14f4abe5a17ebe4c88d298c8d..de8d17bc900190b20e56e9002b936ec0ca16bd26 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -138,6 +138,17 @@ public class PurpurWorldConfig { +@@ -139,6 +139,17 @@ public class PurpurWorldConfig { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } diff --git a/patches/server/0104-Stonecutter-damage.patch b/patches/server/0104-Stonecutter-damage.patch index 99cd825e9..f8bdc2fb9 100644 --- a/patches/server/0104-Stonecutter-damage.patch +++ b/patches/server/0104-Stonecutter-damage.patch @@ -95,7 +95,7 @@ index b6f2bae38781f16c46ad515f34d829074b58e70d..e1753ed5f7f72a4861666cd7929ab52b throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.msgId)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f0051835d259ecfd0300653645c3942749a31937..161dc422a331d02132d5158efeef8ac2150a4d0f 100644 +index ed60935d58e8332ca9ccec48bd928373c3dc2091..8428da51def80e0b4e941362dd46b5d1a31ed690 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -176,6 +176,11 @@ public class PurpurConfig { @@ -111,10 +111,10 @@ index f0051835d259ecfd0300653645c3942749a31937..161dc422a331d02132d5158efeef8ac2 private static void serverModName() { serverModName = getString("settings.server-mod-name", serverModName); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e3e8db4c77bdc15a7f77c5c981e338c0cd0dd39..69cf9d1f726295f54a28f328a1fb4cb1d97d6824 100644 +index de8d17bc900190b20e56e9002b936ec0ca16bd26..77d66761a1f166775168ffd57c021582bbe92635 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -430,6 +430,11 @@ public class PurpurWorldConfig { +@@ -431,6 +431,11 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0105-Configurable-daylight-cycle.patch b/patches/server/0105-Configurable-daylight-cycle.patch index dcd37b2fc..dd1c6d8d9 100644 --- a/patches/server/0105-Configurable-daylight-cycle.patch +++ b/patches/server/0105-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 689ad22925b2561f7c8db961743eb1f821dbb25f..fa3c960992cc240161817e54659d83fe public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time % 192000; // Paper - fix guardian beam diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6a1863e815d3330d4619309630e447f601ea0136..dcb496f6af114ad5a41bfa3f3072ba48d9f2e8e9 100644 +index 095d855c20622a74daf83e90a230a50c1a3669cf..884a6b777102877ab9af50f6f1df39213b672fe7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1585,7 +1585,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ba4b0d440a3de90a7e90a4a5331d2f48e42d962..640dad1e45ba88862efa60505171f9353e968acb 100644 +index dd8914c2501b0bbbe92004fc3120c73257fab478..ff5a726ab8735975e6c285a2dce9df6576908ac9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -400,6 +400,17 @@ public class PurpurWorldConfig { +@@ -401,6 +401,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 61736c160..1806a1d02 100644 --- a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index e102795a2464eac028b30977be8d99ceca2339f7..f55a32c7c4e260b41a36b9fc3be01edb return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 640dad1e45ba88862efa60505171f9353e968acb..9509af3328e25ba221f66ddde94f7b1f71f6bb06 100644 +index ff5a726ab8735975e6c285a2dce9df6576908ac9..9e7544bd441041837df2327c363882b85b0ccc03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,8 +396,10 @@ public class PurpurWorldConfig { +@@ -397,8 +397,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch index 0492f7b50..7cbc4ea89 100644 --- a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch @@ -95,10 +95,10 @@ index e5e4fa1865cdd903a4c543b79b4d30a2f067742d..dfcb5d9fe165852bffe2a676f134ba06 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9509af3328e25ba221f66ddde94f7b1f71f6bb06..6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa 100644 +index 9e7544bd441041837df2327c363882b85b0ccc03..4a3acf6e9159ee6ef095a93c1f67c028c7ae8356 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -108,6 +108,7 @@ public class PurpurWorldConfig { +@@ -109,6 +109,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -106,7 +106,7 @@ index 9509af3328e25ba221f66ddde94f7b1f71f6bb06..6455daf0495914d8cbfcb60d8d7e2d2a private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -118,6 +119,7 @@ public class PurpurWorldConfig { +@@ -119,6 +120,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/server/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0111-Make-entity-breeding-times-configurable.patch index 11a19f836..a76b8c3e3 100644 --- a/patches/server/0111-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0111-Make-entity-breeding-times-configurable.patch @@ -172,7 +172,7 @@ index ccb18fea0e03d08405b0fff5e9df5025f02cebf7..4bf4403cb65b8e1fee9c253c7932ad83 public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 1a4434432516f8b7f2bbbc64f9554c340530ce89..a3f04f6b4df1c7d8759addecaa4ea16e08b456f5 100644 +index 45a92265ac626ae401342e6a21b0ba271ba5b371..615784e3b53d43e2167d91bb41c26079998d7f47 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -132,6 +132,11 @@ public class Panda extends Animal { @@ -300,7 +300,7 @@ index 277637692e504cca04bfca7683c052295c2c5a86..9f23279f7e3aedb758082c672656d5e4 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index a2b2d3f670cd200d7fba40f8227964ef95c5b455..4020f631f4f02834550a60630d5d429004d71269 100644 +index 1b66aea5871ccf83ea39d3f52f0f6da72cd785b6..1ac7aa1f49a9740b5e20a5452410a6557ce98eda 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -111,6 +111,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { @@ -316,7 +316,7 @@ index a2b2d3f670cd200d7fba40f8227964ef95c5b455..4020f631f4f02834550a60630d5d4290 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 21aca411c458a1e80cdd6e97961f9a5c572854a9..b72756afc34afa3f4f8ad838eba3a24faf7e46d0 100644 +index 39a7ea2854090d8505a9bc888313d84645595e23..33e7abf0b02695d191a9b827dc82f432c3381167 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -89,6 +89,11 @@ public class Goat extends Animal { @@ -460,7 +460,7 @@ index e65eaf393b118e38fde8f525ac9b1d6e6f98e729..74d11bf608ff26093d7995a09a463cac public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 3ec9b8343cf80ceea8503ad78863a4b539c6ef6b..c536b0f0d0ebe5b6b6409972eb711f84fc42afb7 100644 +index 32836a16b18f4bb168d5a3d292765be33b998280..7013ae9b2649b98471902e37747b80812e0a09e0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -82,6 +82,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -476,10 +476,10 @@ index 3ec9b8343cf80ceea8503ad78863a4b539c6ef6b..c536b0f0d0ebe5b6b6409972eb711f84 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c24d6c50b 100644 +index 4a3acf6e9159ee6ef095a93c1f67c028c7ae8356..5188492e3cedd85aa891911fd30b0a30fc98b318 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -484,9 +484,11 @@ public class PurpurWorldConfig { +@@ -485,9 +485,11 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; @@ -491,7 +491,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean batRidable = false; -@@ -516,6 +518,7 @@ public class PurpurWorldConfig { +@@ -517,6 +519,7 @@ public class PurpurWorldConfig { public boolean beeRidableInWater = false; public double beeMaxY = 256D; public double beeMaxHealth = 10.0D; @@ -499,7 +499,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -526,6 +529,7 @@ public class PurpurWorldConfig { +@@ -527,6 +530,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -507,7 +507,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean blazeRidable = false; -@@ -550,6 +554,7 @@ public class PurpurWorldConfig { +@@ -551,6 +555,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -515,7 +515,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -562,6 +567,7 @@ public class PurpurWorldConfig { +@@ -563,6 +568,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -523,7 +523,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean caveSpiderRidable = false; -@@ -582,6 +588,7 @@ public class PurpurWorldConfig { +@@ -583,6 +589,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -531,7 +531,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -592,6 +599,7 @@ public class PurpurWorldConfig { +@@ -593,6 +600,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -539,7 +539,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean codRidable = false; -@@ -610,6 +618,7 @@ public class PurpurWorldConfig { +@@ -611,6 +619,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -547,7 +547,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -620,6 +629,7 @@ public class PurpurWorldConfig { +@@ -621,6 +630,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -555,7 +555,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean creeperRidable = false; -@@ -667,6 +677,7 @@ public class PurpurWorldConfig { +@@ -668,6 +678,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -563,7 +563,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -682,6 +693,7 @@ public class PurpurWorldConfig { +@@ -683,6 +694,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -571,7 +571,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean drownedRidable = false; -@@ -788,6 +800,7 @@ public class PurpurWorldConfig { +@@ -789,6 +801,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -579,7 +579,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -798,6 +811,7 @@ public class PurpurWorldConfig { +@@ -799,6 +812,7 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -587,7 +587,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean ghastRidable = false; -@@ -858,10 +872,12 @@ public class PurpurWorldConfig { +@@ -859,10 +873,12 @@ public class PurpurWorldConfig { public boolean goatRidable = false; public boolean goatRidableInWater = false; public double goatMaxHealth = 10.0D; @@ -600,7 +600,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean guardianRidable = false; -@@ -879,6 +895,7 @@ public class PurpurWorldConfig { +@@ -880,6 +896,7 @@ public class PurpurWorldConfig { public boolean hoglinRidable = false; public boolean hoglinRidableInWater = false; public double hoglinMaxHealth = 40.0D; @@ -608,7 +608,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -888,6 +905,7 @@ public class PurpurWorldConfig { +@@ -889,6 +906,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -616,7 +616,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean horseRidableInWater = false; -@@ -897,6 +915,7 @@ public class PurpurWorldConfig { +@@ -898,6 +916,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -624,7 +624,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -912,6 +931,7 @@ public class PurpurWorldConfig { +@@ -913,6 +932,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -632,7 +632,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean huskRidable = false; -@@ -982,6 +1002,7 @@ public class PurpurWorldConfig { +@@ -983,6 +1003,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -640,7 +640,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -998,6 +1019,7 @@ public class PurpurWorldConfig { +@@ -999,6 +1020,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -648,7 +648,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean magmaCubeRidable = false; -@@ -1017,6 +1039,7 @@ public class PurpurWorldConfig { +@@ -1024,6 +1046,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidable = false; public boolean mooshroomRidableInWater = false; public double mooshroomMaxHealth = 10.0D; @@ -656,7 +656,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1026,6 +1049,7 @@ public class PurpurWorldConfig { +@@ -1033,6 +1056,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -664,7 +664,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean muleRidableInWater = false; -@@ -1035,6 +1059,7 @@ public class PurpurWorldConfig { +@@ -1042,6 +1066,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -672,7 +672,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1050,11 +1075,13 @@ public class PurpurWorldConfig { +@@ -1057,11 +1082,13 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -686,7 +686,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1064,11 +1091,13 @@ public class PurpurWorldConfig { +@@ -1071,11 +1098,13 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -700,7 +700,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1078,6 +1107,7 @@ public class PurpurWorldConfig { +@@ -1085,6 +1114,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -708,7 +708,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean parrotRidable = false; -@@ -1158,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1205,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -716,7 +716,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1168,6 +1199,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1216,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -724,7 +724,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean piglinRidable = false; -@@ -1217,6 +1249,7 @@ public class PurpurWorldConfig { +@@ -1234,6 +1266,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -732,7 +732,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1229,6 +1262,7 @@ public class PurpurWorldConfig { +@@ -1246,6 +1279,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -740,7 +740,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean pufferfishRidable = false; -@@ -1248,6 +1282,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1299,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -748,7 +748,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1259,6 +1294,7 @@ public class PurpurWorldConfig { +@@ -1276,6 +1311,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -756,7 +756,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean ravagerRidable = false; -@@ -1290,6 +1326,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1343,7 @@ public class PurpurWorldConfig { public boolean sheepRidable = false; public boolean sheepRidableInWater = false; public double sheepMaxHealth = 8.0D; @@ -764,7 +764,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1299,6 +1336,7 @@ public class PurpurWorldConfig { +@@ -1316,6 +1353,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -772,7 +772,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean shulkerRidable = false; -@@ -1453,6 +1491,7 @@ public class PurpurWorldConfig { +@@ -1474,6 +1512,7 @@ public class PurpurWorldConfig { public boolean striderRidable = false; public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; @@ -780,7 +780,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1462,6 +1501,7 @@ public class PurpurWorldConfig { +@@ -1483,6 +1522,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -788,7 +788,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean traderLlamaRidable = false; -@@ -1472,6 +1512,7 @@ public class PurpurWorldConfig { +@@ -1493,6 +1533,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -796,7 +796,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1488,6 +1529,7 @@ public class PurpurWorldConfig { +@@ -1509,6 +1550,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -804,7 +804,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean tropicalFishRidable = false; -@@ -1505,6 +1547,7 @@ public class PurpurWorldConfig { +@@ -1526,6 +1568,7 @@ public class PurpurWorldConfig { public boolean turtleRidable = false; public boolean turtleRidableInWater = false; public double turtleMaxHealth = 30.0D; @@ -812,7 +812,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1514,6 +1557,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1578,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -820,7 +820,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean vexRidable = false; -@@ -1542,6 +1586,7 @@ public class PurpurWorldConfig { +@@ -1563,6 +1607,7 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; @@ -828,7 +828,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1558,6 +1603,7 @@ public class PurpurWorldConfig { +@@ -1579,6 +1624,7 @@ public class PurpurWorldConfig { villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -836,7 +836,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c } public boolean vindicatorRidable = false; -@@ -1649,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1670,6 +1716,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -844,7 +844,7 @@ index 6455daf0495914d8cbfcb60d8d7e2d2a2926a0aa..de65734d13cedf5753a0560315e0f83c private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1658,6 +1705,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1726,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch index 2952258b4..c4910c236 100644 --- a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -142,10 +142,10 @@ index 0284201b0bb0f5c9a4a2393cf0d83e8e21262df3..1f46a2be362ed5f60a7ca75916fe7bd4 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index de65734d13cedf5753a0560315e0f83c24d6c50b..6ec9bb36d3dcf175b90342f46d49a3c3ac30fb0c 100644 +index 5188492e3cedd85aa891911fd30b0a30fc98b318..f0ec5498b5a814f644cb105dc3e6ec927d0dffe4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -95,8 +95,10 @@ public class PurpurWorldConfig { +@@ -96,8 +96,10 @@ public class PurpurWorldConfig { } public float armorstandStepHeight = 0.0F; @@ -156,7 +156,7 @@ index de65734d13cedf5753a0560315e0f83c24d6c50b..6ec9bb36d3dcf175b90342f46d49a3c3 } public boolean useBetterMending = false; -@@ -104,6 +106,7 @@ public class PurpurWorldConfig { +@@ -105,6 +107,7 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; @@ -164,7 +164,7 @@ index de65734d13cedf5753a0560315e0f83c24d6c50b..6ec9bb36d3dcf175b90342f46d49a3c3 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -115,6 +118,7 @@ public class PurpurWorldConfig { +@@ -116,6 +119,7 @@ public class PurpurWorldConfig { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index a79e3f4e0..72271de10 100644 --- a/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,10 +17,10 @@ index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d834155 ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ec9bb36d3dcf175b90342f46d49a3c3ac30fb0c..e65f8580dbd2112f7fdd2c9e66808f04afb073e2 100644 +index f0ec5498b5a814f644cb105dc3e6ec927d0dffe4..1dfd19712d883935dc59123d1b2468ed42453152 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,9 +96,11 @@ public class PurpurWorldConfig { +@@ -97,9 +97,11 @@ public class PurpurWorldConfig { public float armorstandStepHeight = 0.0F; public boolean armorstandSetNameVisible = false; diff --git a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 838c0e772..7423cf6bd 100644 --- a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 37fe7d448ae40e67cc8c7c1856df3c8ac276f0be..3945038b07393cd4692b340f32a98840 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e65f8580dbd2112f7fdd2c9e66808f04afb073e2..928d2a647236ad46f2c30280d4ed6e04ea552f65 100644 +index 1dfd19712d883935dc59123d1b2468ed42453152..b2c3bc12d5d0f4342a684bc14d5b00bcd309716d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -762,6 +762,7 @@ public class PurpurWorldConfig { +@@ -763,6 +763,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = false; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index e65f8580dbd2112f7fdd2c9e66808f04afb073e2..928d2a647236ad46f2c30280d4ed6e04 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -772,6 +773,7 @@ public class PurpurWorldConfig { +@@ -773,6 +774,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0115-Add-configurable-snowball-damage.patch b/patches/server/0115-Add-configurable-snowball-damage.patch index 5167257c4..517df10ee 100644 --- a/patches/server/0115-Add-configurable-snowball-damage.patch +++ b/patches/server/0115-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index ed2f039c4042861bcfa2e41d8281eefd37daa9fa..d5d84893c77b4e60a19032d765d76bfd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 928d2a647236ad46f2c30280d4ed6e04ea552f65..d262ce0d56d03a12c2eddc054a63bef42fe2c140 100644 +index b2c3bc12d5d0f4342a684bc14d5b00bcd309716d..cafa9168b688ba141b96ba0a243048b5a00841cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -314,6 +314,11 @@ public class PurpurWorldConfig { +@@ -315,6 +315,11 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } diff --git a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch index 4a9dab605..1e78e097f 100644 --- a/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0116-Changeable-Mob-Left-Handed-Chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 6f4396ab99bf87560544e3eb7f4e8711595af2ae..a3b2d756df150e7be20983fa865b0743de4c91e7 100644 +index 1ef0de7544f26faf69dc0395da8e09f9514a4aff..0e7fcda7cd4d9008ba3aeb15a50301b8dcb8ba24 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1231,7 +1231,7 @@ public abstract class Mob extends LivingEntity { @@ -18,10 +18,10 @@ index 6f4396ab99bf87560544e3eb7f4e8711595af2ae..a3b2d756df150e7be20983fa865b0743 } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d262ce0d56d03a12c2eddc054a63bef42fe2c140..5679ea7fc6ae18b63f63d32ac91043ae12d897ba 100644 +index cafa9168b688ba141b96ba0a243048b5a00841cd..2e177ec703bda4375d4c8d59b410fb1842b679d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -149,8 +149,10 @@ public class PurpurWorldConfig { +@@ -150,8 +150,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0117-Add-boat-fall-damage-config.patch b/patches/server/0117-Add-boat-fall-damage-config.patch index 88c154b31..63dcdf635 100644 --- a/patches/server/0117-Add-boat-fall-damage-config.patch +++ b/patches/server/0117-Add-boat-fall-damage-config.patch @@ -27,10 +27,10 @@ index 295658d4b479e8a3e825f0b5ce5dfc2c7c55a0fe..dfe547b7a2caa2ecfdddef9b9a49be40 if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5679ea7fc6ae18b63f63d32ac91043ae12d897ba..69b9254f7f9d76e6d077081c7351fcb622f7c435 100644 +index 2e177ec703bda4375d4c8d59b410fb1842b679d9..16b8fa1509f542c715ba18d2966b36afd0ce4b25 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -105,6 +105,7 @@ public class PurpurWorldConfig { +@@ -106,6 +106,7 @@ public class PurpurWorldConfig { public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; @@ -38,7 +38,7 @@ index 5679ea7fc6ae18b63f63d32ac91043ae12d897ba..69b9254f7f9d76e6d077081c7351fcb6 public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; -@@ -117,6 +118,7 @@ public class PurpurWorldConfig { +@@ -118,6 +119,7 @@ public class PurpurWorldConfig { private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); diff --git a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch index cf5c94985..00141d8cb 100644 --- a/patches/server/0118-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0118-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index a9c1b07f23c604d9364ccdee9478baf137af0816..10d68856c98b705158fe90623ef2b9ad this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 69b9254f7f9d76e6d077081c7351fcb622f7c435..b29eec4e4450d6943eeecbb6256be6f3a1b35763 100644 +index 16b8fa1509f542c715ba18d2966b36afd0ce4b25..066f7f6d51141d60e399d18cfc00a0693c577f7d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1445,6 +1445,10 @@ public class PurpurWorldConfig { +@@ -1466,6 +1466,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 69b9254f7f9d76e6d077081c7351fcb622f7c435..b29eec4e4450d6943eeecbb6256be6f3 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1457,6 +1461,10 @@ public class PurpurWorldConfig { +@@ -1478,6 +1482,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index adaead0e9..877017841 100644 --- a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -183,10 +183,10 @@ index 901fc6520d58a5fa5f2cf1b4fa78fec6008aa409..9050cd25663c71197c597aac0ab2e612 public static final VillagerProfession FISHERMAN = register("fisherman", PoiType.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiType.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b29eec4e4450d6943eeecbb6256be6f3a1b35763..a7fa7b522996ffe19368a15c8d158c444da1e55d 100644 +index 066f7f6d51141d60e399d18cfc00a0693c577f7d..0678c7a779114dbac0036d55f179bca7de4e470a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1612,6 +1612,8 @@ public class PurpurWorldConfig { +@@ -1633,6 +1633,8 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -195,7 +195,7 @@ index b29eec4e4450d6943eeecbb6256be6f3a1b35763..a7fa7b522996ffe19368a15c8d158c44 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1629,6 +1631,8 @@ public class PurpurWorldConfig { +@@ -1650,6 +1652,8 @@ public class PurpurWorldConfig { villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 864fff9dd..f32285db9 100644 --- a/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 76f1bbec2b8ebe037de65ee5ec718e17a6081c13..f8b742ee8e637edd8e8b05aff2fcc7a7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7fa7b522996ffe19368a15c8d158c444da1e55d..65baf4aafad765b9d8d053d024d604f5b6ff724a 100644 +index 0678c7a779114dbac0036d55f179bca7de4e470a..f43bcc77b36bcb1af5fff7f96bceac06599b0f4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1831,6 +1831,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1852,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index a7fa7b522996ffe19368a15c8d158c444da1e55d..65baf4aafad765b9d8d053d024d604f5 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1844,5 +1845,6 @@ public class PurpurWorldConfig { +@@ -1865,5 +1866,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch index 3d2bfedcc..fcfd0f607 100644 --- a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -222,10 +222,10 @@ index f856b42201c17f8da21251e54fcf052336916e70..ac0803d42be2f36a2f40487ee31413d0 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65baf4aafad765b9d8d053d024d604f5b6ff724a..4dd081359254913c4ffd62e92f6621ee8b3074a0 100644 +index f43bcc77b36bcb1af5fff7f96bceac06599b0f4e..371aa602dc35eab9e09816130e5e0a24bf899a82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1724,6 +1724,8 @@ public class PurpurWorldConfig { +@@ -1745,6 +1745,8 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -234,7 +234,7 @@ index 65baf4aafad765b9d8d053d024d604f5b6ff724a..4dd081359254913c4ffd62e92f6621ee public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1734,6 +1736,8 @@ public class PurpurWorldConfig { +@@ -1755,6 +1757,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0124-Configurable-default-collar-color.patch b/patches/server/0124-Configurable-default-collar-color.patch index 077f6b788..537efba98 100644 --- a/patches/server/0124-Configurable-default-collar-color.patch +++ b/patches/server/0124-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index 38c69ddde8a54482a1de60387bace297869c47f3..20e0e74d7e43f436172ca7b4cb8b613b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4dd081359254913c4ffd62e92f6621ee8b3074a0..8f5d38ce4bbcfa36e98c6d7b5720f82d94ed0fba 100644 +index 371aa602dc35eab9e09816130e5e0a24bf899a82..1bf798e4fb771cb1dfe0c001ebf618bd28d55df2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -565,6 +565,7 @@ public class PurpurWorldConfig { +@@ -566,6 +566,7 @@ public class PurpurWorldConfig { public boolean catRidable = false; public boolean catRidableInWater = false; @@ -54,7 +54,7 @@ index 4dd081359254913c4ffd62e92f6621ee8b3074a0..8f5d38ce4bbcfa36e98c6d7b5720f82d public double catMaxHealth = 10.0D; public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; -@@ -578,6 +579,11 @@ public class PurpurWorldConfig { +@@ -579,6 +580,11 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max-health", null); set("mobs.cat.attributes.max_health", oldValue); } @@ -66,7 +66,7 @@ index 4dd081359254913c4ffd62e92f6621ee8b3074a0..8f5d38ce4bbcfa36e98c6d7b5720f82d catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); -@@ -1724,6 +1730,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1751,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 4dd081359254913c4ffd62e92f6621ee8b3074a0..8f5d38ce4bbcfa36e98c6d7b5720f82d public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1736,6 +1743,11 @@ public class PurpurWorldConfig { +@@ -1757,6 +1764,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0125-Phantom-flames-on-swoop.patch b/patches/server/0125-Phantom-flames-on-swoop.patch index e81e5f862..a5bd5885b 100644 --- a/patches/server/0125-Phantom-flames-on-swoop.patch +++ b/patches/server/0125-Phantom-flames-on-swoop.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantom flames on swoop diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 284532bfe697d288529eacbad0fcfcb6a3680446..97e3e25263e1cea87d0b420da05271b83bc29164 100644 +index 72a790e6aba656e8817a84d2c729ce722e9a43ef..130b7e356b5aba604eaaaac2d2898e13359fd6fc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -226,6 +226,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -239,6 +239,7 @@ public class Phantom extends FlyingMob implements Enemy { this.level.addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D); } @@ -17,22 +17,22 @@ index 284532bfe697d288529eacbad0fcfcb6a3680446..97e3e25263e1cea87d0b420da05271b8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f5d38ce4bbcfa36e98c6d7b5720f82d94ed0fba..a8ef326a9616ce9ff16c8265aeb4b81b5f015e81 100644 +index 1bf798e4fb771cb1dfe0c001ebf618bd28d55df2..9d879101a072c5c02ff874ad18483f810c42e353 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1155,6 +1155,7 @@ public class PurpurWorldConfig { - public float phantomFlameDamage = 1.0F; - public int phantomFlameFireTime = 8; - public boolean phantomAllowGriefing = false; +@@ -1184,6 +1184,7 @@ public class PurpurWorldConfig { + public int phantomBurnInLight = 0; + public boolean phantomIgnorePlayersWithTorch = false; + public boolean phantomBurnInDaylight = true; + public boolean phantomFlamesOnSwoop = false; - public double phantomMaxHealth = 20.0D; - public double phantomAttackedByCrystalRadius = 0.0D; - public float phantomAttackedByCrystalDamage = 1.0F; -@@ -1181,6 +1182,7 @@ public class PurpurWorldConfig { - phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage); - phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime); - phantomAllowGriefing = getBoolean("mobs.phantom.allow-griefing", phantomAllowGriefing); + private void phantomSettings() { + phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); + phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); +@@ -1222,6 +1223,7 @@ public class PurpurWorldConfig { + phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); + phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); + phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); + phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); - if (PurpurConfig.version < 10) { - double oldValue = getDouble("mobs.phantom.attributes.max-health", phantomMaxHealth); - set("mobs.phantom.attributes.max-health", null); + } + + public boolean pigRidable = false; diff --git a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 6f74ebcd0..89849a527 100644 --- a/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index db726697b00afdee6078849fd224263483349912..c808664a67a9604e40ab388c6d0e6ac3 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a8ef326a9616ce9ff16c8265aeb4b81b5f015e81..8f4ff8bc8466263aaac5811572ce30f282084855 100644 +index 9d879101a072c5c02ff874ad18483f810c42e353..8adefc693683c5870abb5d0f2f63b5391d7efb6d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -405,6 +405,11 @@ public class PurpurWorldConfig { +@@ -406,6 +406,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0128-Striders-give-saddle-back.patch b/patches/server/0128-Striders-give-saddle-back.patch index 216f6cb48..dfecee5e1 100644 --- a/patches/server/0128-Striders-give-saddle-back.patch +++ b/patches/server/0128-Striders-give-saddle-back.patch @@ -28,10 +28,10 @@ index 74d11bf608ff26093d7995a09a463cac24304fa1..5902f0883ca0ad706801dc693bb3ac79 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f4ff8bc8466263aaac5811572ce30f282084855..41629af5929af46cbf164467289ae8f2e1de14ee 100644 +index 8adefc693683c5870abb5d0f2f63b5391d7efb6d..332025053dd547e46c9d1f59114bea989e54bb3b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1530,6 +1530,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1551,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -39,7 +39,7 @@ index 8f4ff8bc8466263aaac5811572ce30f282084855..41629af5929af46cbf164467289ae8f2 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1540,6 +1541,7 @@ public class PurpurWorldConfig { +@@ -1561,6 +1562,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch index e44743a13..bc2251916 100644 --- a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 7518b7f7378eba01d12224db6264b6bcc1254432..b1ca8265d2104168b64e560634f319c72103da55 100644 +index ad41bfb05122086aafc290c2b816a28bfc7d8e7e..9716110e910ae3d73be54333050214cd53a885d3 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -357,6 +357,16 @@ public abstract class Player extends LivingEntity { @@ -26,10 +26,10 @@ index 7518b7f7378eba01d12224db6264b6bcc1254432..b1ca8265d2104168b64e560634f319c7 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41629af5929af46cbf164467289ae8f2e1de14ee..23b684830df37277dd35cedf5f415995e052eaf4 100644 +index 332025053dd547e46c9d1f59114bea989e54bb3b..b644eda947883d1f6d6be427d234a9e534f0061e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -288,6 +288,19 @@ public class PurpurWorldConfig { +@@ -289,6 +289,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch index 5d9569b76..1b6bb2ff0 100644 --- a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch @@ -393,10 +393,10 @@ index b942e7c85e6c8f9a7664d9e5bf93bcd79e0651f1..5b29f3fced5435e172dd69f6f4eb265e return true; // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0f4a0bd4b 100644 +index b644eda947883d1f6d6be427d234a9e534f0061e..53ae26c6713af64b1a04d2bd0ee5c0c10796fff4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -108,8 +108,11 @@ public class PurpurWorldConfig { +@@ -109,8 +109,11 @@ public class PurpurWorldConfig { public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; @@ -408,7 +408,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -121,8 +124,11 @@ public class PurpurWorldConfig { +@@ -122,8 +125,11 @@ public class PurpurWorldConfig { boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); @@ -420,7 +420,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); -@@ -430,9 +436,11 @@ public class PurpurWorldConfig { +@@ -431,9 +437,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -432,7 +432,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -459,6 +467,11 @@ public class PurpurWorldConfig { +@@ -460,6 +468,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -444,7 +444,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -493,10 +506,12 @@ public class PurpurWorldConfig { +@@ -494,10 +507,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -457,7 +457,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean waterInfinite = true; -@@ -676,6 +691,7 @@ public class PurpurWorldConfig { +@@ -677,6 +692,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -465,7 +465,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -687,6 +703,7 @@ public class PurpurWorldConfig { +@@ -688,6 +704,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -473,7 +473,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean dolphinRidable = false; -@@ -774,6 +791,7 @@ public class PurpurWorldConfig { +@@ -775,6 +792,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 256D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -481,7 +481,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -789,6 +807,7 @@ public class PurpurWorldConfig { +@@ -790,6 +808,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -489,7 +489,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean endermanRidable = false; -@@ -796,6 +815,7 @@ public class PurpurWorldConfig { +@@ -797,6 +816,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -497,7 +497,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -807,6 +827,7 @@ public class PurpurWorldConfig { +@@ -808,6 +828,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -505,7 +505,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean endermiteRidable = false; -@@ -826,6 +847,7 @@ public class PurpurWorldConfig { +@@ -827,6 +848,7 @@ public class PurpurWorldConfig { public boolean evokerRidable = false; public boolean evokerRidableInWater = false; public double evokerMaxHealth = 24.0D; @@ -513,7 +513,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -835,6 +857,7 @@ public class PurpurWorldConfig { +@@ -836,6 +858,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -521,7 +521,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean foxRidable = false; -@@ -842,6 +865,7 @@ public class PurpurWorldConfig { +@@ -843,6 +866,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -529,7 +529,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -853,6 +877,7 @@ public class PurpurWorldConfig { +@@ -854,6 +878,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -537,7 +537,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean ghastRidable = false; -@@ -1248,6 +1273,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1290,7 @@ public class PurpurWorldConfig { public boolean piglinRidable = false; public boolean piglinRidableInWater = false; public double piglinMaxHealth = 16.0D; @@ -545,7 +545,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1257,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1274,6 +1300,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -553,7 +553,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean piglinBruteRidable = false; -@@ -1276,6 +1303,7 @@ public class PurpurWorldConfig { +@@ -1293,6 +1320,7 @@ public class PurpurWorldConfig { public boolean pillagerRidable = false; public boolean pillagerRidableInWater = false; public double pillagerMaxHealth = 24.0D; @@ -561,7 +561,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1285,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1330,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -569,7 +569,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean polarBearRidable = false; -@@ -1326,6 +1355,7 @@ public class PurpurWorldConfig { +@@ -1343,6 +1372,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -577,7 +577,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1338,11 +1368,13 @@ public class PurpurWorldConfig { +@@ -1355,11 +1385,13 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -591,7 +591,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1352,6 +1384,7 @@ public class PurpurWorldConfig { +@@ -1369,6 +1401,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -599,7 +599,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean salmonRidable = false; -@@ -1370,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1387,6 +1420,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = false; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -607,7 +607,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1380,6 +1414,7 @@ public class PurpurWorldConfig { +@@ -1397,6 +1431,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -615,7 +615,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean shulkerRidable = false; -@@ -1399,6 +1434,7 @@ public class PurpurWorldConfig { +@@ -1416,6 +1451,7 @@ public class PurpurWorldConfig { public boolean silverfishRidable = false; public boolean silverfishRidableInWater = false; public double silverfishMaxHealth = 8.0D; @@ -623,7 +623,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1408,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1461,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -631,7 +631,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean skeletonRidable = false; -@@ -1475,6 +1512,7 @@ public class PurpurWorldConfig { +@@ -1496,6 +1533,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -639,7 +639,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1491,6 +1529,7 @@ public class PurpurWorldConfig { +@@ -1512,6 +1550,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -647,7 +647,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean squidRidable = false; -@@ -1642,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1663,6 +1702,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -655,7 +655,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1661,6 +1701,7 @@ public class PurpurWorldConfig { +@@ -1682,6 +1722,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -663,7 +663,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean vindicatorRidable = false; -@@ -1717,6 +1758,7 @@ public class PurpurWorldConfig { +@@ -1738,6 +1779,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -671,7 +671,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1733,6 +1775,7 @@ public class PurpurWorldConfig { +@@ -1754,6 +1796,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -679,7 +679,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 } public boolean witherSkeletonRidable = false; -@@ -1797,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1818,6 +1861,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -687,7 +687,7 @@ index 23b684830df37277dd35cedf5f415995e052eaf4..3875a19e5217e0752738d4d7ed52e7a0 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1811,6 +1855,7 @@ public class PurpurWorldConfig { +@@ -1832,6 +1876,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch index 047ba56b6..f65db40b8 100644 --- a/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,10 +22,10 @@ index 7dd423f6b92b7f27dd43e5ef3f4029a100a8cfa6..8d0a1da17c38118293d1f05849cdc999 org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, blockposition, data.getValue(NoteBlock.INSTRUMENT), data.getValue(NoteBlock.NOTE)); if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3875a19e5217e0752738d4d7ed52e7a0f4a0bd4b..6801237f445c9196c1a33bc8ff09d1181250aa65 100644 +index 53ae26c6713af64b1a04d2bd0ee5c0c10796fff4..a5957179e59175081e8338dd3d0894b412a625e1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -111,6 +111,7 @@ public class PurpurWorldConfig { +@@ -112,6 +112,7 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; public boolean milkCuresBadOmen = true; @@ -33,7 +33,7 @@ index 3875a19e5217e0752738d4d7ed52e7a0f4a0bd4b..6801237f445c9196c1a33bc8ff09d118 public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; -@@ -127,6 +128,7 @@ public class PurpurWorldConfig { +@@ -128,6 +129,7 @@ public class PurpurWorldConfig { entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch index 6057b8080..2d5f0bb93 100644 --- a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch @@ -108,10 +108,10 @@ index 5c5e76b39f941f3921f36e86fd993d0af24ee922..0efb32d028df885f03b95f80b5da46ae } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6801237f445c9196c1a33bc8ff09d1181250aa65..b8d83dbdcea2b042f5c0688ee52b9d06461a1993 100644 +index a5957179e59175081e8338dd3d0894b412a625e1..dc2d2fcd6ce44228833ffbb964d7378bf3185742 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -110,6 +110,7 @@ public class PurpurWorldConfig { +@@ -111,6 +111,7 @@ public class PurpurWorldConfig { public boolean entitiesCanUsePortals = true; public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; @@ -119,7 +119,7 @@ index 6801237f445c9196c1a33bc8ff09d1181250aa65..b8d83dbdcea2b042f5c0688ee52b9d06 public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; -@@ -127,6 +128,7 @@ public class PurpurWorldConfig { +@@ -128,6 +129,7 @@ public class PurpurWorldConfig { entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); diff --git a/patches/server/0135-Farmland-trampling-changes.patch b/patches/server/0135-Farmland-trampling-changes.patch index 9cf9bf7ed..b16aacda5 100644 --- a/patches/server/0135-Farmland-trampling-changes.patch +++ b/patches/server/0135-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 4c80e2a10715ce4d4442ea4636808d1e10025494..a750d9cfbb7ba9057004924cac2b5a81 if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b8d83dbdcea2b042f5c0688ee52b9d06461a1993..d3dbf71515ffca426e962e7466cd89b07d66ccc6 100644 +index dc2d2fcd6ce44228833ffbb964d7378bf3185742..d093c9526e56166ebdda515def2676a34623939c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -443,10 +443,16 @@ public class PurpurWorldConfig { +@@ -444,10 +444,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0136-Movement-options-for-armor-stands.patch b/patches/server/0136-Movement-options-for-armor-stands.patch index 5e4439361..5ab20407a 100644 --- a/patches/server/0136-Movement-options-for-armor-stands.patch +++ b/patches/server/0136-Movement-options-for-armor-stands.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 02a2496539813b1d34b9e5ccac0590e6b58c17b5..fcb640e531704b127efe820bb269e7bf9b95c605 100644 +index 29b27f0ce54ec8f72981d07d08ffacbe1aab60f8..0ddaa49281d4c47c8fd7d4d182d76caf9ee54898 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1615,7 +1615,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -66,10 +66,10 @@ index 50370dc8697569a4e5cf8ec3714d227a59357d64..e9e24435057cff9c0af758ca2aa822c3 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d3dbf71515ffca426e962e7466cd89b07d66ccc6..68ed6beaa74f9c29f2840e06713fc66e4e62ef32 100644 +index d093c9526e56166ebdda515def2676a34623939c..4b19470bcc56f46f3ff3b649ece52e0617b83a65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -97,10 +97,16 @@ public class PurpurWorldConfig { +@@ -98,10 +98,16 @@ public class PurpurWorldConfig { public float armorstandStepHeight = 0.0F; public boolean armorstandSetNameVisible = false; public boolean armorstandFixNametags = false; diff --git a/patches/server/0137-Fix-stuck-in-portals.patch b/patches/server/0137-Fix-stuck-in-portals.patch index 5770cbee9..f823f204c 100644 --- a/patches/server/0137-Fix-stuck-in-portals.patch +++ b/patches/server/0137-Fix-stuck-in-portals.patch @@ -17,7 +17,7 @@ index 951e45f7b17f6f903c99634177395464a1889c0f..d31ae3a1df1a457d7ae55bc82e9c870c // CraftBukkit end this.setLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fcb640e531704b127efe820bb269e7bf9b95c605..430a95752aa590d40a54fb96d7484b55a781a1b6 100644 +index 0ddaa49281d4c47c8fd7d4d182d76caf9ee54898..8746ed0546ec3f078030109c698f5053fda950c8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2740,12 +2740,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -37,10 +37,10 @@ index fcb640e531704b127efe820bb269e7bf9b95c605..430a95752aa590d40a54fb96d7484b55 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68ed6beaa74f9c29f2840e06713fc66e4e62ef32..9806ccd697981b9e41af8eede4209d72159a4d52 100644 +index 4b19470bcc56f46f3ff3b649ece52e0617b83a65..067a8d3bc2a1190f9f9c83b4a2b99400c1e63ac5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -328,6 +328,7 @@ public class PurpurWorldConfig { +@@ -329,6 +329,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -48,7 +48,7 @@ index 68ed6beaa74f9c29f2840e06713fc66e4e62ef32..9806ccd697981b9e41af8eede4209d72 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -345,6 +346,7 @@ public class PurpurWorldConfig { +@@ -346,6 +347,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch index c3aec6afa..0fee98467 100644 --- a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch @@ -197,7 +197,7 @@ index 4bf4403cb65b8e1fee9c253c7932ad839a99c92e..97d4caad92a2b54daff12e4909bc7b04 public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index a3f04f6b4df1c7d8759addecaa4ea16e08b456f5..6270c4bad2c4f4f2770bc2cc2688de5ddd18dae4 100644 +index 615784e3b53d43e2167d91bb41c26079998d7f47..3ac330e769689b55063c6b5e3ccc2e362f2a4c49 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -137,6 +137,11 @@ public class Panda extends Animal { @@ -780,12 +780,12 @@ index 4ed0fb155dfae60cee24dc0752fa525c90f2f442..322058dbb82888c70bf770bed58356dc @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 68abf045f0510abc45bdc2fd8c147f27c2fa784d..cd6b136960b2c37c6e6d56c4e5f7fd302e49e5e7 100644 +index cf69ac8710df2f01fed76389d53fb121a2319273..87a316e4ae92990800bc1b91ed44ce184b4cd933 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -52,6 +52,11 @@ public class MagmaCube extends Slime { - protected String getMaxHealthEquation() { - return level.purpurConfig.magmaCubeMaxHealth; +@@ -62,6 +62,11 @@ public class MagmaCube extends Slime { + protected java.util.Map getAttackDamageCache() { + return level.purpurConfig.magmaCubeAttackDamageCache; } + + @Override @@ -796,10 +796,10 @@ index 68abf045f0510abc45bdc2fd8c147f27c2fa784d..cd6b136960b2c37c6e6d56c4e5f7fd30 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 97e3e25263e1cea87d0b420da05271b83bc29164..05eba1970086a42b3609094a3d59119c9d178e74 100644 +index 130b7e356b5aba604eaaaac2d2898e13359fd6fc..843335bcbdfef0c705dd95beeef8b4f61063f028 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -136,6 +136,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -146,6 +146,11 @@ public class Phantom extends FlyingMob implements Enemy { public boolean isCirclingCrystal() { return crystalPosition != null; } @@ -892,12 +892,12 @@ index 9448bdd5026f35bba805dee19ceead5d76bda951..9350d4dd73db4227ab65452083d1cec7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 92a5dc8a26bb6177634e5f1afb37f12828c70ace..d49ba154d173aa7bf5a679b7bfcc55de851ea34b 100644 +index 296165ff7b1ac5c6690fb3cc195a3ae3e6115611..b81cc912b036d1da491bf685139d169cd6055067 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -125,6 +125,11 @@ public class Slime extends Mob implements Enemy { +@@ -132,6 +132,11 @@ public class Slime extends Mob implements Enemy { } - return maxHealth; + return value; } + + @Override @@ -1033,7 +1033,7 @@ index fe315ebb69773d243feb2fbda369fc6ff23d93c8..f96d891eeae384a210a7399a605d5d9c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 8fe5ce2242b136f930584fdf6b5fcf27030f248b..493f3fe736cef11531d345b076ca240b5feb6ff2 100644 +index f2ff721fd7d1124e72f8cea4141769fb37f97b16..e4ead1ced18f16715440c8562a89d7d359add98e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -131,6 +131,11 @@ public class Zombie extends Monster { @@ -1081,7 +1081,7 @@ index f8b742ee8e637edd8e8b05aff2fcc7a75afe959a..fd2828469badbc7936ea68c0bdd8d689 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 0cc680cdcbda6b5b5dfb08df8a2e52510cd5b854..6a41212b1fa2fe61177901dd64c77a92d7d502a4 100644 +index 7013ae9b2649b98471902e37747b80812e0a09e0..1e2dc76ace2e283a4ba7b81e299c7506e4b684d1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -87,6 +87,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1097,7 +1097,7 @@ index 0cc680cdcbda6b5b5dfb08df8a2e52510cd5b854..6a41212b1fa2fe61177901dd64c77a92 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index badf1fc1a5f5ca0086b45876171a18cad00896b7..89e4364c6c55b5fa0e34e90c87fc622583277c73 100644 +index 107afea31c75f11e82672def7300d277dec7af1d..8d85157acefb588091d96eaa0124049a7cfbe19c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -111,6 +111,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1161,10 +1161,10 @@ index c5dbb1c8210b71f7d9d91089cb139f65605573a8..e5b78c9d6fb326771d65ea9afd9da38c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83f780e8b2 100644 +index 067a8d3bc2a1190f9f9c83b4a2b99400c1e63ac5..f70f0407b1f43b9f21dfd9053da942eea17c9bba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -548,6 +548,7 @@ public class PurpurWorldConfig { +@@ -549,6 +549,7 @@ public class PurpurWorldConfig { useNightVisionWhenRiding = getBoolean("ridable-settings.use-night-vision", useNightVisionWhenRiding); } @@ -1172,7 +1172,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; -@@ -555,6 +556,7 @@ public class PurpurWorldConfig { +@@ -556,6 +557,7 @@ public class PurpurWorldConfig { axolotlRidable = getBoolean("mobs.axolotl.ridable", axolotlRidable); axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks); @@ -1180,7 +1180,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean batRidable = false; -@@ -568,6 +570,7 @@ public class PurpurWorldConfig { +@@ -569,6 +571,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1188,7 +1188,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -578,6 +581,7 @@ public class PurpurWorldConfig { +@@ -579,6 +582,7 @@ public class PurpurWorldConfig { set("mobs.bat.attributes.max_health", oldValue); } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); @@ -1196,7 +1196,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean beeRidable = false; -@@ -585,6 +589,7 @@ public class PurpurWorldConfig { +@@ -586,6 +590,7 @@ public class PurpurWorldConfig { public double beeMaxY = 256D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1204,7 +1204,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -596,12 +601,14 @@ public class PurpurWorldConfig { +@@ -597,12 +602,14 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1219,7 +1219,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -612,6 +619,7 @@ public class PurpurWorldConfig { +@@ -613,6 +620,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1227,7 +1227,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean catRidable = false; -@@ -622,6 +630,7 @@ public class PurpurWorldConfig { +@@ -623,6 +631,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -1235,7 +1235,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -640,11 +649,13 @@ public class PurpurWorldConfig { +@@ -641,11 +650,13 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -1249,7 +1249,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -654,6 +665,7 @@ public class PurpurWorldConfig { +@@ -655,6 +666,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1257,7 +1257,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean chickenRidable = false; -@@ -661,6 +673,7 @@ public class PurpurWorldConfig { +@@ -662,6 +674,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1265,7 +1265,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -672,10 +685,12 @@ public class PurpurWorldConfig { +@@ -673,10 +686,12 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1278,7 +1278,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); if (PurpurConfig.version < 10) { -@@ -684,6 +699,7 @@ public class PurpurWorldConfig { +@@ -685,6 +700,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1286,7 +1286,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean cowRidable = false; -@@ -691,6 +707,7 @@ public class PurpurWorldConfig { +@@ -692,6 +708,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1294,7 +1294,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -702,6 +719,7 @@ public class PurpurWorldConfig { +@@ -703,6 +720,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1302,7 +1302,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean creeperRidable = false; -@@ -710,6 +728,7 @@ public class PurpurWorldConfig { +@@ -711,6 +729,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1310,7 +1310,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -722,6 +741,7 @@ public class PurpurWorldConfig { +@@ -723,6 +742,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1318,7 +1318,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean dolphinRidable = false; -@@ -730,6 +750,7 @@ public class PurpurWorldConfig { +@@ -731,6 +751,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1326,7 +1326,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -742,6 +763,7 @@ public class PurpurWorldConfig { +@@ -743,6 +764,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1334,7 +1334,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean donkeyRidableInWater = false; -@@ -752,6 +774,7 @@ public class PurpurWorldConfig { +@@ -753,6 +775,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1342,7 +1342,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -768,6 +791,7 @@ public class PurpurWorldConfig { +@@ -769,6 +792,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1350,7 +1350,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean drownedRidable = false; -@@ -777,6 +801,7 @@ public class PurpurWorldConfig { +@@ -778,6 +802,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1358,7 +1358,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -790,10 +815,12 @@ public class PurpurWorldConfig { +@@ -791,10 +816,12 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1371,7 +1371,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); if (PurpurConfig.version < 10) { -@@ -802,6 +829,7 @@ public class PurpurWorldConfig { +@@ -803,6 +830,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1379,7 +1379,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean enderDragonRidable = false; -@@ -810,6 +838,7 @@ public class PurpurWorldConfig { +@@ -811,6 +839,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1387,7 +1387,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -826,6 +855,7 @@ public class PurpurWorldConfig { +@@ -827,6 +856,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1395,7 +1395,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean endermanRidable = false; -@@ -834,6 +864,7 @@ public class PurpurWorldConfig { +@@ -835,6 +865,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1403,7 +1403,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -846,11 +877,13 @@ public class PurpurWorldConfig { +@@ -847,11 +878,13 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1417,7 +1417,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -860,12 +893,14 @@ public class PurpurWorldConfig { +@@ -861,12 +894,14 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1432,7 +1432,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -876,6 +911,7 @@ public class PurpurWorldConfig { +@@ -877,6 +912,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1440,7 +1440,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean foxRidable = false; -@@ -884,6 +920,7 @@ public class PurpurWorldConfig { +@@ -885,6 +921,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1448,7 +1448,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -896,12 +933,14 @@ public class PurpurWorldConfig { +@@ -897,12 +934,14 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1463,7 +1463,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -912,6 +951,7 @@ public class PurpurWorldConfig { +@@ -913,6 +952,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1471,7 +1471,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean giantRidable = false; -@@ -923,6 +963,7 @@ public class PurpurWorldConfig { +@@ -924,6 +964,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1479,7 +1479,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -942,30 +983,36 @@ public class PurpurWorldConfig { +@@ -943,30 +984,36 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1516,7 +1516,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); if (PurpurConfig.version < 10) { -@@ -974,12 +1021,14 @@ public class PurpurWorldConfig { +@@ -975,12 +1022,14 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1531,7 +1531,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -990,6 +1039,7 @@ public class PurpurWorldConfig { +@@ -991,6 +1040,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1539,7 +1539,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean horseRidableInWater = false; -@@ -1000,6 +1050,7 @@ public class PurpurWorldConfig { +@@ -1001,6 +1051,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1547,7 +1547,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1016,6 +1067,7 @@ public class PurpurWorldConfig { +@@ -1017,6 +1068,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1555,7 +1555,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean huskRidable = false; -@@ -1025,6 +1077,7 @@ public class PurpurWorldConfig { +@@ -1026,6 +1078,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1563,7 +1563,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1038,6 +1091,7 @@ public class PurpurWorldConfig { +@@ -1039,6 +1092,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1571,7 +1571,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean illusionerRidable = false; -@@ -1045,6 +1099,7 @@ public class PurpurWorldConfig { +@@ -1046,6 +1100,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1579,7 +1579,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1060,12 +1115,14 @@ public class PurpurWorldConfig { +@@ -1061,12 +1116,14 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1594,7 +1594,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1076,6 +1133,7 @@ public class PurpurWorldConfig { +@@ -1077,6 +1134,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1602,7 +1602,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean llamaRidable = false; -@@ -1087,6 +1145,7 @@ public class PurpurWorldConfig { +@@ -1088,6 +1146,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1610,7 +1610,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1104,11 +1163,13 @@ public class PurpurWorldConfig { +@@ -1105,6 +1164,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1618,16 +1618,18 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean magmaCubeRidable = false; - public boolean magmaCubeRidableInWater = false; - public String magmaCubeMaxHealth = "size * size"; +@@ -1113,6 +1173,7 @@ public class PurpurWorldConfig { + public String magmaCubeAttackDamage = "size"; + public Map magmaCubeMaxHealthCache = new HashMap<>(); + public Map magmaCubeAttackDamageCache = new HashMap<>(); + public boolean magmaCubeTakeDamageFromWater = false; private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1118,12 +1179,14 @@ public class PurpurWorldConfig { - set("mobs.magma_cube.attributes.max_health", oldValue); - } - magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max_health", magmaCubeMaxHealth); +@@ -1125,12 +1186,14 @@ public class PurpurWorldConfig { + magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); + magmaCubeMaxHealthCache.clear(); + magmaCubeAttackDamageCache.clear(); + magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); } @@ -1639,7 +1641,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1134,6 +1197,7 @@ public class PurpurWorldConfig { +@@ -1141,6 +1204,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1647,7 +1649,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean muleRidableInWater = false; -@@ -1144,6 +1208,7 @@ public class PurpurWorldConfig { +@@ -1151,6 +1215,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1655,7 +1657,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1160,12 +1225,14 @@ public class PurpurWorldConfig { +@@ -1167,12 +1232,14 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1670,7 +1672,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1176,12 +1243,14 @@ public class PurpurWorldConfig { +@@ -1183,12 +1250,14 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1685,7 +1687,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1192,12 +1261,14 @@ public class PurpurWorldConfig { +@@ -1199,12 +1268,14 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1700,7 +1702,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1208,6 +1279,7 @@ public class PurpurWorldConfig { +@@ -1215,6 +1286,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1708,23 +1710,23 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean phantomRidable = false; -@@ -1236,6 +1308,7 @@ public class PurpurWorldConfig { - public int phantomBurnInLight = 0; +@@ -1246,6 +1318,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; + public boolean phantomFlamesOnSwoop = false; + public boolean phantomTakeDamageFromWater = false; private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1268,6 +1341,7 @@ public class PurpurWorldConfig { - phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); +@@ -1285,6 +1358,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); + phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); + phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); } public boolean pigRidable = false; -@@ -1275,6 +1349,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1366,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1732,7 +1734,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1286,12 +1361,14 @@ public class PurpurWorldConfig { +@@ -1303,12 +1378,14 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1747,7 +1749,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1302,11 +1379,13 @@ public class PurpurWorldConfig { +@@ -1319,11 +1396,13 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1761,7 +1763,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1316,12 +1395,14 @@ public class PurpurWorldConfig { +@@ -1333,12 +1412,14 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1776,7 +1778,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1332,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1349,6 +1430,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1784,7 +1786,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean polarBearRidable = false; -@@ -1340,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1357,6 +1439,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1792,7 +1794,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1353,10 +1436,12 @@ public class PurpurWorldConfig { +@@ -1370,10 +1453,12 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1805,7 +1807,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); if (PurpurConfig.version < 10) { -@@ -1365,6 +1450,7 @@ public class PurpurWorldConfig { +@@ -1382,6 +1467,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1813,7 +1815,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean rabbitRidable = false; -@@ -1374,6 +1460,7 @@ public class PurpurWorldConfig { +@@ -1391,6 +1477,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1821,7 +1823,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1387,12 +1474,14 @@ public class PurpurWorldConfig { +@@ -1404,12 +1491,14 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1836,7 +1838,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1403,10 +1492,12 @@ public class PurpurWorldConfig { +@@ -1420,10 +1509,12 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1849,7 +1851,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); if (PurpurConfig.version < 10) { -@@ -1415,6 +1506,7 @@ public class PurpurWorldConfig { +@@ -1432,6 +1523,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1857,7 +1859,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean sheepRidable = false; -@@ -1422,6 +1514,7 @@ public class PurpurWorldConfig { +@@ -1439,6 +1531,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1865,7 +1867,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1433,11 +1526,13 @@ public class PurpurWorldConfig { +@@ -1450,11 +1543,13 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1879,7 +1881,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1447,12 +1542,14 @@ public class PurpurWorldConfig { +@@ -1464,12 +1559,14 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1894,7 +1896,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1463,11 +1560,13 @@ public class PurpurWorldConfig { +@@ -1480,11 +1577,13 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1908,7 +1910,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1477,6 +1576,7 @@ public class PurpurWorldConfig { +@@ -1494,6 +1593,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1916,7 +1918,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean skeletonHorseRidableInWater = true; -@@ -1487,6 +1587,7 @@ public class PurpurWorldConfig { +@@ -1504,6 +1604,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1924,7 +1926,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1502,12 +1603,14 @@ public class PurpurWorldConfig { +@@ -1519,6 +1620,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1932,22 +1934,23 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean slimeRidable = false; - public boolean slimeRidableInWater = false; - public String slimeMaxHealth = "size * size"; +@@ -1527,6 +1629,7 @@ public class PurpurWorldConfig { + public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); + public Map slimeAttackDamageCache = new HashMap<>(); + public boolean slimeTakeDamageFromWater = false; private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1518,6 +1621,7 @@ public class PurpurWorldConfig { - } - slimeMaxHealth = getString("mobs.slime.attributes.max_health", slimeMaxHealth); +@@ -1539,6 +1642,7 @@ public class PurpurWorldConfig { + slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); + slimeAttackDamageCache.clear(); + slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); } public boolean snowGolemRidable = false; -@@ -1531,6 +1635,7 @@ public class PurpurWorldConfig { +@@ -1552,6 +1656,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -1955,7 +1958,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1548,6 +1653,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1674,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -1963,7 +1966,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean squidRidable = false; -@@ -1555,6 +1661,7 @@ public class PurpurWorldConfig { +@@ -1576,6 +1682,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -1971,7 +1974,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1566,11 +1673,13 @@ public class PurpurWorldConfig { +@@ -1587,11 +1694,13 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -1985,7 +1988,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1580,11 +1689,13 @@ public class PurpurWorldConfig { +@@ -1601,11 +1710,13 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -1999,7 +2002,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1594,6 +1705,7 @@ public class PurpurWorldConfig { +@@ -1615,6 +1726,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2007,7 +2010,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean striderRidable = false; -@@ -1601,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1734,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2015,7 +2018,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1612,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1746,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2023,7 +2026,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean traderLlamaRidable = false; -@@ -1623,6 +1737,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1758,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2031,7 +2034,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1640,10 +1755,12 @@ public class PurpurWorldConfig { +@@ -1661,10 +1776,12 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2044,7 +2047,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); if (PurpurConfig.version < 10) { -@@ -1652,12 +1769,14 @@ public class PurpurWorldConfig { +@@ -1673,12 +1790,14 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2059,7 +2062,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1668,12 +1787,14 @@ public class PurpurWorldConfig { +@@ -1689,12 +1808,14 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2074,7 +2077,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1684,6 +1805,7 @@ public class PurpurWorldConfig { +@@ -1705,6 +1826,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2082,7 +2085,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean villagerRidable = false; -@@ -1700,6 +1822,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1843,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2090,7 +2093,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1720,12 +1843,14 @@ public class PurpurWorldConfig { +@@ -1741,12 +1864,14 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2105,7 +2108,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1736,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1757,6 +1882,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2113,7 +2116,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean wanderingTraderRidable = false; -@@ -1743,6 +1869,7 @@ public class PurpurWorldConfig { +@@ -1764,6 +1890,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2121,7 +2124,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1754,11 +1881,13 @@ public class PurpurWorldConfig { +@@ -1775,11 +1902,13 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2135,7 +2138,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1768,6 +1897,7 @@ public class PurpurWorldConfig { +@@ -1789,6 +1918,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2143,7 +2146,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean witherRidable = false; -@@ -1777,6 +1907,7 @@ public class PurpurWorldConfig { +@@ -1798,6 +1928,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2151,7 +2154,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1794,11 +1925,13 @@ public class PurpurWorldConfig { +@@ -1815,11 +1946,13 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2165,7 +2168,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1808,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1829,6 +1962,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2173,7 +2176,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean wolfRidable = false; -@@ -1817,6 +1951,7 @@ public class PurpurWorldConfig { +@@ -1838,6 +1972,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2181,7 +2184,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1834,11 +1969,13 @@ public class PurpurWorldConfig { +@@ -1855,11 +1990,13 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2195,7 +2198,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -1848,6 +1985,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +2006,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2203,7 +2206,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean zombieRidable = false; -@@ -1859,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1880,6 +2018,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2211,7 +2214,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1874,6 +2013,7 @@ public class PurpurWorldConfig { +@@ -1895,6 +2034,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2219,7 +2222,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean zombieHorseRidableInWater = false; -@@ -1885,6 +2025,7 @@ public class PurpurWorldConfig { +@@ -1906,6 +2046,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2227,7 +2230,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1901,6 +2042,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +2063,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2235,7 +2238,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean zombieVillagerRidable = false; -@@ -1910,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -1931,6 +2073,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2243,7 +2246,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1923,6 +2066,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +2087,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2251,7 +2254,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 } public boolean zombifiedPiglinRidable = false; -@@ -1933,6 +2077,7 @@ public class PurpurWorldConfig { +@@ -1954,6 +2098,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2259,7 +2262,7 @@ index 9806ccd697981b9e41af8eede4209d72159a4d52..ccf38f6ca45815a2dea27131d45cab83 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1947,5 +2092,6 @@ public class PurpurWorldConfig { +@@ -1968,5 +2113,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0139-Config-to-always-tame-in-Creative.patch b/patches/server/0139-Config-to-always-tame-in-Creative.patch index c9cb41e4b..de03042ea 100644 --- a/patches/server/0139-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0139-Config-to-always-tame-in-Creative.patch @@ -59,10 +59,10 @@ index 663683a50f7a1125f406b6ec8bf7a0419be5f36a..713fe8ac2293fe2e60c5834b3d6fd2f1 this.navigation.stop(); this.setTarget((LivingEntity) null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccf38f6ca45815a2dea27131d45cab83f780e8b2..574dfb9b8c9ffdbef07fedf76d5d835c61d83d3e 100644 +index f70f0407b1f43b9f21dfd9053da942eea17c9bba..e7299341d4890d6354564be47e30814300858f74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -110,6 +110,7 @@ public class PurpurWorldConfig { +@@ -111,6 +111,7 @@ public class PurpurWorldConfig { } public boolean useBetterMending = false; @@ -70,7 +70,7 @@ index ccf38f6ca45815a2dea27131d45cab83f780e8b2..574dfb9b8c9ffdbef07fedf76d5d835c public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; -@@ -128,6 +129,7 @@ public class PurpurWorldConfig { +@@ -129,6 +130,7 @@ public class PurpurWorldConfig { public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0140-End-crystal-explosion-options.patch b/patches/server/0140-End-crystal-explosion-options.patch index 7e45d18e1..914c3cbc2 100644 --- a/patches/server/0140-End-crystal-explosion-options.patch +++ b/patches/server/0140-End-crystal-explosion-options.patch @@ -52,10 +52,10 @@ index f8863cabad1bd0c3c2c62b8e17612d9559237d68..06c6addfa2a8dab1ad52a3588e9aeba5 this.onDestroyedBy(source); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 574dfb9b8c9ffdbef07fedf76d5d835c61d83d3e..1e5e27f4df0ee17aebd50a25342571f44825f10a 100644 +index e7299341d4890d6354564be47e30814300858f74..da979391d05fbfae76db66e02ead184b7aa606ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -450,6 +450,35 @@ public class PurpurWorldConfig { +@@ -451,6 +451,35 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index fb190a66c..d1ac61a36 100644 --- a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 3b752f97f75c78657f37215ecd92b7460a71f090..5ef45fe1dac1df779727f9c441f7e651 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e5e27f4df0ee17aebd50a25342571f44825f10a..ffe4321368b2d11d73d8d64b562b54870c8eb1b9 100644 +index da979391d05fbfae76db66e02ead184b7aa606ad..0a305bd8ec0f27ab46c98dc3eb44b5f022919cf0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -870,6 +870,7 @@ public class PurpurWorldConfig { +@@ -871,6 +871,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 1e5e27f4df0ee17aebd50a25342571f44825f10a..ffe4321368b2d11d73d8d64b562b5487 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -887,6 +888,7 @@ public class PurpurWorldConfig { +@@ -888,6 +889,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index 1e5e27f4df0ee17aebd50a25342571f44825f10a..ffe4321368b2d11d73d8d64b562b5487 } public boolean endermanRidable = false; -@@ -1939,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1960,6 +1962,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 1e5e27f4df0ee17aebd50a25342571f44825f10a..ffe4321368b2d11d73d8d64b562b5487 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1957,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +1981,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0142-Dont-run-with-scissors.patch b/patches/server/0142-Dont-run-with-scissors.patch index 41ba223ed..efc530516 100644 --- a/patches/server/0142-Dont-run-with-scissors.patch +++ b/patches/server/0142-Dont-run-with-scissors.patch @@ -68,7 +68,7 @@ index e1753ed5f7f72a4861666cd7929ab52b7891d5f0..8ccfbee93e98e20c07e733a42765a1a4 if (cause != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4592b84984d35ee4cc63beebacad089c5a0317ed..2cd5c8823eb8215b3e2a6eb7dd34b752a480dbd0 100644 +index 716d93c1ffd97daa0e338932d7950390aea0afb6..fdc94326c7d803c1e167c0b8ca7549954766e711 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -165,6 +165,7 @@ public class PurpurConfig { @@ -95,10 +95,10 @@ index 4592b84984d35ee4cc63beebacad089c5a0317ed..2cd5c8823eb8215b3e2a6eb7dd34b752 public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ffe4321368b2d11d73d8d64b562b54870c8eb1b9..06e7919068a693ac3f8dbf988d9f3fbe6f04538f 100644 +index 0a305bd8ec0f27ab46c98dc3eb44b5f022919cf0..40b53622a8bdde82eea66af6b2ed48b410abf12a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -190,6 +190,8 @@ public class PurpurWorldConfig { +@@ -191,6 +191,8 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -107,7 +107,7 @@ index ffe4321368b2d11d73d8d64b562b54870c8eb1b9..06e7919068a693ac3f8dbf988d9f3fbe private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -227,6 +229,8 @@ public class PurpurWorldConfig { +@@ -228,6 +230,8 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0143-One-Punch-Man.patch b/patches/server/0143-One-Punch-Man.patch index 2f18c8f5b..8801a0558 100644 --- a/patches/server/0143-One-Punch-Man.patch +++ b/patches/server/0143-One-Punch-Man.patch @@ -30,10 +30,10 @@ index cb825b7edfcee31ba431e5f166ec9008ea9f2060..e00c2b211cc3bf55f58039f4a0872ea5 if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06e7919068a693ac3f8dbf988d9f3fbe6f04538f..36bf919a4ac62d4fdd85a35e747c3a8b0d5cc7c0 100644 +index 40b53622a8bdde82eea66af6b2ed48b410abf12a..eee1d4fd7901e341908ff1b6bf0e5d5c6df3e428 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -335,6 +335,7 @@ public class PurpurWorldConfig { +@@ -336,6 +336,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -41,7 +41,7 @@ index 06e7919068a693ac3f8dbf988d9f3fbe6f04538f..36bf919a4ac62d4fdd85a35e747c3a8b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -353,6 +354,7 @@ public class PurpurWorldConfig { +@@ -354,6 +355,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/server/0144-Add-config-for-snow-on-blue-ice.patch b/patches/server/0144-Add-config-for-snow-on-blue-ice.patch index a79432f39..70dc2427e 100644 --- a/patches/server/0144-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0144-Add-config-for-snow-on-blue-ice.patch @@ -29,10 +29,10 @@ index fbbb0155bd66f1daa160e03f866741d903e1869e..86f7b4117b8b9bd36e38962e3290f7b9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36bf919a4ac62d4fdd85a35e747c3a8b0d5cc7c0..551c15ae84829beecfa27630c0c7b63b0fb829ef 100644 +index eee1d4fd7901e341908ff1b6bf0e5d5c6df3e428..df0397ea8bc4396ede6b357577677b9ae1c2a557 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -511,6 +511,11 @@ public class PurpurWorldConfig { +@@ -512,6 +512,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 84dfc741a..3968352d1 100644 --- a/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f // Paper end if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 551c15ae84829beecfa27630c0c7b63b0fb829ef..36ce45826a1397052d46d5a6ccb4b77c3e01fd9b 100644 +index df0397ea8bc4396ede6b357577677b9ae1c2a557..e95fe1e812135d9adfd8cf6a23433528060e5123 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -192,6 +192,10 @@ public class PurpurWorldConfig { +@@ -193,6 +193,10 @@ public class PurpurWorldConfig { public List itemImmuneToLightning = new ArrayList<>(); public boolean dontRunWithScissors = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index 551c15ae84829beecfa27630c0c7b63b0fb829ef..36ce45826a1397052d46d5a6ccb4b77c private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -231,6 +235,10 @@ public class PurpurWorldConfig { +@@ -232,6 +236,10 @@ public class PurpurWorldConfig { }); dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch index 1a50f7800..2a886fa05 100644 --- a/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,10 +18,10 @@ index d31ae3a1df1a457d7ae55bc82e9c870c3e093e42..a50d5342c5981a7ff5b4c56beea19da7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36ce45826a1397052d46d5a6ccb4b77c3e01fd9b..3919ca6fc6742bccaaee974908a7632b7f94ab96 100644 +index e95fe1e812135d9adfd8cf6a23433528060e5123..d3c2f19aef25c543885388625a479b3a41da3033 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -344,6 +344,7 @@ public class PurpurWorldConfig { +@@ -345,6 +345,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 36ce45826a1397052d46d5a6ccb4b77c3e01fd9b..3919ca6fc6742bccaaee974908a7632b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -363,6 +364,7 @@ public class PurpurWorldConfig { +@@ -364,6 +365,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch index 73331f7ab..7b38eac02 100644 --- a/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 1ab913281012305cba379ba7301a76501f7d3ed5..d1694338673b63ae3e7bcb38bb2450aa422f52cb 100644 +index 5932a5f4f641846637f0afe4c3496910bfdd5570..cccab211d950b82bc213fa17da25ad792fdcd8e5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -119,7 +119,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -18,10 +18,10 @@ index 1ab913281012305cba379ba7301a76501f7d3ed5..d1694338673b63ae3e7bcb38bb2450aa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3919ca6fc6742bccaaee974908a7632b7f94ab96..363dc0b2a74a984d0f19d7b7f2b22d6f8d793fb8 100644 +index d3c2f19aef25c543885388625a479b3a41da3033..33101d329f035e814ecfca0cd6ffff4976d32333 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -919,6 +919,8 @@ public class PurpurWorldConfig { +@@ -920,6 +920,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 3919ca6fc6742bccaaee974908a7632b7f94ab96..363dc0b2a74a984d0f19d7b7f2b22d6f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -927,11 +929,17 @@ public class PurpurWorldConfig { +@@ -928,11 +930,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 1f30e4285..6c0f46bae 100644 --- a/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index d1694338673b63ae3e7bcb38bb2450aa422f52cb..bba5ce10a4dc06272936ca26d1ac0e5a98c2da1f 100644 +index cccab211d950b82bc213fa17da25ad792fdcd8e5..fa2d6b478ed420e36622a0bde48131661d483d8b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -256,7 +256,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,10 +20,10 @@ index d1694338673b63ae3e7bcb38bb2450aa422f52cb..bba5ce10a4dc06272936ca26d1ac0e5a } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 363dc0b2a74a984d0f19d7b7f2b22d6f8d793fb8..c372b6702c4c8788262d0b13b0087ad76676094e 100644 +index 33101d329f035e814ecfca0cd6ffff4976d32333..1fb43400052a3206c752dd83e721790c858091ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -921,6 +921,8 @@ public class PurpurWorldConfig { +@@ -922,6 +922,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 363dc0b2a74a984d0f19d7b7f2b22d6f8d793fb8..c372b6702c4c8788262d0b13b0087ad7 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -940,6 +942,8 @@ public class PurpurWorldConfig { +@@ -941,6 +943,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0150-Tick-fluids-config.patch b/patches/server/0150-Tick-fluids-config.patch index 8c4d2b7c8..965191f04 100644 --- a/patches/server/0150-Tick-fluids-config.patch +++ b/patches/server/0150-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index 11ebadaa2438281a54cffe025a49ee5046a71ba5..07c25a2518eb5ce0da6131ce5ceb10ac } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c372b6702c4c8788262d0b13b0087ad76676094e..968ff9ce1e7d394aec3e73845d640100c353cde1 100644 +index 1fb43400052a3206c752dd83e721790c858091ba..ce2aee67f46beb7dd184fc52e53b7f8824501f56 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -122,6 +122,7 @@ public class PurpurWorldConfig { +@@ -123,6 +123,7 @@ public class PurpurWorldConfig { public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; @@ -47,7 +47,7 @@ index c372b6702c4c8788262d0b13b0087ad76676094e..968ff9ce1e7d394aec3e73845d640100 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -141,6 +142,7 @@ public class PurpurWorldConfig { +@@ -142,6 +143,7 @@ public class PurpurWorldConfig { noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0151-Config-to-disable-Llama-caravans.patch b/patches/server/0151-Config-to-disable-Llama-caravans.patch index a673aab34..c7014cacc 100644 --- a/patches/server/0151-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0151-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index fde47de12ffa43bff9cfd1500a35e49325223291..7656c933a835f15c40e75851e7a2348b this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 968ff9ce1e7d394aec3e73845d640100c353cde1..17333d18c9e2c7f417c849a0fe9fecf3e2df8b39 100644 +index ce2aee67f46beb7dd184fc52e53b7f8824501f56..dc76ba9ec061d9146a3915cfe3fcc215397d2f82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1214,6 +1214,7 @@ public class PurpurWorldConfig { +@@ -1215,6 +1215,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 968ff9ce1e7d394aec3e73845d640100c353cde1..17333d18c9e2c7f417c849a0fe9fecf3 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1232,6 +1233,7 @@ public class PurpurWorldConfig { +@@ -1233,6 +1234,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch index 156e86904..0edded727 100644 --- a/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0152-Config-to-make-Creepers-explode-on-death.patch @@ -50,10 +50,10 @@ index cf8b4f538ee2df715162adc460c6e8e58b50ba52..525b94c61693cfd7d68305cbf4eb08a8 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17333d18c9e2c7f417c849a0fe9fecf3e2df8b39..cbe208fb5803f111f6b63b5e8ac342433cf0165a 100644 +index dc76ba9ec061d9146a3915cfe3fcc215397d2f82..2562830e1530eece0b2480b18d5dc1fae34a0274 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -783,6 +783,7 @@ public class PurpurWorldConfig { +@@ -784,6 +784,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 17333d18c9e2c7f417c849a0fe9fecf3e2df8b39..cbe208fb5803f111f6b63b5e8ac34243 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -796,6 +797,7 @@ public class PurpurWorldConfig { +@@ -797,6 +798,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch index 04cd12810..a32a8b9c2 100644 --- a/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0153-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index e9087a46e401bc99b73c2cf2731fdac3e68719f8..e054edf9e7c4eef231e155516433c6fa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cbe208fb5803f111f6b63b5e8ac342433cf0165a..a37e4a154cc5c9d9adb61b7bb473c453127782ff 100644 +index 2562830e1530eece0b2480b18d5dc1fae34a0274..007ebed0fcffb1dc4c06d4f9585c6ba88c8c9c0c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1554,6 +1554,7 @@ public class PurpurWorldConfig { +@@ -1571,6 +1571,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index cbe208fb5803f111f6b63b5e8ac342433cf0165a..a37e4a154cc5c9d9adb61b7bb473c453 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1565,6 +1566,23 @@ public class PurpurWorldConfig { +@@ -1582,6 +1583,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0154-Sneak-to-bulk-process-composter.patch b/patches/server/0154-Sneak-to-bulk-process-composter.patch index b48927707..c80369b3a 100644 --- a/patches/server/0154-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0154-Sneak-to-bulk-process-composter.patch @@ -75,10 +75,10 @@ index fb8b8a9733ac50096d8406487ab1ae167ef5f7b1..16598ca0fd953b6af98dfcdb6716e2e1 int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a37e4a154cc5c9d9adb61b7bb473c453127782ff..2d790f475cfcb7573d275663482c58b582f85466 100644 +index 007ebed0fcffb1dc4c06d4f9585c6ba88c8c9c0c..b1c81d9d7d3769c56eddab029d4d24c7dd93d350 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -461,6 +461,11 @@ public class PurpurWorldConfig { +@@ -462,6 +462,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0155-Config-for-skipping-night.patch b/patches/server/0155-Config-for-skipping-night.patch index 5cf657dd1..bc50651ca 100644 --- a/patches/server/0155-Config-for-skipping-night.patch +++ b/patches/server/0155-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 5e027260743202b69ce348ef5cd04709eca689b0..fca42bb14e41e7e853af83a2f4b37d586b68c6fa 100644 +index f870288f2acc87183f272e32817bd5cf426d74d7..763c414511c5660e7071fb6863e6f96428de2798 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -608,7 +608,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18,10 +18,10 @@ index 5e027260743202b69ce348ef5cd04709eca689b0..fca42bb14e41e7e853af83a2f4b37d58 j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2d790f475cfcb7573d275663482c58b582f85466..76b2f64c18053f957491d7c4d96287db5afd01ab 100644 +index b1c81d9d7d3769c56eddab029d4d24c7dd93d350..257609405527a2f3256dbdebd8681fe436f5fdc3 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 { +@@ -348,6 +348,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 2d790f475cfcb7573d275663482c58b582f85466..76b2f64c18053f957491d7c4d96287db 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 { +@@ -368,6 +369,7 @@ public class PurpurWorldConfig { playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/server/0156-Add-config-for-villager-trading.patch b/patches/server/0156-Add-config-for-villager-trading.patch index 989c47b7f..31947737e 100644 --- a/patches/server/0156-Add-config-for-villager-trading.patch +++ b/patches/server/0156-Add-config-for-villager-trading.patch @@ -31,10 +31,10 @@ index e5b78c9d6fb326771d65ea9afd9da38c204922f0..1a8df13b06b1ac5e5a7d63033b4a5326 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76b2f64c18053f957491d7c4d96287db5afd01ab..395e4c3d0402a3bb283625b1f300825e12d40cef 100644 +index 257609405527a2f3256dbdebd8681fe436f5fdc3..dffb0fc28eca9a75f4e4bd30dee33f03f5cb2c86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1920,6 +1920,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +1941,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 76b2f64c18053f957491d7c4d96287db5afd01ab..395e4c3d0402a3bb283625b1f300825e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1941,6 +1942,7 @@ public class PurpurWorldConfig { +@@ -1962,6 +1963,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 76b2f64c18053f957491d7c4d96287db5afd01ab..395e4c3d0402a3bb283625b1f300825e } public boolean vindicatorRidable = false; -@@ -1967,6 +1969,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +1990,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 76b2f64c18053f957491d7c4d96287db5afd01ab..395e4c3d0402a3bb283625b1f300825e private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1979,6 +1982,7 @@ public class PurpurWorldConfig { +@@ -2000,6 +2003,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0158-Drowning-Settings.patch b/patches/server/0158-Drowning-Settings.patch index d25d5885b..43353f53f 100644 --- a/patches/server/0158-Drowning-Settings.patch +++ b/patches/server/0158-Drowning-Settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 430a95752aa590d40a54fb96d7484b55a781a1b6..5477f0294d27391edb1ea8fd36dbdc011392950a 100644 +index 8746ed0546ec3f078030109c698f5053fda950c8..3a3c0c9d1854e5784ca436f194ea59fe8939f0ab 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -529,7 +529,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -27,7 +27,7 @@ index 430a95752aa590d40a54fb96d7484b55a781a1b6..5477f0294d27391edb1ea8fd36dbdc01 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2290038b18ccd2757e305870d0a4a39cf674c713..19b71de5039f1c5affe9abadf3fdf38ce75f01f7 100644 +index e00c2b211cc3bf55f58039f4a0872ea59122603b..87ceaf8cac34f9250cb53f814d448001f2559932 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -419,7 +419,7 @@ public abstract class LivingEntity extends Entity { @@ -49,10 +49,10 @@ index 2290038b18ccd2757e305870d0a4a39cf674c713..19b71de5039f1c5affe9abadf3fdf38c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 395e4c3d0402a3bb283625b1f300825e12d40cef..9617da94ecb07aef6f9ad515bd31bae551d1db3e 100644 +index dffb0fc28eca9a75f4e4bd30dee33f03f5cb2c86..aa01c1d87121a761a66ca0af164d5f24bd3fd2ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -157,6 +157,15 @@ public class PurpurWorldConfig { +@@ -158,6 +158,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0159-Break-individual-slabs-when-sneaking.patch b/patches/server/0159-Break-individual-slabs-when-sneaking.patch index 925179ef3..1b6d44e89 100644 --- a/patches/server/0159-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0159-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index 54df5c2987822a727a31be2b3769d39fabb6159a..70b6a65a7d321fc71c98289f09f21cca + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9617da94ecb07aef6f9ad515bd31bae551d1db3e..c2b52cb9f1f9c639ae11652c236480b7ca28ef45 100644 +index aa01c1d87121a761a66ca0af164d5f24bd3fd2ed..77ad69e86deb7b55d5d5bd96c92dc93b02c28be0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -581,6 +581,11 @@ public class PurpurWorldConfig { +@@ -582,6 +582,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch index 80a1cba1c..d9c1ab5ea 100644 --- a/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 1d66588cfe94d190a34dc376b4b5bff9461a3529..9459255dd06d71dc1728e440e501cb3c return false; } else if (world.getBrightness(LightLayer.BLOCK, pos) > (world.getLevel().paperConfig.maxBlockLightForMonsterSpawning >= 0 ? world.getLevel().paperConfig.maxBlockLightForMonsterSpawning : 0)) { // Paper - configurable max block light level diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2b52cb9f1f9c639ae11652c236480b7ca28ef45..562702ddefd6b84e890d2d40db34bb8748cbcf14 100644 +index 77ad69e86deb7b55d5d5bd96c92dc93b02c28be0..5f86eaacb5f2b17bdd145a188001807469e87393 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -540,8 +540,12 @@ public class PurpurWorldConfig { +@@ -541,8 +541,12 @@ public class PurpurWorldConfig { } public boolean snowOnBlueIce = true; diff --git a/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch index bb7f9cbe4..7e112d5f3 100644 --- a/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,10 +17,10 @@ index e9e24435057cff9c0af758ca2aa822c3b1c3593d..8634431cabae82b71f409f02c84dda2d public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 562702ddefd6b84e890d2d40db34bb8748cbcf14..486646dd8e667af2f6057b55e4275502ddf2565a 100644 +index 5f86eaacb5f2b17bdd145a188001807469e87393..7857b39673a19474ebc22da92b7132682b8ca896 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -100,6 +100,7 @@ public class PurpurWorldConfig { +@@ -101,6 +101,7 @@ public class PurpurWorldConfig { public boolean armorstandMovement = true; public boolean armorstandWaterMovement = true; public boolean armorstandWaterFence = true; @@ -28,7 +28,7 @@ index 562702ddefd6b84e890d2d40db34bb8748cbcf14..486646dd8e667af2f6057b55e4275502 private void armorstandSettings() { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); -@@ -107,6 +108,7 @@ public class PurpurWorldConfig { +@@ -108,6 +109,7 @@ public class PurpurWorldConfig { armorstandMovement = getBoolean("gameplay-mechanics.armorstand.can-movement-tick", armorstandMovement); armorstandWaterMovement = getBoolean("gameplay-mechanics.armorstand.can-move-in-water", armorstandWaterMovement); armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence); diff --git a/patches/server/0162-Option-to-make-doors-require-redstone.patch b/patches/server/0162-Option-to-make-doors-require-redstone.patch index 8cb293fb8..33c6c9ab4 100644 --- a/patches/server/0162-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0162-Option-to-make-doors-require-redstone.patch @@ -67,10 +67,10 @@ index 1df52a9c86c01696a8bc9f84a2082387160b3eeb..a4b9c5da133e2e8ad45d447e3f184cb1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 486646dd8e667af2f6057b55e4275502ddf2565a..a96494bb19f27c3a7c49d6e68fa1de73ce1e240d 100644 +index 7857b39673a19474ebc22da92b7132682b8ca896..277d6900e4a429aa53b89fc52a5a2391aa0cb97a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -486,6 +486,16 @@ public class PurpurWorldConfig { +@@ -487,6 +487,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0164-Configurable-sponge-absorption.patch b/patches/server/0164-Configurable-sponge-absorption.patch index 343223275..88033d01e 100644 --- a/patches/server/0164-Configurable-sponge-absorption.patch +++ b/patches/server/0164-Configurable-sponge-absorption.patch @@ -43,10 +43,10 @@ index 842997ea9f25a05d74a2e8300e44cc39a7e9cd96..97b4e3c0d2b1bbde77b135b8595c3bfa } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a96494bb19f27c3a7c49d6e68fa1de73ce1e240d..ef7c2f93ef034a52349c17faeb313b32120414ca 100644 +index 277d6900e4a429aa53b89fc52a5a2391aa0cb97a..848fe557a3adf3cf6e66056bc14f4dd5f961355f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -607,6 +607,13 @@ public class PurpurWorldConfig { +@@ -608,6 +608,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0165-Projectile-offset-config.patch b/patches/server/0165-Projectile-offset-config.patch index a84f9d0e3..4f456f69a 100644 --- a/patches/server/0165-Projectile-offset-config.patch +++ b/patches/server/0165-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 5beaafec0759543d3bddf99028c97d0d005be209..086f746cc632a90c67a6c30ea9197c5b entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef7c2f93ef034a52349c17faeb313b32120414ca..229efbe1c75d5fab03e7aa550a5f97d1f624bc53 100644 +index 848fe557a3adf3cf6e66056bc14f4dd5f961355f..3efe20bf5a808c9a6a1d71a8ec6907ca96d9cda9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -416,6 +416,23 @@ public class PurpurWorldConfig { +@@ -417,6 +417,23 @@ public class PurpurWorldConfig { witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); } diff --git a/patches/server/0166-Config-for-powered-rail-activation-distance.patch b/patches/server/0166-Config-for-powered-rail-activation-distance.patch index c33867289..9532d6091 100644 --- a/patches/server/0166-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0166-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 229efbe1c75d5fab03e7aa550a5f97d1f624bc53..41f32e653b0f114254647e93c9010ca74a422b6d 100644 +index 3efe20bf5a808c9a6a1d71a8ec6907ca96d9cda9..b0439ccc8094637cb041370c5a37024f4f24d2d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -593,6 +593,11 @@ public class PurpurWorldConfig { +@@ -594,6 +594,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0167-Piglin-portal-spawn-modifier.patch b/patches/server/0167-Piglin-portal-spawn-modifier.patch index daf43290f..b6843ad6d 100644 --- a/patches/server/0167-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0167-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 13a367d2b5f245f4dd92df03288dc40b81e19603..bd593ec55fcccc1e02cf5683891c5586 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41f32e653b0f114254647e93c9010ca74a422b6d..fa95eb94413b51263a37a5d463181a7e174c582d 100644 +index b0439ccc8094637cb041370c5a37024f4f24d2d4..423f3c82e0ad1ee56b84fed9f919773386203a89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1507,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1524,6 +1524,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 41f32e653b0f114254647e93c9010ca74a422b6d..fa95eb94413b51263a37a5d463181a7e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1518,6 +1519,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1536,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch index 41d549f60..a42360bdd 100644 --- a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5477f0294d27391edb1ea8fd36dbdc011392950a..ffe4024267f432c9eba37a6712e444e55c69799d 100644 +index 3a3c0c9d1854e5784ca436f194ea59fe8939f0ab..c709099a06f6cb9313c7e99f3b66b463b31e751a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1051,7 +1051,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -31,10 +31,10 @@ index 96b4597101a7f3e98ce30bfc301e8ca1620d0fe4..d7845984b5077cdcd40d652c226d5d60 entity.hurt(DamageSource.HOT_FLOOR, 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa95eb94413b51263a37a5d463181a7e174c582d..0d78700bde1000e43bf6633140fb4f53975308f5 100644 +index 423f3c82e0ad1ee56b84fed9f919773386203a89..0367d18261ae85f6f38b92e29d38037835ab385f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -588,6 +588,13 @@ public class PurpurWorldConfig { +@@ -589,6 +589,13 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0170-Config-for-wither-explosion-radius.patch b/patches/server/0170-Config-for-wither-explosion-radius.patch index 7eae263d6..7e1d0e7bc 100644 --- a/patches/server/0170-Config-for-wither-explosion-radius.patch +++ b/patches/server/0170-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index a66e9826b8283366cec5adb54f79efee47d9df22..6cf8b12e94c17a8111eef5cc0157e4df if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d78700bde1000e43bf6633140fb4f53975308f5..459973c993474dd7cb8002459d4b3311aec1529b 100644 +index 0367d18261ae85f6f38b92e29d38037835ab385f..d282948eac093a3a6bfebe9416c76339f629bc25 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2078,6 +2078,7 @@ public class PurpurWorldConfig { +@@ -2099,6 +2099,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 0d78700bde1000e43bf6633140fb4f53975308f5..459973c993474dd7cb8002459d4b3311 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2097,6 +2098,7 @@ public class PurpurWorldConfig { +@@ -2118,6 +2119,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index 9684a857f..b364b0413 100644 --- a/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -18,10 +18,10 @@ index e5562b407bba35ab93bf8bc3c22ac9d45e8353cb..c688bb73cd062f36524cfc231cb691f2 if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { level.playSound(player, blockPos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 459973c993474dd7cb8002459d4b3311aec1529b..4a7ff58a328000cc42c85856130753e64d5581a4 100644 +index d282948eac093a3a6bfebe9416c76339f629bc25..043c7c945b200e4731dc7947f6e0ffe34d77e8af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -433,6 +433,21 @@ public class PurpurWorldConfig { +@@ -434,6 +434,21 @@ public class PurpurWorldConfig { snowballProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.snowball", snowballProjectileOffset); } diff --git a/patches/server/0173-Configurable-piston-push-limit.patch b/patches/server/0173-Configurable-piston-push-limit.patch index 9d9609f35..76d5d4f07 100644 --- a/patches/server/0173-Configurable-piston-push-limit.patch +++ b/patches/server/0173-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a7ff58a328000cc42c85856130753e64d5581a4..4c89f790c22cd82ee343a48b7c4cfd4ec9936b0d 100644 +index 043c7c945b200e4731dc7947f6e0ffe34d77e8af..340ec59f0c02b4f10dc4664dcc6d1f4c7685af1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -610,6 +610,11 @@ public class PurpurWorldConfig { +@@ -611,6 +611,11 @@ public class PurpurWorldConfig { magmaBlockDamageWithFrostWalker = getBoolean("blocks.magma-block.damage-with-frost-walker", magmaBlockDamageWithFrostWalker); } diff --git a/patches/server/0175-Configurable-mob-blindness.patch b/patches/server/0175-Configurable-mob-blindness.patch index dd6f36bf2..5953a266d 100644 --- a/patches/server/0175-Configurable-mob-blindness.patch +++ b/patches/server/0175-Configurable-mob-blindness.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 19b71de5039f1c5affe9abadf3fdf38ce75f01f7..b7d580fc174b69c23dbbc18e114f3d3119a8e9ea 100644 +index 87ceaf8cac34f9250cb53f814d448001f2559932..26717a4172ef299a3b4ab4384f8c23dc853bb485 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -986,6 +986,17 @@ public abstract class LivingEntity extends Entity { @@ -28,10 +28,10 @@ index 19b71de5039f1c5affe9abadf3fdf38ce75f01f7..b7d580fc174b69c23dbbc18e114f3d31 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4c89f790c22cd82ee343a48b7c4cfd4ec9936b0d..90fe0b1952a3e28933a6f9314875e38330802f23 100644 +index 340ec59f0c02b4f10dc4664dcc6d1f4c7685af1e..a93c89efff74f206e3ebad6c2dae85cf5169c1e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -125,6 +125,7 @@ public class PurpurWorldConfig { +@@ -126,6 +126,7 @@ public class PurpurWorldConfig { public boolean persistentDroppableEntityDisplayNames = false; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; @@ -39,7 +39,7 @@ index 4c89f790c22cd82ee343a48b7c4cfd4ec9936b0d..90fe0b1952a3e28933a6f9314875e383 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -145,6 +146,7 @@ public class PurpurWorldConfig { +@@ -146,6 +147,7 @@ public class PurpurWorldConfig { persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); diff --git a/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch index e174e5ebb..d18436add 100644 --- a/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 525b94c61693cfd7d68305cbf4eb08a87f3ca66a..35cbd013b1d58bb5fd1480922c2bd430 if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 90fe0b1952a3e28933a6f9314875e38330802f23..8e8235a1ffde3f8702399964ee4e9c85fd24e023 100644 +index a93c89efff74f206e3ebad6c2dae85cf5169c1e8..f05341a46e7e6efbbef0943f957d1898066da475 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -879,6 +879,7 @@ public class PurpurWorldConfig { +@@ -880,6 +880,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 90fe0b1952a3e28933a6f9314875e38330802f23..8e8235a1ffde3f8702399964ee4e9c85 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -893,6 +894,7 @@ public class PurpurWorldConfig { +@@ -894,6 +895,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0178-Iron-golem-poppy-calms-anger.patch b/patches/server/0178-Iron-golem-poppy-calms-anger.patch index 71a315aff..3f62391b2 100644 --- a/patches/server/0178-Iron-golem-poppy-calms-anger.patch +++ b/patches/server/0178-Iron-golem-poppy-calms-anger.patch @@ -17,10 +17,10 @@ index 52cc0df083d5a4685fd00f7db0d92b277fb0c994..ff5d6f437b880ab0aa5897089694a620 this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e8235a1ffde3f8702399964ee4e9c85fd24e023..e4f8710f477336358e437f30e11d3ddf2648d7ea 100644 +index f05341a46e7e6efbbef0943f957d1898066da475..e40a9c01607bf1b85bb6ff0e9f23d38b48743b98 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { +@@ -1291,6 +1291,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -28,7 +28,7 @@ index 8e8235a1ffde3f8702399964ee4e9c85fd24e023..e4f8710f477336358e437f30e11d3ddf private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1301,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1303,7 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0179-Breedable-parrots.patch b/patches/server/0179-Breedable-parrots.patch index 06777bc18..9c8e4ac04 100644 --- a/patches/server/0179-Breedable-parrots.patch +++ b/patches/server/0179-Breedable-parrots.patch @@ -50,10 +50,10 @@ index de702ce3e2dffc44e380b8470aa540a3226a54cb..bb9717d1b2039469aae26e0eb9a4304b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e4f8710f477336358e437f30e11d3ddf2648d7ea..00c4f7d6e6f943e17fcd5fc32b8b10acdec190d8 100644 +index e40a9c01607bf1b85bb6ff0e9f23d38b48743b98..438bc081a07e33fa250b4daee9894e8cf74edfe4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1440,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1447,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 256D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index e4f8710f477336358e437f30e11d3ddf2648d7ea..00c4f7d6e6f943e17fcd5fc32b8b10ac private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1451,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1458,6 +1459,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0180-Configurable-powered-rail-boost-modifier.patch b/patches/server/0180-Configurable-powered-rail-boost-modifier.patch index 8a45b6b9d..7c5277c1a 100644 --- a/patches/server/0180-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0180-Configurable-powered-rail-boost-modifier.patch @@ -18,10 +18,10 @@ index 6b58b32711b3aba9b7de9e7dee6d02073dad3b7f..0e6f2d1d48910c573ec2237002a02f33 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00c4f7d6e6f943e17fcd5fc32b8b10acdec190d8..f12afb35986afb94f3920f2286c046d9f1c54669 100644 +index 438bc081a07e33fa250b4daee9894e8cf74edfe4..454762868f010804f23f8251ca9015e6a74baf86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -264,6 +264,7 @@ public class PurpurWorldConfig { +@@ -265,6 +265,7 @@ public class PurpurWorldConfig { public boolean minecartControllableFallDamage = true; public double minecartControllableBaseSpeed = 0.1D; public Map minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index 00c4f7d6e6f943e17fcd5fc32b8b10acdec190d8..f12afb35986afb94f3920f2286c046d9 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -316,6 +317,7 @@ public class PurpurWorldConfig { +@@ -317,6 +318,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch index 85361772c..f1d983640 100644 --- a/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 9716110e910ae3d73be54333050214cd53a885d3..2004f291610c0089aab92e863b439ca2 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f12afb35986afb94f3920f2286c046d9f1c54669..d27ce15aaefdf76ed4ca53ee7a0351ba2d50691f 100644 +index 454762868f010804f23f8251ca9015e6a74baf86..845a530c2c11615714e54303e5ef361cb2e1f296 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -363,6 +363,7 @@ public class PurpurWorldConfig { +@@ -364,6 +364,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index f12afb35986afb94f3920f2286c046d9f1c54669..d27ce15aaefdf76ed4ca53ee7a0351ba 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 { +@@ -385,6 +386,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch index a9dbe7801..1d2a39823 100644 --- a/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0182-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d27ce15aaefdf76ed4ca53ee7a0351ba2d50691f..5ec4fc989a6fa12c0f7e37e7787a62b0341f0eb7 100644 +index 845a530c2c11615714e54303e5ef361cb2e1f296..de1b73bea9d61b14df93bfdb7cf86c242e475d8b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -534,6 +534,11 @@ public class PurpurWorldConfig { +@@ -535,6 +535,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch index 5857c3fb5..f1be038a1 100644 --- a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch @@ -35,10 +35,10 @@ index 7f1230d915c98b6f30b13a06c2788bc2f7b7e912..9439119a70a411b1a7d9cd6a0090e413 blockEntity.saveToItem(itemStack); if (shulkerBoxBlockEntity.hasCustomName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ec4fc989a6fa12c0f7e37e7787a62b0341f0eb7..c6e16b834393d97c4ebe53e2c42360431c4372c5 100644 +index de1b73bea9d61b14df93bfdb7cf86c242e475d8b..2a7b4120502d72f4f5ce0cdccc084c0a5bc6bf83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -652,6 +652,11 @@ public class PurpurWorldConfig { +@@ -653,6 +653,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch index 1e7b0d705..991c8f7e4 100644 --- a/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index 375f25807ca0f35784653d8fbe4e5086d7033e99..096308b577c68502fed1f4c10c0dfc2a return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6e16b834393d97c4ebe53e2c42360431c4372c5..287400dc2e30b8e9147708914f67f67f98d2818b 100644 +index 2a7b4120502d72f4f5ce0cdccc084c0a5bc6bf83..8c41f8e4c88596ad225cfa48e69fa0ecf6d10766 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -753,6 +753,8 @@ public class PurpurWorldConfig { +@@ -754,6 +754,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index c6e16b834393d97c4ebe53e2c42360431c4372c5..287400dc2e30b8e9147708914f67f67f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -765,6 +767,8 @@ public class PurpurWorldConfig { +@@ -766,6 +768,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0187-API-for-any-mob-to-burn-daylight.patch b/patches/server/0187-API-for-any-mob-to-burn-daylight.patch index 31afe7836..a1a0c0084 100644 --- a/patches/server/0187-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0187-API-for-any-mob-to-burn-daylight.patch @@ -209,7 +209,7 @@ index 5458ac83fa555e22ca858f4f596ebb8f37926dd5..ca5683e9b0b4aad3827fe6d00198da8e @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 05eba1970086a42b3609094a3d59119c9d178e74..6ba79e10631ffd213d69c55293ec1da6189c66e3 100644 +index 843335bcbdfef0c705dd95beeef8b4f61063f028..5979d8446ae71e365aa65871808af00fae316016 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -220,7 +220,7 @@ index 05eba1970086a42b3609094a3d59119c9d178e74..6ba79e10631ffd213d69c55293ec1da6 } // Purpur start -@@ -236,7 +237,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -249,7 +250,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -229,7 +229,7 @@ index 05eba1970086a42b3609094a3d59119c9d178e74..6ba79e10631ffd213d69c55293ec1da6 this.setSecondsOnFire(8); } -@@ -268,7 +269,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -281,7 +282,7 @@ public class Phantom extends FlyingMob implements Enemy { this.spawningEntity = nbt.getUUID("Paper.SpawningEntity"); } if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -238,7 +238,7 @@ index 05eba1970086a42b3609094a3d59119c9d178e74..6ba79e10631ffd213d69c55293ec1da6 } // Paper end } -@@ -284,7 +285,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -297,7 +298,7 @@ public class Phantom extends FlyingMob implements Enemy { if (this.spawningEntity != null) { nbt.putUUID("Paper.SpawningEntity", this.spawningEntity); } @@ -247,7 +247,7 @@ index 05eba1970086a42b3609094a3d59119c9d178e74..6ba79e10631ffd213d69c55293ec1da6 // Paper end } -@@ -345,7 +346,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -358,7 +359,7 @@ public class Phantom extends FlyingMob implements Enemy { } public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; } diff --git a/patches/server/0188-Config-MobEffect-by-world.patch b/patches/server/0188-Config-MobEffect-by-world.patch index ba3c40480..3841527b3 100644 --- a/patches/server/0188-Config-MobEffect-by-world.patch +++ b/patches/server/0188-Config-MobEffect-by-world.patch @@ -40,10 +40,10 @@ index 8bbb9bdcf95989f1737714655f6f6a269d46d7f2..8d569eb2ec1b2bdbd415094ae04ae531 ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 287400dc2e30b8e9147708914f67f67f98d2818b..742a20495c3c57c619731621e44d745d976122e5 100644 +index 8c41f8e4c88596ad225cfa48e69fa0ecf6d10766..5c403c34d4a741d4a4624d76554991f248fbc717 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -320,6 +320,21 @@ public class PurpurWorldConfig { +@@ -321,6 +321,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0189-Beacon-Activation-Range-Configurable.patch b/patches/server/0189-Beacon-Activation-Range-Configurable.patch index ed087e966..048ae28c0 100644 --- a/patches/server/0189-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0189-Beacon-Activation-Range-Configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Beacon Activation Range Configurable diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 423560afba1bc03c0bb2b7d5d028451f34e59ec5..080694a06c9fdf57317dd281c4ddbd6c2b50662c 100644 +index 80b2af5cf89f7e33127dbee1bb5f9bc50b6e476f..3db1029a5bbe4b7eeb8c484852dd754fa34697fb 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider { @@ -26,10 +26,10 @@ index 423560afba1bc03c0bb2b7d5d028451f34e59ec5..080694a06c9fdf57317dd281c4ddbd6c } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 742a20495c3c57c619731621e44d745d976122e5..ec207d84766498daed0d2fc2ac459739c8814ec5 100644 +index 5c403c34d4a741d4a4624d76554991f248fbc717..adba39208de6efd5f210b19b919aa2a051dd1ec7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -506,6 +506,17 @@ public class PurpurWorldConfig { +@@ -507,6 +507,17 @@ public class PurpurWorldConfig { anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); } diff --git a/patches/server/0190-Add-toggle-for-sand-duping-fix.patch b/patches/server/0190-Add-toggle-for-sand-duping-fix.patch index 132d80b6a..7a94d77f0 100644 --- a/patches/server/0190-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0190-Add-toggle-for-sand-duping-fix.patch @@ -27,10 +27,10 @@ index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..92a9869dbabcaa704a0da8bc86f75786 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec207d84766498daed0d2fc2ac459739c8814ec5..db3f9df443feebab81c3d1c7a7965b716be5b7d2 100644 +index adba39208de6efd5f210b19b919aa2a051dd1ec7..763683bab10f63f01ac2a6bbb8db0e930c2b55cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -678,6 +678,11 @@ public class PurpurWorldConfig { +@@ -679,6 +679,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch index a7dad6c95..1dd4dcb23 100644 --- a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1e4d6c36576ebfc9ff643d87d73ee6a908a06876..2ed6964132513fa7b38fe4733aea4afd0153a735 100644 +index ffccf99ae6eb4a20104ce897cb9f1a9356dd23c7..032bc56ad7700d1ba79efbce32654c57a9434711 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2791,7 +2791,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -45,10 +45,10 @@ index bd4f980f68330fc46a02a6f4bb4403fac3a91919..8601ea0575323ea7cf07c4909a495bf5 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db3f9df443feebab81c3d1c7a7965b716be5b7d2..1cb7d40cf8af0bb8b94455b80aec4021b805e2df 100644 +index 763683bab10f63f01ac2a6bbb8db0e930c2b55cd..54f4b642306f458bab2d051595fe0f125f3d63db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -620,6 +620,11 @@ public class PurpurWorldConfig { +@@ -621,6 +621,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch index 7de9904de..fea76cc84 100644 --- a/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch +++ b/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch @@ -55,10 +55,10 @@ index 2934b6de1f1fb914a532ee20184df99d1acd8e65..65421cfff05c0493f5fef1bdff03172c public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1cb7d40cf8af0bb8b94455b80aec4021b805e2df..7b0ae0673f7d210d3d41af8e8333613ae417d7a9 100644 +index 54f4b642306f458bab2d051595fe0f125f3d63db..13d14c46e801ea76a4aa8a15d8531b4eb5dfa549 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -379,6 +379,7 @@ public class PurpurWorldConfig { +@@ -380,6 +380,7 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -66,7 +66,7 @@ index 1cb7d40cf8af0bb8b94455b80aec4021b805e2df..7b0ae0673f7d210d3d41af8e8333613a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -401,6 +402,7 @@ public class PurpurWorldConfig { +@@ -402,6 +403,7 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0197-Shulker-spawn-from-bullet-options.patch b/patches/server/0197-Shulker-spawn-from-bullet-options.patch index 1ef8bd312..0bb93742f 100644 --- a/patches/server/0197-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0197-Shulker-spawn-from-bullet-options.patch @@ -61,10 +61,10 @@ index f812a75985d26785639491c9a980387a3f261f2d..b11fb39b69f5225ca7da72ca1a2200c7 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b0ae0673f7d210d3d41af8e8333613ae417d7a9..7cd1ce5c8e65d853662201dc791a327f321d3b71 100644 +index 13d14c46e801ea76a4aa8a15d8531b4eb5dfa549..743ef4d887577b8fba8b43137650ae8e5d300a7f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1782,6 +1782,11 @@ public class PurpurWorldConfig { +@@ -1799,6 +1799,11 @@ public class PurpurWorldConfig { public boolean shulkerRidableInWater = false; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -76,7 +76,7 @@ index 7b0ae0673f7d210d3d41af8e8333613ae417d7a9..7cd1ce5c8e65d853662201dc791a327f private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1792,6 +1797,11 @@ public class PurpurWorldConfig { +@@ -1809,6 +1814,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch index caf74238b..ab2487927 100644 --- a/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0198-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 85329295afacad3edb6865846166aa56ebae0ed2..513343d225a71e242b0f237eefcd2514 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT, CreativeModeTab.TAB_DECORATIONS); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7cd1ce5c8e65d853662201dc791a327f321d3b71..a734a9c1471bb7e5e2eb401b71786085be0f2184 100644 +index 743ef4d887577b8fba8b43137650ae8e5d300a7f..15a586bc5249bc32d3bdfb0c973e07229b9d8c34 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -211,6 +211,7 @@ public class PurpurWorldConfig { +@@ -212,6 +212,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 7cd1ce5c8e65d853662201dc791a327f321d3b71..a734a9c1471bb7e5e2eb401b71786085 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -254,6 +255,7 @@ public class PurpurWorldConfig { +@@ -255,6 +256,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0199-Option-to-make-drowned-break-doors.patch b/patches/server/0199-Option-to-make-drowned-break-doors.patch index 90fff48c2..fb7c94fb2 100644 --- a/patches/server/0199-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0199-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 4d2bb12b8168fceae71622a9f8bd5102d0024208..a592fb29097232d5d9c6e6d946fb326f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a734a9c1471bb7e5e2eb401b71786085be0f2184..dbd7bf59dc9873e2316d978558399833d3dbd8c1 100644 +index 15a586bc5249bc32d3bdfb0c973e07229b9d8c34..18f06ee01a3d20d51eac9d96a20af523a04a1c08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1013,6 +1013,7 @@ public class PurpurWorldConfig { +@@ -1014,6 +1014,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index a734a9c1471bb7e5e2eb401b71786085be0f2184..dbd7bf59dc9873e2316d978558399833 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1027,6 +1028,7 @@ public class PurpurWorldConfig { +@@ -1028,6 +1029,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0200-Configurable-hunger-starvation-damage.patch b/patches/server/0200-Configurable-hunger-starvation-damage.patch index 6eb83c1b8..bdfd849a6 100644 --- a/patches/server/0200-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0200-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 65421cfff05c0493f5fef1bdff03172c9e33f33e..63584faeec4e5013be7a377e3203ec16 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dbd7bf59dc9873e2316d978558399833d3dbd8c1..a6f71c2b27b23243d9e3bdc44e31387ea8b1445b 100644 +index 18f06ee01a3d20d51eac9d96a20af523a04a1c08..59cee8f525b3158d1c69c10b8e1460ccb254c7f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2365,4 +2365,9 @@ public class PurpurWorldConfig { +@@ -2386,4 +2386,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0202-Armor-click-equip-options.patch b/patches/server/0202-Armor-click-equip-options.patch index 4641ed134..aa00da961 100644 --- a/patches/server/0202-Armor-click-equip-options.patch +++ b/patches/server/0202-Armor-click-equip-options.patch @@ -58,10 +58,10 @@ index 42f79d418ec4e2dbeac9a217d9dc144cda2ef714..250c0e31825f772d3fee7a523f150cb2 return InteractionResultHolder.fail(itemStack); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a6f71c2b27b23243d9e3bdc44e31387ea8b1445b..a63190c9e534ebbbb6745f4d6d04903bdfbad10d 100644 +index 59cee8f525b3158d1c69c10b8e1460ccb254c7f5..c3a24784e980d38ef5899985e72cd206ab5e8939 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -382,6 +382,8 @@ public class PurpurWorldConfig { +@@ -383,6 +383,8 @@ public class PurpurWorldConfig { public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; public boolean playerBurpWhenFull = false; @@ -70,7 +70,7 @@ index a6f71c2b27b23243d9e3bdc44e31387ea8b1445b..a63190c9e534ebbbb6745f4d6d04903b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -405,6 +407,8 @@ public class PurpurWorldConfig { +@@ -406,6 +408,8 @@ public class PurpurWorldConfig { playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0205-Tool-actionable-options.patch b/patches/server/0205-Tool-actionable-options.patch index 65ce54d58..ef664c674 100644 --- a/patches/server/0205-Tool-actionable-options.patch +++ b/patches/server/0205-Tool-actionable-options.patch @@ -109,10 +109,10 @@ index a5c2d6f0c0850a99224a1a8d622fe6b341cee88b..d8777ab86465e25236e7abbafd7ff668 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a63190c9e534ebbbb6745f4d6d04903bdfbad10d..49538fcb317f29a34894c636ee85f9bc609c88cf 100644 +index c3a24784e980d38ef5899985e72cd206ab5e8939..3b9114e3c0789eeb6edcd49400c7ece14dc9d7a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -509,6 +509,153 @@ public class PurpurWorldConfig { +@@ -510,6 +510,153 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch index 68740a9ca..a34e959e8 100644 --- a/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0209-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -19,10 +19,10 @@ index 893d5bf448ddbccb30db0ee751c7f4a4e83634b9..b7a7d9ef5f7c8fecb5625a98471314b6 CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 49538fcb317f29a34894c636ee85f9bc609c88cf..c5995a7a0796fb4fe4e7d5d0471b8b280710bec6 100644 +index 3b9114e3c0789eeb6edcd49400c7ece14dc9d7a9..0077e4e3f5dbf1a5a692f5cbeeb8e72b8a737070 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -212,6 +212,7 @@ public class PurpurWorldConfig { +@@ -213,6 +213,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -30,7 +30,7 @@ index 49538fcb317f29a34894c636ee85f9bc609c88cf..c5995a7a0796fb4fe4e7d5d0471b8b28 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -256,6 +257,7 @@ public class PurpurWorldConfig { +@@ -257,6 +258,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0210-Silk-touchable-budding-amethyst.patch b/patches/server/0210-Silk-touchable-budding-amethyst.patch index 7cd174c83..1ff10d201 100644 --- a/patches/server/0210-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0210-Silk-touchable-budding-amethyst.patch @@ -24,10 +24,10 @@ index 02fc3ede12eadbf72e26e31b1c475c7f5b2ad73a..2288e727929ffb3a3bca138fb0289408 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c5995a7a0796fb4fe4e7d5d0471b8b280710bec6..edd5485003a8cb53b5a65dedc5a87bbf511e3fc5 100644 +index 0077e4e3f5dbf1a5a692f5cbeeb8e72b8a737070..301e2afd4ed73ebcf6996a2baec52d462d972d0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -690,6 +690,11 @@ public class PurpurWorldConfig { +@@ -691,6 +691,11 @@ public class PurpurWorldConfig { } } @@ -39,7 +39,7 @@ index c5995a7a0796fb4fe4e7d5d0471b8b280710bec6..edd5485003a8cb53b5a65dedc5a87bbf public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2524,3 +2529,4 @@ public class PurpurWorldConfig { +@@ -2545,3 +2550,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0211-Big-dripleaf-tilt-delay.patch b/patches/server/0211-Big-dripleaf-tilt-delay.patch index 8d71a3738..21a0b8376 100644 --- a/patches/server/0211-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0211-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 3f434ac77611a81889b15c118a0fca57cc10a6bb..36d65d85d3cc030551fc0957c1ebbff6 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index edd5485003a8cb53b5a65dedc5a87bbf511e3fc5..ba56f6d9ab1029ee6261968b732ee5cddf45f242 100644 +index 301e2afd4ed73ebcf6996a2baec52d462d972d0f..a3422a2fef4edc176f44a32061f7ca26b6b80c3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -690,6 +690,22 @@ public class PurpurWorldConfig { +@@ -691,6 +691,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0212-Player-ridable-in-water-option.patch b/patches/server/0212-Player-ridable-in-water-option.patch index cbcea8b6d..f6e0c599e 100644 --- a/patches/server/0212-Player-ridable-in-water-option.patch +++ b/patches/server/0212-Player-ridable-in-water-option.patch @@ -21,10 +21,10 @@ index 41d163e35dc9d9e7732974b16891aa16f599973d..c8792fee068c13ae45f9eb936ef34fc5 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 ba56f6d9ab1029ee6261968b732ee5cddf45f242..6370b3638c518b6dd9b1e6690d31da580f52d3d9 100644 +index a3422a2fef4edc176f44a32061f7ca26b6b80c3e..1075358dba79c3e4a7593ed4bb5506a41126a68f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -386,6 +386,7 @@ public class PurpurWorldConfig { +@@ -387,6 +387,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerArmorSwapping = false; public boolean playerArmorSwappingCreativeMakesCopy = true; @@ -32,7 +32,7 @@ index ba56f6d9ab1029ee6261968b732ee5cddf45f242..6370b3638c518b6dd9b1e6690d31da58 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -411,6 +412,7 @@ public class PurpurWorldConfig { +@@ -412,6 +413,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping); playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); diff --git a/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 5e7abf8e2..d8e57e2a4 100644 --- a/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -18,10 +18,10 @@ index fa2d6b478ed420e36622a0bde48131661d483d8b..a20b888ba856b8c588af5cad5c2d7287 boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6370b3638c518b6dd9b1e6690d31da580f52d3d9..400276dc5a87998f491df40bf4839e180488e25b 100644 +index 1075358dba79c3e4a7593ed4bb5506a41126a68f..a60b0799765cd2cb06cb958aad49f81c5c4b39e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1260,6 +1260,7 @@ public class PurpurWorldConfig { +@@ -1261,6 +1261,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -29,7 +29,7 @@ index 6370b3638c518b6dd9b1e6690d31da580f52d3d9..400276dc5a87998f491df40bf4839e18 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1281,6 +1282,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1283,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0214-Add-compass-command.patch b/patches/server/0214-Add-compass-command.patch index 79c65285a..eb81ce729 100644 --- a/patches/server/0214-Add-compass-command.patch +++ b/patches/server/0214-Add-compass-command.patch @@ -59,7 +59,7 @@ index 6d643998ee32de7f96b94e10fbd0b08a75628978..e2e83d8b39ddb154c0e69b63d5b99664 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d460f1186e1260855ad254b16b2748863946a20c..209d563791695bfca5becdcdd0e088d88d2d354c 100644 +index 4db13b4e9b37e2b704a3b0967ce26356753ef662..c2a3f004208dbaa84c810f5013da185174cbf525 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -246,6 +246,11 @@ public class PurpurConfig { @@ -89,10 +89,10 @@ index d460f1186e1260855ad254b16b2748863946a20c..209d563791695bfca5becdcdd0e088d8 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 400276dc5a87998f491df40bf4839e180488e25b..81470f7e3b5313c0f92336c904a51f321491e94c 100644 +index a60b0799765cd2cb06cb958aad49f81c5c4b39e5..e61687112a49037c9b0c1677e09bb76ed24c02bb 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 float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 400276dc5a87998f491df40bf4839e180488e25b..81470f7e3b5313c0f92336c904a51f32 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -258,6 +259,7 @@ public class PurpurWorldConfig { +@@ -259,6 +260,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch b/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch index a46cd39b7..d12d1d66a 100644 --- a/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch +++ b/patches/server/0215-Config-to-prevent-horses-from-standing-with-riders.patch @@ -20,10 +20,10 @@ index 0be0c81f2b0a58eba75eb8559f78d8a58014d0ae..f7088aaf65ee5725e928845a63485211 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81470f7e3b5313c0f92336c904a51f321491e94c..42067e44629295b9cc243239bfc24b23f2d3095f 100644 +index e61687112a49037c9b0c1677e09bb76ed24c02bb..c29c2eefb2dab541691f88f315fdea88343a0a96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1458,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1459,6 +1459,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -31,7 +31,7 @@ index 81470f7e3b5313c0f92336c904a51f321491e94c..42067e44629295b9cc243239bfc24b23 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1475,6 +1476,7 @@ public class PurpurWorldConfig { +@@ -1476,6 +1477,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); diff --git a/patches/server/0216-Toggle-for-kinetic-damage.patch b/patches/server/0216-Toggle-for-kinetic-damage.patch index 201f21f21..ec22de8bb 100644 --- a/patches/server/0216-Toggle-for-kinetic-damage.patch +++ b/patches/server/0216-Toggle-for-kinetic-damage.patch @@ -22,10 +22,10 @@ index 12517438b8b8366a37165cb057dfc040ec81fc3a..e44b0c3704ca6b7609f6638e43aa8abe } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 42067e44629295b9cc243239bfc24b23f2d3095f..f91444027ff6c92a4fe9b3bc63737840b05c780f 100644 +index c29c2eefb2dab541691f88f315fdea88343a0a96..6edd607952f087ae41f62478003b76053b43fa57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -175,12 +175,14 @@ public class PurpurWorldConfig { +@@ -176,12 +176,14 @@ public class PurpurWorldConfig { public boolean elytraIgnoreUnbreaking = false; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0217-Add-Option-for-disable-observer-clocks.patch b/patches/server/0217-Add-Option-for-disable-observer-clocks.patch index 588c4176b..77c40b26b 100644 --- a/patches/server/0217-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0217-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index 4a34a08a1d46e4d3020644a51d9e30a36a18791a..be28b5aba28383058548cfb68f982664 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f91444027ff6c92a4fe9b3bc63737840b05c780f..4ae323361eac2ca0c5c25fce6c77704ccd7f2e74 100644 +index 6edd607952f087ae41f62478003b76053b43fa57..8462308f580c6f9b07e5eb48f309fd912966c0d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -358,6 +358,11 @@ public class PurpurWorldConfig { +@@ -359,6 +359,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch index 7dd5f354d..1dd5af9fc 100644 --- a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 96e5d1210e27b0bca7a354366e5c805709ae4fec..c6ba41c2b4cc96bc97ed2e2220c0f3fa this.gameEvent(GameEvent.MOB_INTERACT, this.eyeBlockPosition()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ae323361eac2ca0c5c25fce6c77704ccd7f2e74..1c810af51c613e00cdec1699a7dd7473a87c0282 100644 +index 8462308f580c6f9b07e5eb48f309fd912966c0d9..56e0b447409edf09bd495fa48f64ef0ff2b67ed6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2513,6 +2513,8 @@ public class PurpurWorldConfig { +@@ -2534,6 +2534,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 4ae323361eac2ca0c5c25fce6c77704ccd7f2e74..1c810af51c613e00cdec1699a7dd7473 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2527,6 +2529,8 @@ public class PurpurWorldConfig { +@@ -2548,6 +2550,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0219-Option-for-sponges-to-work-on-lava.patch b/patches/server/0219-Option-for-sponges-to-work-on-lava.patch index 3feb8ab92..30296e491 100644 --- a/patches/server/0219-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0219-Option-for-sponges-to-work-on-lava.patch @@ -18,10 +18,10 @@ index 97b4e3c0d2b1bbde77b135b8595c3bfa190a14cb..02b98cfe47d5d2f3c362a84c6b05e734 ++i; if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c810af51c613e00cdec1699a7dd7473a87c0282..1ddda7015ec0e08124a76d08d4e1d71242552026 100644 +index 56e0b447409edf09bd495fa48f64ef0ff2b67ed6..7e94407fa58ae86f48b27a3bbe2c04e33eebecf9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -899,9 +899,11 @@ public class PurpurWorldConfig { +@@ -900,9 +900,11 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 64; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch index 7521cbf20..20f3bf0c9 100644 --- a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 46b8886b6b17fa145db42aeb380f22ec0ae99ec0..1cab4c037c99babf4e35480de7ffc02b // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); //int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ddda7015ec0e08124a76d08d4e1d71242552026..777045154e903322b8d960b2d82f506533cca622 100644 +index 7e94407fa58ae86f48b27a3bbe2c04e33eebecf9..09eda8b4da4e4a51277e71f53ae5db855b2d7f04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2368,6 +2368,7 @@ public class PurpurWorldConfig { +@@ -2389,6 +2389,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 1ddda7015ec0e08124a76d08d4e1d71242552026..777045154e903322b8d960b2d82f5065 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2388,6 +2389,7 @@ public class PurpurWorldConfig { +@@ -2409,6 +2410,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch index b47107842..51c1a8eff 100644 --- a/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index fa36ad3bb63764778aa7201d90e331e64292c7b4..dfa06b3c7323aeb12b1e234ca27c924a return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 777045154e903322b8d960b2d82f506533cca622..3e926bb772d8ad03821e76e6668ae80fbc6d26b9 100644 +index 09eda8b4da4e4a51277e71f53ae5db855b2d7f04..bb56401a3eea8046ed45c73dcd4d0638455955b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -722,6 +722,11 @@ public class PurpurWorldConfig { +@@ -723,6 +723,11 @@ public class PurpurWorldConfig { buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch); } diff --git a/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch index 539761f6a..4cea7335b 100644 --- a/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0222-Config-to-remove-curse-of-binding-with-weakness.patch @@ -26,10 +26,10 @@ index 111da6398bb561e58571e47743088ce80416234d..0a2c776b9b1da7d0d4481dd527e0068b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3e926bb772d8ad03821e76e6668ae80fbc6d26b9..c1d6985ed59c1aff3aca3bb611f81c7b8f451340 100644 +index bb56401a3eea8046ed45c73dcd4d0638455955b5..8f8a8d00fe47a9dc0248c27122212de4e7b3fab3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,6 +396,7 @@ public class PurpurWorldConfig { +@@ -397,6 +397,7 @@ public class PurpurWorldConfig { public boolean playerArmorSwapping = false; public boolean playerArmorSwappingCreativeMakesCopy = true; public boolean playerRidableInWater = false; @@ -37,7 +37,7 @@ index 3e926bb772d8ad03821e76e6668ae80fbc6d26b9..c1d6985ed59c1aff3aca3bb611f81c7b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -422,6 +423,7 @@ public class PurpurWorldConfig { +@@ -423,6 +424,7 @@ public class PurpurWorldConfig { playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping); playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0223-Conduit-behavior-configuration.patch b/patches/server/0223-Conduit-behavior-configuration.patch index c8af7dfb7..b650a18b7 100644 --- a/patches/server/0223-Conduit-behavior-configuration.patch +++ b/patches/server/0223-Conduit-behavior-configuration.patch @@ -44,10 +44,10 @@ index 96b6e914441ee1faa059aa5ddcf77ffb74e76ae9..31af7d8111e73169d3e02aa52799a018 } CraftEventFactory.blockDamage = null; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c1d6985ed59c1aff3aca3bb611f81c7b8f451340..cdcab2ccc40f05ba028a4b3ea41fb5bb8af1b3de 100644 +index 8f8a8d00fe47a9dc0248c27122212de4e7b3fab3..3f281e92a63dc69b25e19d93757d652bef5df0c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2574,5 +2574,28 @@ public class PurpurWorldConfig { +@@ -2595,5 +2595,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0224-Cauldron-fill-chances.patch b/patches/server/0224-Cauldron-fill-chances.patch index d1da8ac80..c856dc041 100644 --- a/patches/server/0224-Cauldron-fill-chances.patch +++ b/patches/server/0224-Cauldron-fill-chances.patch @@ -18,10 +18,10 @@ index dbae4f3b56d0290c6d28b9beaaa3b459754d43e3..676184c48c3abd8e2fb9a04ae3e165dc @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cdcab2ccc40f05ba028a4b3ea41fb5bb8af1b3de..3136ae211ab3e152f4cc8af6166cec73d3ccc5e5 100644 +index 3f281e92a63dc69b25e19d93757d652bef5df0c5..b8cf6e9037184d5945887748fb9fbfc8bcbc0f2a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2597,5 +2597,12 @@ public class PurpurWorldConfig { +@@ -2618,5 +2618,12 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch index 30cf8c143..e739ece46 100644 --- a/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0225-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index d7bdf3c2a5b99ff7adb3e960ff356a1fad169de0..3ca846cc78ec2ac8c9f840a9ac7f0b87 if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3136ae211ab3e152f4cc8af6166cec73d3ccc5e5..1c7335404e95888b61e2e7f0d24dc36d6eb0d518 100644 +index b8cf6e9037184d5945887748fb9fbfc8bcbc0f2a..a6909960d14de6c0ecea4f47902d73def5441ffa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -131,6 +131,7 @@ public class PurpurWorldConfig { +@@ -132,6 +132,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,7 +29,7 @@ index 3136ae211ab3e152f4cc8af6166cec73d3ccc5e5..1c7335404e95888b61e2e7f0d24dc36d private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -152,6 +153,7 @@ public class PurpurWorldConfig { +@@ -153,6 +154,7 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0226-Shulker-change-color-with-dye.patch b/patches/server/0226-Shulker-change-color-with-dye.patch index fc6c74fa7..403a478fc 100644 --- a/patches/server/0226-Shulker-change-color-with-dye.patch +++ b/patches/server/0226-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index ec7c5f638573ee331112d91cdfaa8511801c6891..e9f4a1de40ab4d7a82d4f222b4aba0aa @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c7335404e95888b61e2e7f0d24dc36d6eb0d518..7d857ac11e1626a057935642c0cde5406910ad3f 100644 +index a6909960d14de6c0ecea4f47902d73def5441ffa..8d63f5a8100792946d898a1caa715e34631d16d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1991,6 +1991,7 @@ public class PurpurWorldConfig { +@@ -2008,6 +2008,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index 1c7335404e95888b61e2e7f0d24dc36d6eb0d518..7d857ac11e1626a057935642c0cde540 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2006,6 +2007,7 @@ public class PurpurWorldConfig { +@@ -2023,6 +2024,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 3bded6fef..91c5e025e 100644 --- a/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5dc9bbc5fe3de52a8a680b1864aeb6fc778c66f7..c062c169ea03a3e945729f0727caf1f4c4adbd07 100644 +index 47bc9a51fa8ad5c3b100e4baff2cb243e9a22f35..97b7a044fc8cdc9df4eda929070b3e8087430919 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1125,6 +1125,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -25,10 +25,10 @@ index 5dc9bbc5fe3de52a8a680b1864aeb6fc778c66f7..c062c169ea03a3e945729f0727caf1f4 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d857ac11e1626a057935642c0cde5406910ad3f..c3b47e1c0f83fe62030e2c108213b785368b8448 100644 +index 8d63f5a8100792946d898a1caa715e34631d16d0..b1545bf97518fd60b54a5a52aec9a2a1d88f3691 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -132,6 +132,8 @@ public class PurpurWorldConfig { +@@ -133,6 +133,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 7d857ac11e1626a057935642c0cde5406910ad3f..c3b47e1c0f83fe62030e2c108213b785 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -154,6 +156,8 @@ public class PurpurWorldConfig { +@@ -155,6 +157,8 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 1e57e51ff..649ad9fbd 100644 --- a/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0230-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index 71e494b949541284b0642dae4b20a6b3ec459828..625ad12e43cc651c986a3b45ce9a7c5b public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS))); public static final Block BIG_DRIPLEAF = register("big_dripleaf", new BigDripleafBlock(BlockBehaviour.Properties.of(Material.PLANT).strength(0.1F).sound(SoundType.BIG_DRIPLEAF))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c3b47e1c0f83fe62030e2c108213b785368b8448..45ac40b7cd52500f88eb54a7bc7d786de52af13d 100644 +index b1545bf97518fd60b54a5a52aec9a2a1d88f3691..3b1d8e8663c5a377567ccd2946839fb3fd66a1f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -682,6 +682,11 @@ public class PurpurWorldConfig { +@@ -683,6 +683,11 @@ public class PurpurWorldConfig { anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); } @@ -60,7 +60,7 @@ index c3b47e1c0f83fe62030e2c108213b785368b8448..45ac40b7cd52500f88eb54a7bc7d786d public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -811,6 +816,11 @@ public class PurpurWorldConfig { +@@ -812,6 +817,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch index f3400d515..331d7cdf4 100644 --- a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch @@ -48,10 +48,10 @@ index fb9fbd708ab8aa9690f8c61182a1590c56b3ee6d..b7499782b5968c33ad530b1557f03ed3 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 45ac40b7cd52500f88eb54a7bc7d786de52af13d..b9ebcb2f9fbf442471fdd93f4526186e84612b04 100644 +index 3b1d8e8663c5a377567ccd2946839fb3fd66a1f5..e777d8fe1e503547763de30706655896767349ae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -403,6 +403,7 @@ public class PurpurWorldConfig { +@@ -404,6 +404,7 @@ public class PurpurWorldConfig { public boolean playerArmorSwappingCreativeMakesCopy = true; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 45ac40b7cd52500f88eb54a7bc7d786de52af13d..b9ebcb2f9fbf442471fdd93f4526186e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -430,6 +431,7 @@ public class PurpurWorldConfig { +@@ -431,6 +432,7 @@ public class PurpurWorldConfig { playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch index 66fd15dc5..d956078c4 100644 --- a/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch @@ -47,10 +47,10 @@ index 49e5a753aae7d72102ee700f3d8309f2f488cc12..022441af276cd9facba1ee4013d9d367 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b9ebcb2f9fbf442471fdd93f4526186e84612b04..e5121042fbd65c742fe04f9ccedf275237645760 100644 +index e777d8fe1e503547763de30706655896767349ae..d0daf9143e941e9f658b5e14145adc1f3af91150 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1174,6 +1174,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1175,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index b9ebcb2f9fbf442471fdd93f4526186e84612b04..e5121042fbd65c742fe04f9ccedf2752 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1188,6 +1189,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch index cfb3e1648..c44cb2cd9 100644 --- a/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0233-Cows-naturally-aggressive-to-players-chance.patch @@ -59,10 +59,10 @@ index 7042b95e92520c5e152af0fa71a553122ec814df..bbd210f8779138b225ce886b3917ca9c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e5121042fbd65c742fe04f9ccedf275237645760..fc98b35e0fe719ebb181977b48f29730a922c4c8 100644 +index d0daf9143e941e9f658b5e14145adc1f3af91150..61cfb6a37139fc2a9ce11f4bd0d557f490afc6d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1127,7 +1127,14 @@ public class PurpurWorldConfig { +@@ -1128,7 +1128,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -77,7 +77,7 @@ index e5121042fbd65c742fe04f9ccedf275237645760..fc98b35e0fe719ebb181977b48f29730 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); if (PurpurConfig.version < 10) { -@@ -1139,6 +1146,8 @@ public class PurpurWorldConfig { +@@ -1140,6 +1147,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch index 363ca1d16..3eacef107 100644 --- a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 31ca5ddf748313f7d6cdee906d13e8dcb616875d..5e9d901d5fd545b94dd04267b90b3f32 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 fc98b35e0fe719ebb181977b48f29730a922c4c8..b555f538284b1b66a090e6682f78d38e666af743 100644 +index 61cfb6a37139fc2a9ce11f4bd0d557f490afc6d9..873b0f9f300990b856d5e4d441053cf4f8d81dda 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -701,11 +701,13 @@ public class PurpurWorldConfig { +@@ -702,11 +702,13 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; diff --git a/patches/server/0235-Halloween-options-and-optimizations.patch b/patches/server/0235-Halloween-options-and-optimizations.patch index 890d49f80..8ca4c0fc7 100644 --- a/patches/server/0235-Halloween-options-and-optimizations.patch +++ b/patches/server/0235-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 9a4806baab135128f30ad9be4369bbe1e543c6df..e4fd49d3c3f4be6d165dd1e1f6bb24a0 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 b555f538284b1b66a090e6682f78d38e666af743..aed9f33c3526bf3075021bced93d40e4e4c3679f 100644 +index 873b0f9f300990b856d5e4d441053cf4f8d81dda..30fbcf65e7d31bccce1e86a32df527557de05496 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1478,6 +1478,13 @@ public class PurpurWorldConfig { +@@ -1479,6 +1479,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0238-Campfire-option-for-lit-when-placed.patch b/patches/server/0238-Campfire-option-for-lit-when-placed.patch index a5abffcf6..34390258e 100644 --- a/patches/server/0238-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0238-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 0b60b545271e62df86a0eb3c1f0f315a014b24cd..44df9e5034887c756c00bdcfb3ea04d4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aed9f33c3526bf3075021bced93d40e4e4c3679f..16f0b3c9167ad6491a1b4a1fd19874e8549a05a1 100644 +index 30fbcf65e7d31bccce1e86a32df527557de05496..0ce648f03aaa9e3e56ae01c3b5e5da941f9da9af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -744,6 +744,11 @@ public class PurpurWorldConfig { +@@ -745,6 +745,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch index fdb5beec3..3567896ed 100644 --- a/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0239-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index d5d84893c77b4e60a19032d765d76bfd24cbbb2b..ef265cec066ef3b84c2b3a4929af5183 protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16f0b3c9167ad6491a1b4a1fd19874e8549a05a1..af3c706d1450437010f69a1202bf684c5024c32d 100644 +index 0ce648f03aaa9e3e56ae01c3b5e5da941f9da9af..f8d5d37afe4ce8f884b927447b0875f3b6e08171 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -222,6 +222,9 @@ public class PurpurWorldConfig { +@@ -223,6 +223,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 16f0b3c9167ad6491a1b4a1fd19874e8549a05a1..af3c706d1450437010f69a1202bf684c private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -268,6 +271,9 @@ public class PurpurWorldConfig { +@@ -269,6 +272,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch index eb01cfa7b..021d90bc7 100644 --- a/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0240-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index c6ba41c2b4cc96bc97ed2e2220c0f3fa4f31dbe3..22a5d2f0de4bdd4432d1beff840f448a itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af3c706d1450437010f69a1202bf684c5024c32d..2f8b50f9957f038425b760f4097492d0aa925bf9 100644 +index f8d5d37afe4ce8f884b927447b0875f3b6e08171..410f15b1aa575cba890ec1ed66476cc4fa03797e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2577,6 +2577,7 @@ public class PurpurWorldConfig { +@@ -2598,6 +2598,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index af3c706d1450437010f69a1202bf684c5024c32d..2f8b50f9957f038425b760f4097492d0 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2593,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2614,6 +2615,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch index 30b569dd4..ff6a8e930 100644 --- a/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -200,10 +200,10 @@ index 5601d0c2fe635a2a4f073c333531e1a8adf1833c..9e7d2fbdfa89736807d2025a5814ddd8 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f8b50f9957f038425b760f4097492d0aa925bf9..0d28c5d40c26d3fb5f5c3510bb9144d833aa8c52 100644 +index 410f15b1aa575cba890ec1ed66476cc4fa03797e..a37c61807883ed31032a47794b3259fa78e887a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -123,6 +123,7 @@ public class PurpurWorldConfig { +@@ -124,6 +124,7 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = false; @@ -211,7 +211,7 @@ index 2f8b50f9957f038425b760f4097492d0aa925bf9..0d28c5d40c26d3fb5f5c3510bb9144d8 public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -146,6 +147,7 @@ public class PurpurWorldConfig { +@@ -147,6 +148,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0242-Signs-allow-color-codes.patch b/patches/server/0242-Signs-allow-color-codes.patch index bb716d579..e103bcc08 100644 --- a/patches/server/0242-Signs-allow-color-codes.patch +++ b/patches/server/0242-Signs-allow-color-codes.patch @@ -70,10 +70,10 @@ index 6371176fba41218a209ea59b4cafe5b2d4a685fd..7666bca74f4f68bb4e902ec2eb7c4895 public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d28c5d40c26d3fb5f5c3510bb9144d833aa8c52..942ce665135c9d7d4dc55580401f31d03cc2c17c 100644 +index a37c61807883ed31032a47794b3259fa78e887a6..9f3e5b797bbb00035093915a8a6277b3be4fb9b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -923,8 +923,10 @@ public class PurpurWorldConfig { +@@ -924,8 +924,10 @@ public class PurpurWorldConfig { } public boolean signRightClickEdit = false; diff --git a/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch index e810a7b57..b16c8a919 100644 --- a/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch +++ b/patches/server/0243-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch @@ -131,10 +131,10 @@ index 35b2bad76c45b5a94ba7f2e9c7a8cfeb8c3f498b..913818656f058990270ed1e4303da1c4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 942ce665135c9d7d4dc55580401f31d03cc2c17c..e34d17ac9a9292871db310704080540e03abd44b 100644 +index 9f3e5b797bbb00035093915a8a6277b3be4fb9b8..193b88dfce1b6db8687ce4552bb6cd26fdee23f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -767,6 +767,11 @@ public class PurpurWorldConfig { +@@ -768,6 +768,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } @@ -146,7 +146,7 @@ index 942ce665135c9d7d4dc55580401f31d03cc2c17c..e34d17ac9a9292871db310704080540e public boolean dispenserApplyCursedArmor = true; public boolean dispenserPlaceAnvils = false; private void dispenserSettings() { -@@ -863,6 +868,16 @@ public class PurpurWorldConfig { +@@ -864,6 +869,16 @@ public class PurpurWorldConfig { mobsSpawnOnBlueIce = getBoolean("blocks.blue_ice.allow-mob-spawns", mobsSpawnOnBlueIce); } @@ -163,7 +163,7 @@ index 942ce665135c9d7d4dc55580401f31d03cc2c17c..e34d17ac9a9292871db310704080540e public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; public int lavaSpeedNether = 10; -@@ -964,6 +979,16 @@ public class PurpurWorldConfig { +@@ -965,6 +980,16 @@ public class PurpurWorldConfig { turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); } @@ -180,7 +180,7 @@ index 942ce665135c9d7d4dc55580401f31d03cc2c17c..e34d17ac9a9292871db310704080540e public boolean waterInfinite = true; public int waterInfiniteRequiredSources = 2; private void waterSources() { -@@ -971,6 +996,16 @@ public class PurpurWorldConfig { +@@ -972,6 +997,16 @@ public class PurpurWorldConfig { waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); } diff --git a/patches/server/0244-Mobs-always-drop-experience.patch b/patches/server/0244-Mobs-always-drop-experience.patch index 76f04805b..68efb5ad4 100644 --- a/patches/server/0244-Mobs-always-drop-experience.patch +++ b/patches/server/0244-Mobs-always-drop-experience.patch @@ -197,7 +197,7 @@ index 97d4caad92a2b54daff12e4909bc7b041ba99094..cbbfcfa93af935ec07986f85948f416d public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 6270c4bad2c4f4f2770bc2cc2688de5ddd18dae4..4c555b7fabb03618cefaf9171002a006684059c6 100644 +index 3ac330e769689b55063c6b5e3ccc2e362f2a4c49..5a5af987d23dcccd81c04d57d701f4cc7bc2df80 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -142,6 +142,11 @@ public class Panda extends Animal { @@ -773,10 +773,10 @@ index 322058dbb82888c70bf770bed58356dc07839188..e8cb4bd5081d1435ab1eeffe559f224d @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index cd6b136960b2c37c6e6d56c4e5f7fd302e49e5e7..9f555a02d2fec242953e5c2d12d68d6a2ff2a30f 100644 +index 87a316e4ae92990800bc1b91ed44ce184b4cd933..e086b048ff4aec4220d95a42688691a58986ac0e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -57,6 +57,11 @@ public class MagmaCube extends Slime { +@@ -67,6 +67,11 @@ public class MagmaCube extends Slime { public boolean isSensitiveToWater() { return this.level.purpurConfig.magmaCubeTakeDamageFromWater; } @@ -789,10 +789,10 @@ index cd6b136960b2c37c6e6d56c4e5f7fd302e49e5e7..9f555a02d2fec242953e5c2d12d68d6a public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 6ba79e10631ffd213d69c55293ec1da6189c66e3..69e0bfc7fdd50567c5370399a2437578a7dc7144 100644 +index 5979d8446ae71e365aa65871808af00fae316016..bf6adaa28142019182b984b3b6aa244af970d6f5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -142,6 +142,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -152,6 +152,11 @@ public class Phantom extends FlyingMob implements Enemy { public boolean isSensitiveToWater() { return this.level.purpurConfig.phantomTakeDamageFromWater; } @@ -885,10 +885,10 @@ index 9350d4dd73db4227ab65452083d1cec73fda9501..6a2340dd54d4a8b688444eb4621c58e0 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index d49ba154d173aa7bf5a679b7bfcc55de851ea34b..641d6e58a1b84c7abc4b9e6c76c35cbe51aeba4d 100644 +index b81cc912b036d1da491bf685139d169cd6055067..538479c14c064d51ccd6e10f021ffc8c5ca9c75f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -130,6 +130,11 @@ public class Slime extends Mob implements Enemy { +@@ -137,6 +137,11 @@ public class Slime extends Mob implements Enemy { public boolean isSensitiveToWater() { return this.level.purpurConfig.slimeTakeDamageFromWater; } @@ -1029,7 +1029,7 @@ index f96d891eeae384a210a7399a605d5d9cb0e3e591..cee685bf0d842ae0600aab2e1e4e372d @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index cb5a04aacf5e9f0f024f3a1c3a38dd88b49d86ee..29cc16f135b15c87345181263d1ff175311533ec 100644 +index e4fd49d3c3f4be6d165dd1e1f6bb24a069bc634a..f3dee40fecac114f5cfffe939d812baad354f8d9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -137,6 +137,11 @@ public class Zombie extends Monster { @@ -1077,7 +1077,7 @@ index fd2828469badbc7936ea68c0bdd8d689c86146b6..3288e9bd8e9758d9f5137614aedd0fc7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 6a41212b1fa2fe61177901dd64c77a92d7d502a4..42d54b36a57759ec4029d3a488d6fd8c7fd299c2 100644 +index 1e2dc76ace2e283a4ba7b81e299c7506e4b684d1..1e71f81479a23117b684e07d4c754524731bdd2b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -92,6 +92,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1093,7 +1093,7 @@ index 6a41212b1fa2fe61177901dd64c77a92d7d502a4..42d54b36a57759ec4029d3a488d6fd8c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 89e4364c6c55b5fa0e34e90c87fc622583277c73..762b1482713e41ad80999f09d16422c44f973233 100644 +index 8d85157acefb588091d96eaa0124049a7cfbe19c..25f4ade47476706d04dc9c93e26c9439cbf4d57a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -116,6 +116,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1157,10 +1157,10 @@ index 1a8df13b06b1ac5e5a7d63033b4a53261c779eda..8be025b735cea47ab3ce6c6b2aef052e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e539ff862 100644 +index 193b88dfce1b6db8687ce4552bb6cd26fdee23f0..7134fbde05d461cb130b19fbb5917ba9a96293bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1019,11 +1019,13 @@ public class PurpurWorldConfig { +@@ -1020,11 +1020,13 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1174,7 +1174,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean batRidable = false; -@@ -1038,6 +1040,7 @@ public class PurpurWorldConfig { +@@ -1039,6 +1041,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1182,7 +1182,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1049,6 +1052,7 @@ public class PurpurWorldConfig { +@@ -1050,6 +1053,7 @@ public class PurpurWorldConfig { } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1190,7 +1190,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean beeRidable = false; -@@ -1059,6 +1063,7 @@ public class PurpurWorldConfig { +@@ -1060,6 +1064,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1198,7 +1198,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1073,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1074,6 +1079,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1206,7 +1206,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean blazeRidable = false; -@@ -1080,6 +1086,7 @@ public class PurpurWorldConfig { +@@ -1081,6 +1087,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 256D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1214,7 +1214,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1091,6 +1098,7 @@ public class PurpurWorldConfig { +@@ -1092,6 +1099,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1222,7 +1222,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean catRidable = false; -@@ -1102,6 +1110,7 @@ public class PurpurWorldConfig { +@@ -1103,6 +1111,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public boolean catTakeDamageFromWater = false; @@ -1230,7 +1230,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1121,12 +1130,14 @@ public class PurpurWorldConfig { +@@ -1122,12 +1131,14 @@ public class PurpurWorldConfig { catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1245,7 +1245,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1137,6 +1148,7 @@ public class PurpurWorldConfig { +@@ -1138,6 +1149,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1253,7 +1253,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean chickenRidable = false; -@@ -1145,6 +1157,7 @@ public class PurpurWorldConfig { +@@ -1146,6 +1158,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1261,7 +1261,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1157,11 +1170,13 @@ public class PurpurWorldConfig { +@@ -1158,11 +1171,13 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1275,7 +1275,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); if (PurpurConfig.version < 10) { -@@ -1171,6 +1186,7 @@ public class PurpurWorldConfig { +@@ -1172,6 +1187,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1283,7 +1283,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean cowRidable = false; -@@ -1181,6 +1197,7 @@ public class PurpurWorldConfig { +@@ -1182,6 +1198,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1291,7 +1291,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1200,6 +1217,7 @@ public class PurpurWorldConfig { +@@ -1201,6 +1218,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1299,7 +1299,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean creeperRidable = false; -@@ -1211,6 +1229,7 @@ public class PurpurWorldConfig { +@@ -1212,6 +1230,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1307,7 +1307,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1226,6 +1245,7 @@ public class PurpurWorldConfig { +@@ -1227,6 +1246,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1315,7 +1315,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean dolphinRidable = false; -@@ -1236,6 +1256,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1257,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1323,7 +1323,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -1250,6 +1271,7 @@ public class PurpurWorldConfig { +@@ -1251,6 +1272,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1331,7 +1331,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean donkeyRidableInWater = false; -@@ -1261,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1262,6 +1284,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1339,7 +1339,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1278,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1279,6 +1302,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1347,7 +1347,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean drownedRidable = false; -@@ -1289,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1314,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1355,7 +1355,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1304,11 +1329,13 @@ public class PurpurWorldConfig { +@@ -1305,11 +1330,13 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1369,7 +1369,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); if (PurpurConfig.version < 10) { -@@ -1318,6 +1345,7 @@ public class PurpurWorldConfig { +@@ -1319,6 +1346,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1377,7 +1377,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean enderDragonRidable = false; -@@ -1360,6 +1388,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1389,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1385,7 +1385,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1382,12 +1411,14 @@ public class PurpurWorldConfig { +@@ -1383,12 +1412,14 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1400,7 +1400,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1398,6 +1429,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1430,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1408,7 +1408,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean evokerRidable = false; -@@ -1405,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1406,6 +1438,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1416,7 +1416,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1416,6 +1449,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1450,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1424,7 +1424,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean foxRidable = false; -@@ -1425,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1426,6 +1460,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1432,7 +1432,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1438,6 +1473,7 @@ public class PurpurWorldConfig { +@@ -1439,6 +1474,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1440,7 +1440,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean ghastRidable = false; -@@ -1445,6 +1481,7 @@ public class PurpurWorldConfig { +@@ -1446,6 +1482,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 256D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1448,7 +1448,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1456,6 +1493,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1494,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1456,7 +1456,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean giantRidable = false; -@@ -1468,6 +1506,7 @@ public class PurpurWorldConfig { +@@ -1469,6 +1507,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1464,7 +1464,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1488,17 +1527,20 @@ public class PurpurWorldConfig { +@@ -1489,17 +1528,20 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1485,7 +1485,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean goatRidable = false; -@@ -1506,17 +1548,20 @@ public class PurpurWorldConfig { +@@ -1507,17 +1549,20 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1506,7 +1506,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); if (PurpurConfig.version < 10) { -@@ -1526,6 +1571,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1572,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1514,7 +1514,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean forceHalloweenSeason = false; -@@ -1540,6 +1586,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1587,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1522,7 +1522,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1551,6 +1598,7 @@ public class PurpurWorldConfig { +@@ -1552,6 +1599,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1530,7 +1530,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean horseRidableInWater = false; -@@ -1563,6 +1611,7 @@ public class PurpurWorldConfig { +@@ -1564,6 +1612,7 @@ public class PurpurWorldConfig { public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; public boolean horseStandWithRider = true; @@ -1538,7 +1538,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1581,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1582,6 +1631,7 @@ public class PurpurWorldConfig { horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); horseStandWithRider = getBoolean("mobs.horse.stand-with-rider", horseStandWithRider); @@ -1546,7 +1546,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean huskRidable = false; -@@ -1591,6 +1641,7 @@ public class PurpurWorldConfig { +@@ -1592,6 +1642,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1554,7 +1554,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1605,6 +1656,7 @@ public class PurpurWorldConfig { +@@ -1606,6 +1657,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1562,7 +1562,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean illusionerRidable = false; -@@ -1613,6 +1665,7 @@ public class PurpurWorldConfig { +@@ -1614,6 +1666,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1570,7 +1570,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1629,6 +1682,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1683,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1578,7 +1578,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean ironGolemRidable = false; -@@ -1637,6 +1691,7 @@ public class PurpurWorldConfig { +@@ -1638,6 +1692,7 @@ public class PurpurWorldConfig { public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; @@ -1586,7 +1586,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1649,6 +1704,7 @@ public class PurpurWorldConfig { +@@ -1650,6 +1705,7 @@ public class PurpurWorldConfig { ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); @@ -1594,7 +1594,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean llamaRidable = false; -@@ -1662,6 +1718,7 @@ public class PurpurWorldConfig { +@@ -1663,6 +1719,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1602,7 +1602,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1681,12 +1738,14 @@ public class PurpurWorldConfig { +@@ -1682,6 +1739,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1610,22 +1610,23 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean magmaCubeRidable = false; - public boolean magmaCubeRidableInWater = false; - public String magmaCubeMaxHealth = "size * size"; +@@ -1691,6 +1749,7 @@ public class PurpurWorldConfig { + public Map magmaCubeMaxHealthCache = new HashMap<>(); + public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; + public boolean magmaCubeAlwaysDropExp = false; private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1697,6 +1756,7 @@ public class PurpurWorldConfig { - } - magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max_health", magmaCubeMaxHealth); +@@ -1704,6 +1763,7 @@ public class PurpurWorldConfig { + magmaCubeMaxHealthCache.clear(); + magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); + magmaCubeAlwaysDropExp = getBoolean("mobs.magma_cube.always-drop-exp", magmaCubeAlwaysDropExp); } public boolean mooshroomRidable = false; -@@ -1704,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1771,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1633,7 +1634,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1715,6 +1776,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1783,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1641,7 +1642,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean muleRidableInWater = false; -@@ -1726,6 +1788,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1795,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1649,7 +1650,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1743,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1813,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1657,7 +1658,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean ocelotRidable = false; -@@ -1750,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1757,6 +1821,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1665,7 +1666,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1761,6 +1826,7 @@ public class PurpurWorldConfig { +@@ -1768,6 +1833,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1673,7 +1674,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean pandaRidable = false; -@@ -1768,6 +1834,7 @@ public class PurpurWorldConfig { +@@ -1775,6 +1841,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1681,7 +1682,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1779,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1786,6 +1853,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1689,7 +1690,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean parrotRidable = false; -@@ -1787,6 +1855,7 @@ public class PurpurWorldConfig { +@@ -1794,6 +1862,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1697,7 +1698,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1799,6 +1868,7 @@ public class PurpurWorldConfig { +@@ -1806,6 +1875,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1705,23 +1706,23 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean phantomRidable = false; -@@ -1828,6 +1898,7 @@ public class PurpurWorldConfig { - public boolean phantomIgnorePlayersWithTorch = false; +@@ -1838,6 +1908,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; + public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; + public boolean phantomAlwaysDropExp = false; private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1861,6 +1932,7 @@ public class PurpurWorldConfig { - phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); +@@ -1878,6 +1949,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); + phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); } public boolean pigRidable = false; -@@ -1869,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1886,6 +1958,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1729,7 +1730,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1881,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1898,6 +1971,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1737,7 +1738,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean piglinRidable = false; -@@ -1889,6 +1963,7 @@ public class PurpurWorldConfig { +@@ -1906,6 +1980,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1745,7 +1746,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1901,12 +1976,14 @@ public class PurpurWorldConfig { +@@ -1918,12 +1993,14 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1760,7 +1761,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1917,6 +1994,7 @@ public class PurpurWorldConfig { +@@ -1934,6 +2011,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1768,7 +1769,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean pillagerRidable = false; -@@ -1924,6 +2002,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +2019,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1776,7 +1777,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1935,6 +2014,7 @@ public class PurpurWorldConfig { +@@ -1952,6 +2031,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1784,7 +1785,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean polarBearRidable = false; -@@ -1944,6 +2024,7 @@ public class PurpurWorldConfig { +@@ -1961,6 +2041,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1792,7 +1793,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1958,11 +2039,13 @@ public class PurpurWorldConfig { +@@ -1975,11 +2056,13 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1806,7 +1807,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); if (PurpurConfig.version < 10) { -@@ -1972,6 +2055,7 @@ public class PurpurWorldConfig { +@@ -1989,6 +2072,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1814,7 +1815,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean rabbitRidable = false; -@@ -1982,6 +2066,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2083,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1822,7 +1823,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1996,6 +2081,7 @@ public class PurpurWorldConfig { +@@ -2013,6 +2098,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1830,7 +1831,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean ravagerRidable = false; -@@ -2004,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2107,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1838,7 +1839,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2032,11 +2119,13 @@ public class PurpurWorldConfig { +@@ -2049,11 +2136,13 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1852,7 +1853,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); if (PurpurConfig.version < 10) { -@@ -2046,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2063,6 +2152,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1860,7 +1861,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean sheepRidable = false; -@@ -2054,6 +2144,7 @@ public class PurpurWorldConfig { +@@ -2071,6 +2161,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1868,7 +1869,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2066,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2083,6 +2174,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1876,7 +1877,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean shulkerRidable = false; -@@ -2078,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2095,6 +2187,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1884,7 +1885,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2094,6 +2187,7 @@ public class PurpurWorldConfig { +@@ -2111,6 +2204,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1892,7 +1893,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean silverfishRidable = false; -@@ -2101,6 +2195,7 @@ public class PurpurWorldConfig { +@@ -2118,6 +2212,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1900,7 +1901,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2112,12 +2207,14 @@ public class PurpurWorldConfig { +@@ -2129,12 +2224,14 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1915,7 +1916,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2128,6 +2225,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2242,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1923,7 +1924,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean skeletonHorseRidableInWater = true; -@@ -2139,6 +2237,7 @@ public class PurpurWorldConfig { +@@ -2156,6 +2254,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1931,7 +1932,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2155,6 +2254,7 @@ public class PurpurWorldConfig { +@@ -2172,6 +2271,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1939,23 +1940,23 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean slimeRidable = false; -@@ -2162,6 +2262,7 @@ public class PurpurWorldConfig { - public String slimeMaxHealth = "size * size"; +@@ -2181,6 +2281,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); + public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; + public boolean slimeAlwaysDropExp = false; private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2173,6 +2274,7 @@ public class PurpurWorldConfig { - slimeMaxHealth = getString("mobs.slime.attributes.max_health", slimeMaxHealth); +@@ -2194,6 +2295,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); + slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); + slimeAlwaysDropExp = getBoolean("mobs.slime.always-drop-exp", slimeAlwaysDropExp); } public boolean snowGolemRidable = false; -@@ -2187,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2208,6 +2310,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1963,7 +1964,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2205,6 +2308,7 @@ public class PurpurWorldConfig { +@@ -2226,6 +2329,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1971,7 +1972,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean squidRidable = false; -@@ -2213,6 +2317,7 @@ public class PurpurWorldConfig { +@@ -2234,6 +2338,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1979,7 +1980,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -2225,12 +2330,14 @@ public class PurpurWorldConfig { +@@ -2246,12 +2351,14 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -1994,7 +1995,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2241,12 +2348,14 @@ public class PurpurWorldConfig { +@@ -2262,12 +2369,14 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2009,7 +2010,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2257,6 +2366,7 @@ public class PurpurWorldConfig { +@@ -2278,6 +2387,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2017,7 +2018,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean striderRidable = false; -@@ -2265,6 +2375,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2396,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2025,7 +2026,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2277,6 +2388,7 @@ public class PurpurWorldConfig { +@@ -2298,6 +2409,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2033,7 +2034,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean traderLlamaRidable = false; -@@ -2289,6 +2401,7 @@ public class PurpurWorldConfig { +@@ -2310,6 +2422,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2041,7 +2042,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2307,11 +2420,13 @@ public class PurpurWorldConfig { +@@ -2328,11 +2441,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2055,7 +2056,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); if (PurpurConfig.version < 10) { -@@ -2321,6 +2436,7 @@ public class PurpurWorldConfig { +@@ -2342,6 +2457,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2063,7 +2064,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean turtleRidable = false; -@@ -2328,6 +2444,7 @@ public class PurpurWorldConfig { +@@ -2349,6 +2465,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2071,7 +2072,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2339,6 +2456,7 @@ public class PurpurWorldConfig { +@@ -2360,6 +2477,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2079,7 +2080,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean vexRidable = false; -@@ -2346,6 +2464,7 @@ public class PurpurWorldConfig { +@@ -2367,6 +2485,7 @@ public class PurpurWorldConfig { public double vexMaxY = 256D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2087,7 +2088,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2357,6 +2476,7 @@ public class PurpurWorldConfig { +@@ -2378,6 +2497,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2095,7 +2096,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean villagerRidable = false; -@@ -2375,6 +2495,7 @@ public class PurpurWorldConfig { +@@ -2396,6 +2516,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2103,7 +2104,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2397,6 +2518,7 @@ public class PurpurWorldConfig { +@@ -2418,6 +2539,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2111,7 +2112,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean vindicatorRidable = false; -@@ -2404,6 +2526,7 @@ public class PurpurWorldConfig { +@@ -2425,6 +2547,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2119,7 +2120,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2415,6 +2538,7 @@ public class PurpurWorldConfig { +@@ -2436,6 +2559,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2127,7 +2128,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean wanderingTraderRidable = false; -@@ -2424,6 +2548,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2569,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2135,7 +2136,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2437,12 +2562,14 @@ public class PurpurWorldConfig { +@@ -2458,12 +2583,14 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2150,7 +2151,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2453,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2474,6 +2601,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2158,7 +2159,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean witherRidable = false; -@@ -2466,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2487,6 +2615,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2166,7 +2167,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2487,12 +2616,14 @@ public class PurpurWorldConfig { +@@ -2508,12 +2637,14 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2181,7 +2182,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2503,6 +2634,7 @@ public class PurpurWorldConfig { +@@ -2524,6 +2655,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2189,7 +2190,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean wolfRidable = false; -@@ -2513,6 +2645,7 @@ public class PurpurWorldConfig { +@@ -2534,6 +2666,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2197,7 +2198,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2531,12 +2664,14 @@ public class PurpurWorldConfig { +@@ -2552,12 +2685,14 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2212,7 +2213,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2547,6 +2682,7 @@ public class PurpurWorldConfig { +@@ -2568,6 +2703,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2220,7 +2221,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean zombieRidable = false; -@@ -2559,6 +2695,7 @@ public class PurpurWorldConfig { +@@ -2580,6 +2716,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2228,7 +2229,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2575,6 +2712,7 @@ public class PurpurWorldConfig { +@@ -2596,6 +2733,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2236,7 +2237,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean zombieHorseRidableInWater = false; -@@ -2587,6 +2725,7 @@ public class PurpurWorldConfig { +@@ -2608,6 +2746,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2244,7 +2245,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2604,6 +2743,7 @@ public class PurpurWorldConfig { +@@ -2625,6 +2764,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2252,7 +2253,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean zombieVillagerRidable = false; -@@ -2617,6 +2757,7 @@ public class PurpurWorldConfig { +@@ -2638,6 +2778,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2260,7 +2261,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2634,6 +2775,7 @@ public class PurpurWorldConfig { +@@ -2655,6 +2796,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2268,7 +2269,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e } public boolean zombifiedPiglinRidable = false; -@@ -2645,6 +2787,7 @@ public class PurpurWorldConfig { +@@ -2666,6 +2808,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2276,7 +2277,7 @@ index e34d17ac9a9292871db310704080540e03abd44b..0d1f3db55c4e26eb9fddedb19130019e private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2660,6 +2803,7 @@ public class PurpurWorldConfig { +@@ -2681,6 +2824,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch index e9ff063ca..e710d2256 100644 --- a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to prevent spiders from climbing world border diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2ed6964132513fa7b38fe4733aea4afd0153a735..ba96f5ae72516c22eea8cb3a26e14c58fb543a71 100644 +index 032bc56ad7700d1ba79efbce32654c57a9434711..1f6183c4fe55168c5a234c6258fb46d49cee3b2d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -234,6 +234,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -39,10 +39,10 @@ index f85daf21ae3d77d2d56c131c6df9aa0715a306ca..6ef3cf19e5374631602e68d15ad431fc } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d1f3db55c4e26eb9fddedb19130019e539ff862..9532ab3e75f67cc3b59d52c3b7b4a59414bc556a 100644 +index 7134fbde05d461cb130b19fbb5917ba9a96293bf..042d93e68f883eda989a08bcffe7be0ff61c8d9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2338,6 +2338,7 @@ public class PurpurWorldConfig { +@@ -2359,6 +2359,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; public boolean spiderAlwaysDropExp = false; @@ -50,7 +50,7 @@ index 0d1f3db55c4e26eb9fddedb19130019e539ff862..9532ab3e75f67cc3b59d52c3b7b4a594 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2349,6 +2350,7 @@ public class PurpurWorldConfig { +@@ -2370,6 +2371,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp); diff --git a/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index d72187c1d..6952b2b26 100644 --- a/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index cc8e94dc7ad93a9b7cf71315f5910daa35bc0778..c0ef9c9c438a2716f5d2cd589a0b4e85 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9532ab3e75f67cc3b59d52c3b7b4a59414bc556a..1ca8076fc9e1ecbd76d818fe1519c7684655dd74 100644 +index 042d93e68f883eda989a08bcffe7be0ff61c8d9b..7810776e47817c16caee500344f8c1d812b5782e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -544,6 +544,8 @@ public class PurpurWorldConfig { +@@ -545,6 +545,8 @@ public class PurpurWorldConfig { public Map axeWaxables = new HashMap<>(); public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); @@ -86,7 +86,7 @@ index 9532ab3e75f67cc3b59d52c3b7b4a59414bc556a..1ca8076fc9e1ecbd76d818fe1519c768 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -685,6 +687,8 @@ public class PurpurWorldConfig { +@@ -686,6 +688,8 @@ public class PurpurWorldConfig { }); hoeTillables.put(block, new Tillable(condition, into, drops)); }); diff --git a/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch index bb9577a04..7a96d4c10 100644 --- a/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0249-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index 860e03111b29f9178a1cd361357985308a39d254..3e72abd93bc5b9f97c2bd62702273d63 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ca8076fc9e1ecbd76d818fe1519c7684655dd74..1282f5be4d7812c64f3feda70f68be1b13ad565b 100644 +index 7810776e47817c16caee500344f8c1d812b5782e..a5c555e736e8883c485a37d86110777921e07489 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2149,6 +2149,7 @@ public class PurpurWorldConfig { +@@ -2166,6 +2166,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 1ca8076fc9e1ecbd76d818fe1519c7684655dd74..1282f5be4d7812c64f3feda70f68be1b private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2162,6 +2163,7 @@ public class PurpurWorldConfig { +@@ -2179,6 +2180,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch index 536266b1c..4d7b0ae2b 100644 --- a/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch @@ -32,10 +32,10 @@ index 5b29f3fced5435e172dd69f6f4eb265e760b6454..f22be8ecef77ba73be758dce40acad6e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1282f5be4d7812c64f3feda70f68be1b13ad565b..a15ecffbb7285668b3c317ec8dae79b5fba92145 100644 +index a5c555e736e8883c485a37d86110777921e07489..0318508770b956b9278466e6f2d1f724a6f5fd70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -976,11 +976,13 @@ public class PurpurWorldConfig { +@@ -977,11 +977,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0251-Mob-head-visibility-percent.patch b/patches/server/0251-Mob-head-visibility-percent.patch index bbded67e0..c283243be 100644 --- a/patches/server/0251-Mob-head-visibility-percent.patch +++ b/patches/server/0251-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index dcadf213c929c693ee60666993288ef09988e62c..233b8e3db8917ab46e29b04e46b5fda6fcd92a20 100644 +index e44b0c3704ca6b7609f6638e43aa8abe1939bfd8..b23c78fe2ad93a88378af90563e90b963f3f4322 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -990,9 +990,17 @@ public abstract class LivingEntity extends Entity { @@ -29,10 +29,10 @@ index dcadf213c929c693ee60666993288ef09988e62c..233b8e3db8917ab46e29b04e46b5fda6 // 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 a15ecffbb7285668b3c317ec8dae79b5fba92145..3bd820de8f7ddf74f4e0f606265f33833134e977 100644 +index 0318508770b956b9278466e6f2d1f724a6f5fd70..f73df2c3cb5c15bf409804de9da14098de355822 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1236,6 +1236,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1237,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -40,7 +40,7 @@ index a15ecffbb7285668b3c317ec8dae79b5fba92145..3bd820de8f7ddf74f4e0f606265f3383 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1252,6 +1253,7 @@ public class PurpurWorldConfig { +@@ -1253,6 +1254,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -48,7 +48,7 @@ index a15ecffbb7285668b3c317ec8dae79b5fba92145..3bd820de8f7ddf74f4e0f606265f3383 } public boolean dolphinRidable = false; -@@ -2223,6 +2225,7 @@ public class PurpurWorldConfig { +@@ -2240,6 +2242,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -56,7 +56,7 @@ index a15ecffbb7285668b3c317ec8dae79b5fba92145..3bd820de8f7ddf74f4e0f606265f3383 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2234,6 +2237,7 @@ public class PurpurWorldConfig { +@@ -2251,6 +2254,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -64,7 +64,7 @@ index a15ecffbb7285668b3c317ec8dae79b5fba92145..3bd820de8f7ddf74f4e0f606265f3383 } public boolean skeletonHorseRidableInWater = true; -@@ -2706,6 +2710,7 @@ public class PurpurWorldConfig { +@@ -2727,6 +2731,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -72,7 +72,7 @@ index a15ecffbb7285668b3c317ec8dae79b5fba92145..3bd820de8f7ddf74f4e0f606265f3383 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2723,6 +2728,7 @@ public class PurpurWorldConfig { +@@ -2744,6 +2749,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/0254-Stop-bees-from-dying-after-stinging.patch b/patches/server/0254-Stop-bees-from-dying-after-stinging.patch index 03716a442..bdc503731 100644 --- a/patches/server/0254-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0254-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 350863ed11b62600dc88324283637a01162acd21..6819e007d892ee855d3e9fdab0340538 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, (int) 1, (int) 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bd820de8f7ddf74f4e0f606265f33833134e977..bcfe7baa38fbb29abce49444f4ca82f23041d76d 100644 +index f73df2c3cb5c15bf409804de9da14098de355822..cbc915076d8ba7da3ca83b43d296f7d36a12b98b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,6 +1070,7 @@ public class PurpurWorldConfig { +@@ -1071,6 +1071,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 3bd820de8f7ddf74f4e0f606265f33833134e977..bcfe7baa38fbb29abce49444f4ca82f2 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1085,6 +1086,7 @@ public class PurpurWorldConfig { +@@ -1086,6 +1087,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/0256-Configurable-farmland-trample-height.patch b/patches/server/0256-Configurable-farmland-trample-height.patch index a3cda722b..91434fbc8 100644 --- a/patches/server/0256-Configurable-farmland-trample-height.patch +++ b/patches/server/0256-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index a750d9cfbb7ba9057004924cac2b5a814501e67e..07314cddf5afd18bc0f06d8b3de7b1dc 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 bcfe7baa38fbb29abce49444f4ca82f23041d76d..4bdd91dc2cd76525af4ba2f6d361e10efdf6fda3 100644 +index cbc915076d8ba7da3ca83b43d296f7d36a12b98b..319f88a66cdcf490ca190f2a0545d4b45a44187f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -833,6 +833,7 @@ public class PurpurWorldConfig { +@@ -834,6 +834,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index bcfe7baa38fbb29abce49444f4ca82f23041d76d..4bdd91dc2cd76525af4ba2f6d361e10e private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -840,6 +841,7 @@ public class PurpurWorldConfig { +@@ -841,6 +842,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/0257-Configurable-player-pickup-exp-delay.patch b/patches/server/0257-Configurable-player-pickup-exp-delay.patch index 3970a96f2..4578e705e 100644 --- a/patches/server/0257-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0257-Configurable-player-pickup-exp-delay.patch @@ -37,10 +37,10 @@ index c8792fee068c13ae45f9eb936ef34fc5cae7ba57..e014859b52f31f29923dc4cf7cc0bf4a } 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 4bdd91dc2cd76525af4ba2f6d361e10efdf6fda3..15c023807a3f5ae3139294d28c5c672a4f111817 100644 +index 319f88a66cdcf490ca190f2a0545d4b45a44187f..fc0352be0e7ed7f5ed6a90c2952bccd2ebee018b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -412,6 +412,7 @@ public class PurpurWorldConfig { +@@ -413,6 +413,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -48,7 +48,7 @@ index 4bdd91dc2cd76525af4ba2f6d361e10efdf6fda3..15c023807a3f5ae3139294d28c5c672a private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -440,6 +441,7 @@ public class PurpurWorldConfig { +@@ -441,6 +442,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/0258-Allow-void-trading.patch b/patches/server/0258-Allow-void-trading.patch index 1b377d6da..83b7ca8b4 100644 --- a/patches/server/0258-Allow-void-trading.patch +++ b/patches/server/0258-Allow-void-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 172589851c2d9fae2af0a27ea750b02e58f8bc56..1ef08117f8249e4eb59b0a10263312e3874b4f0b 100644 +index 97b7a044fc8cdc9df4eda929070b3e8087430919..70bbd689e60901b76e9c1d2aab470e09beaf389b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2564,7 +2564,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18,10 +18,10 @@ index 172589851c2d9fae2af0a27ea750b02e58f8bc56..1ef08117f8249e4eb59b0a10263312e3 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15c023807a3f5ae3139294d28c5c672a4f111817..8c583df41f14e8997d59ec61f06552a273e3ddf7 100644 +index fc0352be0e7ed7f5ed6a90c2952bccd2ebee018b..9e9c0b4ea3247d676f351cc1ef1f246c3b3eb297 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -413,6 +413,7 @@ public class PurpurWorldConfig { +@@ -414,6 +414,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 15c023807a3f5ae3139294d28c5c672a4f111817..8c583df41f14e8997d59ec61f06552a2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -442,6 +443,7 @@ public class PurpurWorldConfig { +@@ -443,6 +444,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/0260-Configurable-phantom-size.patch b/patches/server/0260-Configurable-phantom-size.patch new file mode 100644 index 000000000..989dabc39 --- /dev/null +++ b/patches/server/0260-Configurable-phantom-size.patch @@ -0,0 +1,50 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Mon, 17 Jan 2022 21:28:49 -0600 +Subject: [PATCH] Configurable phantom size + + +diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +index bf6adaa28142019182b984b3b6aa244af970d6f5..520a5a6f3683048d64edc96b6ee69ffbbdb29af9 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +@@ -270,7 +270,11 @@ public class Phantom extends FlyingMob implements Enemy { + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { + this.anchorPoint = this.blockPosition().above(5); +- this.setPhantomSize(0); ++ // Purpur start ++ int min = world.getLevel().purpurConfig.phantomMinSize; ++ int max = world.getLevel().purpurConfig.phantomMaxSize; ++ this.setPhantomSize(min == max ? min : world.getRandom().nextInt(max + 1 - min) + min); ++ // Purpur end + return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); + } + +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 9e9c0b4ea3247d676f351cc1ef1f246c3b3eb297..a1cd8d5bd68b74bc7548105255061e8caf7374a5 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -1925,6 +1925,8 @@ public class PurpurWorldConfig { + public boolean phantomFlamesOnSwoop = false; + public boolean phantomTakeDamageFromWater = false; + public boolean phantomAlwaysDropExp = false; ++ public int phantomMinSize = 0; ++ public int phantomMaxSize = 0; + private void phantomSettings() { + phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); + phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); +@@ -1966,6 +1968,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); ++ phantomMinSize = Mth.clamp(getInt("mobs.phantom.size.min", phantomMinSize), 0, 64); ++ phantomMaxSize = Mth.clamp(getInt("mobs.phantom.size.max", phantomMaxSize), 0, 64); ++ if (phantomMinSize > phantomMaxSize) { ++ phantomMinSize = phantomMinSize ^ phantomMaxSize; ++ phantomMaxSize = phantomMinSize ^ phantomMaxSize; ++ phantomMinSize = phantomMinSize ^ phantomMaxSize; ++ } + } + + public boolean pigRidable = false; diff --git a/patches/server/0260-Fix-lightning.patch b/patches/server/0260-Fix-lightning.patch deleted file mode 100644 index f86f9ba18..000000000 --- a/patches/server/0260-Fix-lightning.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Mon, 17 Jan 2022 18:09:10 -0600 -Subject: [PATCH] Fix lightning - - -diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1ef08117f8249e4eb59b0a10263312e3874b4f0b..d225e7cca9f46d53991be2d2c665457f401c5945 100644 ---- a/src/main/java/net/minecraft/server/level/ServerLevel.java -+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -804,7 +804,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - gameprofilerfiller.push("thunder"); - final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - -- if (!this.paperConfig.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0 && chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -+ if (!this.paperConfig.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning // Purpur - blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper - if (this.isRainingAt(blockposition)) { - DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); -diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 2b697f0d0b59b5af5aa59850d5e501cde9acf577..6b0b466515f3484ab8c03c547af0c712170d20fa 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -99,7 +99,7 @@ public class LevelChunk extends ChunkAccess { - // shouldDoLightning compiles down to 29 bytes, which with the default of 35 byte inlining should guarantee an inline - public final boolean shouldDoLightning(java.util.Random random) { - if (this.lightningTick-- <= 0) { -- this.lightningTick = random.nextInt(100000) << 1; -+ this.lightningTick = random.nextInt(this.level.spigotConfig.thunderChance) << 1; // Purpur - return true; - } - return false;