From 17c72b537cae4525e1fc76476af55e84b26fe7c0 Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Wed, 8 Jun 2022 11:50:34 -0400 Subject: [PATCH] 200/273 --- gradle.properties | 2 +- .../0101-Infinity-bow-settings.patch} | 2 +- .../0102-Configurable-daylight-cycle.patch} | 20 +- ...e-and-mending-enchantments-together.patch} | 4 +- ...4-Furnace-uses-lava-from-underneath.patch} | 16 +- ...ws-should-not-reset-despawn-counter.patch} | 4 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 4 +- ...ustable-breeding-cooldown-to-config.patch} | 16 +- ...-entity-breeding-times-configurable.patch} | 176 ++++---- ...es-from-item-forms-of-entities-to-e.patch} | 60 +-- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 2 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 10 +- ...12-Add-configurable-snowball-damage.patch} | 2 +- ...3-Changeable-Mob-Left-Handed-Chance.patch} | 16 +- .../0114-Add-boat-fall-damage-config.patch} | 6 +- ...0115-Snow-Golem-rate-of-fire-config.patch} | 8 +- ...-Configurable-disable-give-dropping.patch} | 8 +- ...illager-Clerics-to-farm-Nether-Wart.patch} | 66 +-- ...ied-Piglin-death-always-counting-as.patch} | 8 +- ...timise-player-list-ticksSpread-out-.patch} | 6 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 15 +- ...1-Configurable-default-collar-color.patch} | 16 +- .../0122-Phantom-flames-on-swoop.patch} | 8 +- ...-to-open-even-with-a-solid-block-on.patch} | 6 +- .../0124-Implement-TPSBar.patch} | 32 +- .../0125-Striders-give-saddle-back.patch} | 10 +- .../0126-PlayerBookTooLargeEvent.patch} | 6 +- ...herite-armor-grants-fire-resistance.patch} | 6 +- ...128-Fix-rotating-UP-DOWN-CW-and-CCW.patch} | 6 +- ...efing-bypass-to-everything-affected.patch} | 144 +++--- ...llow-Note-Block-sounds-when-blocked.patch} | 12 +- ...131-Add-EntityTeleportHinderedEvent.patch} | 16 +- .../0132-Farmland-trampling-changes.patch} | 4 +- ...3-Movement-options-for-armor-stands.patch} | 10 +- .../0134-Fix-stuck-in-portals.patch} | 10 +- ...ggle-for-water-sensitive-mob-damage.patch} | 418 +++++++++--------- ...6-Config-to-always-tame-in-Creative.patch} | 14 +- .../0137-End-crystal-explosion-options.patch} | 2 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 16 +- .../0139-Dont-run-with-scissors.patch} | 38 +- .../0140-One-Punch-Man.patch} | 6 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 4 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 6 +- ...d-back-player-spawned-endermite-API.patch} | 4 +- ...n-aggressiveness-towards-Endermites.patch} | 8 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 8 +- .../0146-Tick-fluids-config.patch} | 6 +- ...47-Config-to-disable-Llama-caravans.patch} | 8 +- ...g-to-make-Creepers-explode-on-death.patch} | 8 +- ...rable-ravager-griefable-blocks-list.patch} | 12 +- ...150-Sneak-to-bulk-process-composter.patch} | 12 +- .../0151-Config-for-skipping-night.patch} | 6 +- ...152-Add-config-for-villager-trading.patch} | 14 +- .../0153-Allow-infinity-on-crossbows.patch} | 14 +- .../0154-Drowning-Settings.patch} | 12 +- ...reak-individual-slabs-when-sneaking.patch} | 8 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 23 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 4 +- ...tion-to-make-doors-require-redstone.patch} | 4 +- ...Config-to-allow-for-unsafe-enchants.patch} | 14 +- ...0160-Configurable-sponge-absorption.patch} | 12 +- .../0161-Projectile-offset-config.patch} | 6 +- ...or-powered-rail-activation-distance.patch} | 4 +- .../0163-Piglin-portal-spawn-modifier.patch} | 10 +- ...Config-to-change-max-number-of-bees.patch} | 10 +- ...-Config-for-wither-explosion-radius.patch} | 6 +- .../0166-Gamemode-extra-permissions.patch} | 14 +- ...ng-the-blocks-that-turn-into-dirt-p.patch} | 6 +- ...0168-Configurable-piston-push-limit.patch} | 6 +- ...169-Configurable-broadcast-settings.patch} | 16 +- .../0170-Configurable-mob-blindness.patch} | 6 +- ...hidden-players-from-entity-selector.patch} | 6 +- ...-to-impact-Creeper-explosion-radius.patch} | 8 +- .../0173-Iron-golem-calm-anger-options.patch} | 12 +- .../0174-Breedable-parrots.patch} | 18 +- ...gurable-powered-rail-boost-modifier.patch} | 6 +- ...ge-multiplier-critical-damage-value.patch} | 6 +- ...n-to-disable-dragon-egg-teleporting.patch} | 2 +- ...fig-for-unverified-username-message.patch} | 12 +- ...-anvil-cumulative-cost-configurable.patch} | 8 +- ...0-ShulkerBox-allow-oversized-stacks.patch} | 12 +- ...e-can-work-when-raining-or-at-night.patch} | 14 +- ...82-API-for-any-mob-to-burn-daylight.patch} | 50 ++- .../0183-Config-MobEffect-by-world.patch} | 8 +- ...eacon-Activation-Range-Configurable.patch} | 6 +- ...0185-Add-toggle-for-sand-duping-fix.patch} | 4 +- ...gle-for-end-portal-safe-teleporting.patch} | 10 +- .../0187-Flying-Fall-Damage-API.patch} | 10 +- ...ke-lightning-rod-range-configurable.patch} | 14 +- ...ng-food-fills-hunger-bar-completely.patch} | 10 +- ...ayer-join-full-server-by-permission.patch} | 6 +- ...ermission-bypass-for-portal-waiting.patch} | 8 +- ...2-Shulker-spawn-from-bullet-options.patch} | 14 +- ...ating-glow-berries-adds-glow-effect.patch} | 6 +- ...-Option-to-make-drowned-break-doors.patch} | 10 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- .../0196-Enhance-SysoutCatcher.patch} | 0 .../0197-Armor-click-equip-options.patch} | 12 +- .../0198-Add-uptime-command.patch} | 14 +- .../server/0199-Structure-seed-options.patch | 34 ++ .../0200-Tool-actionable-options.patch} | 17 +- .../0104-Stonecutter-damage.patch | 0 ...0144-Add-config-for-snow-on-blue-ice.patch | 0 ...ble-damage-settings-for-magma-blocks.patch | 0 .../0204-Structure-seed-options.patch | 65 --- 105 files changed, 941 insertions(+), 967 deletions(-) rename patches/{unapplied/0103-Infinity-bow-settings.patch => server/0101-Infinity-bow-settings.patch} (97%) rename patches/{unapplied/0105-Configurable-daylight-cycle.patch => server/0102-Configurable-daylight-cycle.patch} (88%) rename patches/{unapplied/0106-Allow-infinite-and-mending-enchantments-together.patch => server/0103-Allow-infinite-and-mending-enchantments-together.patch} (93%) rename patches/{unapplied/0107-Furnace-uses-lava-from-underneath.patch => server/0104-Furnace-uses-lava-from-underneath.patch} (86%) rename patches/{unapplied/0108-Arrows-should-not-reset-despawn-counter.patch => server/0105-Arrows-should-not-reset-despawn-counter.patch} (86%) rename patches/{unapplied/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => server/0106-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (90%) rename patches/{unapplied/0110-Add-adjustable-breeding-cooldown-to-config.patch => server/0107-Add-adjustable-breeding-cooldown-to-config.patch} (91%) rename patches/{unapplied/0111-Make-entity-breeding-times-configurable.patch => server/0108-Make-entity-breeding-times-configurable.patch} (86%) rename patches/{unapplied/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch => server/0109-Apply-display-names-from-item-forms-of-entities-to-e.patch} (79%) rename patches/{unapplied/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => server/0110-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (95%) rename patches/{unapplied/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => server/0111-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (85%) rename patches/{unapplied/0115-Add-configurable-snowball-damage.patch => server/0112-Add-configurable-snowball-damage.patch} (95%) rename patches/{unapplied/0116-Changeable-Mob-Left-Handed-Chance.patch => server/0113-Changeable-Mob-Left-Handed-Chance.patch} (63%) rename patches/{unapplied/0117-Add-boat-fall-damage-config.patch => server/0114-Add-boat-fall-damage-config.patch} (92%) rename patches/{unapplied/0118-Snow-Golem-rate-of-fire-config.patch => server/0115-Snow-Golem-rate-of-fire-config.patch} (91%) rename patches/{unapplied/0119-EMC-Configurable-disable-give-dropping.patch => server/0116-EMC-Configurable-disable-give-dropping.patch} (86%) rename patches/{unapplied/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (83%) rename patches/{unapplied/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (91%) rename patches/{unapplied/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch => server/0119-Spread-out-and-optimise-player-list-ticksSpread-out-.patch} (91%) rename patches/{unapplied/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch => server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch} (95%) rename patches/{unapplied/0124-Configurable-default-collar-color.patch => server/0121-Configurable-default-collar-color.patch} (87%) rename patches/{unapplied/0125-Phantom-flames-on-swoop.patch => server/0122-Phantom-flames-on-swoop.patch} (86%) rename patches/{unapplied/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch => server/0123-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (86%) rename patches/{unapplied/0127-Implement-TPSBar.patch => server/0124-Implement-TPSBar.patch} (93%) rename patches/{unapplied/0128-Striders-give-saddle-back.patch => server/0125-Striders-give-saddle-back.patch} (86%) rename patches/{unapplied/0129-PlayerBookTooLargeEvent.patch => server/0126-PlayerBookTooLargeEvent.patch} (91%) rename patches/{unapplied/0130-Full-netherite-armor-grants-fire-resistance.patch => server/0127-Full-netherite-armor-grants-fire-resistance.patch} (93%) rename patches/{unapplied/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch => server/0128-Fix-rotating-UP-DOWN-CW-and-CCW.patch} (83%) rename patches/{unapplied/0132-Add-mobGriefing-bypass-to-everything-affected.patch => server/0129-Add-mobGriefing-bypass-to-everything-affected.patch} (90%) rename patches/{unapplied/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch => server/0130-Config-to-allow-Note-Block-sounds-when-blocked.patch} (79%) rename patches/{unapplied/0134-Add-EntityTeleportHinderedEvent.patch => server/0131-Add-EntityTeleportHinderedEvent.patch} (93%) rename patches/{unapplied/0135-Farmland-trampling-changes.patch => server/0132-Farmland-trampling-changes.patch} (94%) rename patches/{unapplied/0136-Movement-options-for-armor-stands.patch => server/0133-Movement-options-for-armor-stands.patch} (91%) rename patches/{unapplied/0137-Fix-stuck-in-portals.patch => server/0134-Fix-stuck-in-portals.patch} (88%) rename patches/{unapplied/0138-Toggle-for-water-sensitive-mob-damage.patch => server/0135-Toggle-for-water-sensitive-mob-damage.patch} (88%) rename patches/{unapplied/0139-Config-to-always-tame-in-Creative.patch => server/0136-Config-to-always-tame-in-Creative.patch} (91%) rename patches/{unapplied/0140-End-crystal-explosion-options.patch => server/0137-End-crystal-explosion-options.patch} (98%) rename patches/{unapplied/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (86%) rename patches/{unapplied/0142-Dont-run-with-scissors.patch => server/0139-Dont-run-with-scissors.patch} (84%) rename patches/{unapplied/0143-One-Punch-Man.patch => server/0140-One-Punch-Man.patch} (91%) rename patches/{unapplied/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => server/0141-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (96%) rename patches/{unapplied/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch => server/0142-Config-to-ignore-nearby-mobs-when-sleeping.patch} (89%) rename patches/{unapplied/0147-Add-back-player-spawned-endermite-API.patch => server/0143-Add-back-player-spawned-endermite-API.patch} (94%) rename patches/{unapplied/0148-Config-Enderman-aggressiveness-towards-Endermites.patch => server/0144-Config-Enderman-aggressiveness-towards-Endermites.patch} (91%) rename patches/{unapplied/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => server/0145-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (90%) rename patches/{unapplied/0150-Tick-fluids-config.patch => server/0146-Tick-fluids-config.patch} (93%) rename patches/{unapplied/0151-Config-to-disable-Llama-caravans.patch => server/0147-Config-to-disable-Llama-caravans.patch} (91%) rename patches/{unapplied/0152-Config-to-make-Creepers-explode-on-death.patch => server/0148-Config-to-make-Creepers-explode-on-death.patch} (92%) rename patches/{unapplied/0153-Configurable-ravager-griefable-blocks-list.patch => server/0149-Configurable-ravager-griefable-blocks-list.patch} (90%) rename patches/{unapplied/0154-Sneak-to-bulk-process-composter.patch => server/0150-Sneak-to-bulk-process-composter.patch} (90%) rename patches/{unapplied/0155-Config-for-skipping-night.patch => server/0151-Config-for-skipping-night.patch} (90%) rename patches/{unapplied/0156-Add-config-for-villager-trading.patch => server/0152-Add-config-for-villager-trading.patch} (89%) rename patches/{unapplied/0157-Allow-infinity-on-crossbows.patch => server/0153-Allow-infinity-on-crossbows.patch} (91%) rename patches/{unapplied/0158-Drowning-Settings.patch => server/0154-Drowning-Settings.patch} (86%) rename patches/{unapplied/0159-Break-individual-slabs-when-sneaking.patch => server/0155-Break-individual-slabs-when-sneaking.patch} (91%) rename patches/{unapplied/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch => server/0156-Config-to-disable-hostile-mob-spawn-on-ice.patch} (71%) rename patches/{unapplied/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch => server/0157-Config-to-show-Armor-Stand-arms-on-spawn.patch} (92%) rename patches/{unapplied/0162-Option-to-make-doors-require-redstone.patch => server/0158-Option-to-make-doors-require-redstone.patch} (96%) rename patches/{unapplied/0163-Config-to-allow-for-unsafe-enchants.patch => server/0159-Config-to-allow-for-unsafe-enchants.patch} (92%) rename patches/{unapplied/0164-Configurable-sponge-absorption.patch => server/0160-Configurable-sponge-absorption.patch} (87%) rename patches/{unapplied/0165-Projectile-offset-config.patch => server/0161-Projectile-offset-config.patch} (97%) rename patches/{unapplied/0166-Config-for-powered-rail-activation-distance.patch => server/0162-Config-for-powered-rail-activation-distance.patch} (91%) rename patches/{unapplied/0167-Piglin-portal-spawn-modifier.patch => server/0163-Piglin-portal-spawn-modifier.patch} (89%) rename patches/{unapplied/0168-Config-to-change-max-number-of-bees.patch => server/0164-Config-to-change-max-number-of-bees.patch} (86%) rename patches/{unapplied/0170-Config-for-wither-explosion-radius.patch => server/0165-Config-for-wither-explosion-radius.patch} (92%) rename patches/{unapplied/0171-Gamemode-extra-permissions.patch => server/0166-Gamemode-extra-permissions.patch} (92%) rename patches/{unapplied/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch => server/0167-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch} (90%) rename patches/{unapplied/0173-Configurable-piston-push-limit.patch => server/0168-Configurable-piston-push-limit.patch} (89%) rename patches/{unapplied/0174-Configurable-broadcast-settings.patch => server/0169-Configurable-broadcast-settings.patch} (81%) rename patches/{unapplied/0175-Configurable-mob-blindness.patch => server/0170-Configurable-mob-blindness.patch} (91%) rename patches/{unapplied/0176-Hide-hidden-players-from-entity-selector.patch => server/0171-Hide-hidden-players-from-entity-selector.patch} (96%) rename patches/{unapplied/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch => server/0172-Config-for-health-to-impact-Creeper-explosion-radius.patch} (90%) rename patches/{unapplied/0178-Iron-golem-calm-anger-options.patch => server/0173-Iron-golem-calm-anger-options.patch} (93%) rename patches/{unapplied/0179-Breedable-parrots.patch => server/0174-Breedable-parrots.patch} (84%) rename patches/{unapplied/0180-Configurable-powered-rail-boost-modifier.patch => server/0175-Configurable-powered-rail-boost-modifier.patch} (89%) rename patches/{unapplied/0181-Add-config-change-multiplier-critical-damage-value.patch => server/0176-Add-config-change-multiplier-critical-damage-value.patch} (89%) rename patches/{unapplied/0182-Option-to-disable-dragon-egg-teleporting.patch => server/0177-Option-to-disable-dragon-egg-teleporting.patch} (95%) rename patches/{unapplied/0183-Config-for-unverified-username-message.patch => server/0178-Config-for-unverified-username-message.patch} (78%) rename patches/{unapplied/0184-Make-anvil-cumulative-cost-configurable.patch => server/0179-Make-anvil-cumulative-cost-configurable.patch} (87%) rename patches/{unapplied/0185-ShulkerBox-allow-oversized-stacks.patch => server/0180-ShulkerBox-allow-oversized-stacks.patch} (86%) rename patches/{unapplied/0186-Bee-can-work-when-raining-or-at-night.patch => server/0181-Bee-can-work-when-raining-or-at-night.patch} (86%) rename patches/{unapplied/0187-API-for-any-mob-to-burn-daylight.patch => server/0182-API-for-any-mob-to-burn-daylight.patch} (89%) rename patches/{unapplied/0188-Config-MobEffect-by-world.patch => server/0183-Config-MobEffect-by-world.patch} (94%) rename patches/{unapplied/0189-Beacon-Activation-Range-Configurable.patch => server/0184-Beacon-Activation-Range-Configurable.patch} (90%) rename patches/{unapplied/0190-Add-toggle-for-sand-duping-fix.patch => server/0185-Add-toggle-for-sand-duping-fix.patch} (93%) rename patches/{unapplied/0191-Add-toggle-for-end-portal-safe-teleporting.patch => server/0186-Add-toggle-for-end-portal-safe-teleporting.patch} (88%) rename patches/{unapplied/0192-Flying-Fall-Damage-API.patch => server/0187-Flying-Fall-Damage-API.patch} (82%) rename patches/{unapplied/0193-Make-lightning-rod-range-configurable.patch => server/0188-Make-lightning-rod-range-configurable.patch} (76%) rename patches/{unapplied/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch => server/0189-Burp-after-eating-food-fills-hunger-bar-completely.patch} (91%) rename patches/{unapplied/0195-Allow-player-join-full-server-by-permission.patch => server/0190-Allow-player-join-full-server-by-permission.patch} (80%) rename patches/{unapplied/0196-Add-permission-bypass-for-portal-waiting.patch => server/0191-Add-permission-bypass-for-portal-waiting.patch} (83%) rename patches/{unapplied/0197-Shulker-spawn-from-bullet-options.patch => server/0192-Shulker-spawn-from-bullet-options.patch} (90%) rename patches/{unapplied/0198-Eating-glow-berries-adds-glow-effect.patch => server/0193-Eating-glow-berries-adds-glow-effect.patch} (94%) rename patches/{unapplied/0199-Option-to-make-drowned-break-doors.patch => server/0194-Option-to-make-drowned-break-doors.patch} (89%) rename patches/{unapplied/0200-Configurable-hunger-starvation-damage.patch => server/0195-Configurable-hunger-starvation-damage.patch} (92%) rename patches/{unapplied/0201-Enhance-SysoutCatcher.patch => server/0196-Enhance-SysoutCatcher.patch} (100%) rename patches/{unapplied/0202-Armor-click-equip-options.patch => server/0197-Armor-click-equip-options.patch} (92%) rename patches/{unapplied/0203-Add-uptime-command.patch => server/0198-Add-uptime-command.patch} (94%) create mode 100644 patches/server/0199-Structure-seed-options.patch rename patches/{unapplied/0205-Tool-actionable-options.patch => server/0200-Tool-actionable-options.patch} (97%) rename patches/{unapplied => todo}/0104-Stonecutter-damage.patch (100%) rename patches/{unapplied => todo}/0144-Add-config-for-snow-on-blue-ice.patch (100%) rename patches/{unapplied => todo}/0169-Configurable-damage-settings-for-magma-blocks.patch (100%) delete mode 100644 patches/unapplied/0204-Structure-seed-options.patch diff --git a/gradle.properties b/gradle.properties index 097c3afe6..54e3618e0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19-R0.1-SNAPSHOT -paperCommit = a6bc17b8bb2e74d9e3bf91edbcd10ca0bbe76a47 +paperCommit = 7a165c9c5dfc68678a03a4676a18914a10cd01f6 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/unapplied/0103-Infinity-bow-settings.patch b/patches/server/0101-Infinity-bow-settings.patch similarity index 97% rename from patches/unapplied/0103-Infinity-bow-settings.patch rename to patches/server/0101-Infinity-bow-settings.patch index 553b9edcf..a66b2cfbe 100644 --- a/patches/unapplied/0103-Infinity-bow-settings.patch +++ b/patches/server/0101-Infinity-bow-settings.patch @@ -27,7 +27,7 @@ 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 99f99096c773ddc14f4abe5a17ebe4c88d298c8d..de8d17bc900190b20e56e9002b936ec0ca16bd26 100644 +index 93d95018b67a31270c2d8b14d156c3c3c2fe9801..fca524c9ca25a08d5230fb62f658588a0149c7dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,17 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0105-Configurable-daylight-cycle.patch b/patches/server/0102-Configurable-daylight-cycle.patch similarity index 88% rename from patches/unapplied/0105-Configurable-daylight-cycle.patch rename to patches/server/0102-Configurable-daylight-cycle.patch index 203186f51..cf295c7e3 100644 --- a/patches/unapplied/0105-Configurable-daylight-cycle.patch +++ b/patches/server/0102-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ 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 d54e88162fbfe03de3f607d7fb10c9ed0bf311c4..9d156683ee46eb168048b90dd1819ae3dd87e408 100644 +index 47f1fb6851834183a28ef97ccbf6c53746e528a2..1a3f709c8aa455f1ce7e63751074044b85b14d19 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1570,7 +1570,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { blockEntity.cookingProgress = Mth.clamp(blockEntity.cookingProgress - 2, (int) 0, blockEntity.cookingTotalTime); -@@ -399,6 +416,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -414,6 +431,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit setChanged(world, pos, state); } @@ -48,7 +48,7 @@ index 888e1f2bc6ea4ddbbcc5466f177233f25b290459..99c207457ec9d1a1b7d9e7becfcc8aae private static boolean canBurn(@Nullable Recipe recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6961d623c5718638c75e2a8775ffcbed65e9bdc..5e19075f9244ba96f2420273139c520b1c11f613 100644 +index 074864c2181340d2744cbbb9d4066e37f36870c5..2f93fec6b2e5f9a924b5e49abd7275e76c354e44 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -401,6 +401,17 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0108-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0105-Arrows-should-not-reset-despawn-counter.patch similarity index 86% rename from patches/unapplied/0108-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0105-Arrows-should-not-reset-despawn-counter.patch index daa942cab..d49fd4e02 100644 --- a/patches/unapplied/0108-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0105-Arrows-should-not-reset-despawn-counter.patch @@ -7,10 +7,10 @@ This prevents keeping arrows alive indefinitely (such as when the block the arrow is stuck in gets removed, like a piston head going up/down) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index c5cbcf8d6b26bbb7712d3a72f8313f600dfc7c11..50b531cdaa26af8e06007552fc18cabddbd5f0de 100644 +index 1d75abd1659b37deedff794dcf9ff83028d2b738..46cf2734e9a3eec934f3ad810b30d8de80843b0c 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -321,7 +321,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -322,7 +322,7 @@ public abstract class AbstractArrow extends Projectile { Vec3 vec3d = this.getDeltaMovement(); this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F))); diff --git a/patches/unapplied/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0106-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 90% rename from patches/unapplied/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0106-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 952935ae3..b3c883058 100644 --- a/patches/unapplied/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0106-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index f9c363a9148d30b1ecc8f744a7eaa131a9fd1428..c61e8887e697806378686b3b1ffca2b154d1a074 100644 +index 4208833252a5b5c74d294dc3435869d71d774e37..a3ff99c461dd862733816d9d1204cf8b347663fe 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -112,6 +112,14 @@ public class FarmBlock extends Block { @@ -24,7 +24,7 @@ index f9c363a9148d30b1ecc8f744a7eaa131a9fd1428..c61e8887e697806378686b3b1ffca2b1 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e19075f9244ba96f2420273139c520b1c11f613..4616d5d99e08a9be8ccbee3c67046dc3226b1d7b 100644 +index 2f93fec6b2e5f9a924b5e49abd7275e76c354e44..164f9271aab50d23a3bf03877fb5285da3c3a069 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -397,8 +397,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0110-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch similarity index 91% rename from patches/unapplied/0110-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch index 2154c7995..f551aad87 100644 --- a/patches/unapplied/0110-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 3f57ad6cbf29ebe1ac3781368c4f57efc9640aa4..fe00672e0231fd1e9fdb91c86d3e76bf505ee15f 100644 +index 6216513805add7c8f52e1ed6c77e2d26786b3ab5..34e82b97c5b294f0a6423581220403a10264da8b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -151,7 +151,7 @@ public abstract class Animal extends AgeableMob { +@@ -150,7 +150,7 @@ public abstract class Animal extends AgeableMob { if (this.isFood(itemstack)) { int i = this.getAge(); @@ -16,8 +16,8 @@ index 3f57ad6cbf29ebe1ac3781368c4f57efc9640aa4..fe00672e0231fd1e9fdb91c86d3e76bf + if (!this.level.isClientSide && i == 0 && this.canFallInLove() && (this.level.purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level.hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur this.usePlayerItem(player, hand, itemstack); this.setInLove(player); - this.gameEvent(GameEvent.MOB_INTERACT, this.eyeBlockPosition()); -@@ -240,6 +240,14 @@ public abstract class Animal extends AgeableMob { + return InteractionResult.SUCCESS; +@@ -237,6 +237,14 @@ public abstract class Animal extends AgeableMob { if (entityplayer == null && other.getLoveCause() != null) { entityplayer = other.getLoveCause(); } @@ -33,10 +33,10 @@ index 3f57ad6cbf29ebe1ac3781368c4f57efc9640aa4..fe00672e0231fd1e9fdb91c86d3e76bf entityageable.setBaby(true); entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f0d382fdafdf97a0f5cced19f9a6bfa9e817c889..40e01ed99a129a6a14f9c5cc29f046bd23d198cb 100644 +index 0990d2f68e2fec89295f127fef48c7e6f7cd24c0..07ae3e667ca22b6c0434c103c61016e3e67e3d65 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -183,6 +183,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -189,6 +189,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -86,7 +86,7 @@ index f0d382fdafdf97a0f5cced19f9a6bfa9e817c889..40e01ed99a129a6a14f9c5cc29f046bd public CraftWorld getWorld() { return this.world; } -@@ -276,6 +319,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -273,6 +316,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -95,7 +95,7 @@ index f0d382fdafdf97a0f5cced19f9a6bfa9e817c889..40e01ed99a129a6a14f9c5cc29f046bd this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4616d5d99e08a9be8ccbee3c67046dc3226b1d7b..54ae2e855d2572a788d852d17a998311691687a0 100644 +index 164f9271aab50d23a3bf03877fb5285da3c3a069..7c203f8b0120d07263c0a96422a69173daebd89e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -109,6 +109,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0108-Make-entity-breeding-times-configurable.patch similarity index 86% rename from patches/unapplied/0111-Make-entity-breeding-times-configurable.patch rename to patches/server/0108-Make-entity-breeding-times-configurable.patch index 89830e277..92ace11ca 100644 --- a/patches/unapplied/0111-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0108-Make-entity-breeding-times-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index d51ab5e4dc93b805bf51f752542f53b2a97fdb20..dcc5d55a3274de1b2b22eab2ab7bf2c0ca013249 100644 +index b3adff55870c673d753f05dee4540bef0d142c7b..bf30980cf41db70e70a0ca4e51d32c331d8a56e7 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -@@ -119,8 +119,10 @@ public class VillagerMakeLove extends Behavior { +@@ -123,8 +123,10 @@ public class VillagerMakeLove extends Behavior { return Optional.empty(); } // CraftBukkit end @@ -22,10 +22,10 @@ index d51ab5e4dc93b805bf51f752542f53b2a97fdb20..dcc5d55a3274de1b2b22eab2ab7bf2c0 world.broadcastEntityEvent(entityvillager2, (byte) 12); return Optional.of(entityvillager2); diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index fe00672e0231fd1e9fdb91c86d3e76bf505ee15f..5771737891b17956a4964a112099f4313e2e55d4 100644 +index 34e82b97c5b294f0a6423581220403a10264da8b..a0c3a27a90e0788b573f0776c25cfc6e0fba5458 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -40,6 +40,7 @@ public abstract class Animal extends AgeableMob { +@@ -39,6 +39,7 @@ public abstract class Animal extends AgeableMob { @Nullable public UUID loveCause; public ItemStack breedItem; // CraftBukkit - Add breedItem variable @@ -33,7 +33,7 @@ index fe00672e0231fd1e9fdb91c86d3e76bf505ee15f..5771737891b17956a4964a112099f431 protected Animal(EntityType type, Level world) { super(type, world); -@@ -264,8 +265,10 @@ public abstract class Animal extends AgeableMob { +@@ -261,8 +262,10 @@ public abstract class Animal extends AgeableMob { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, other, entityageable); } @@ -47,10 +47,10 @@ index fe00672e0231fd1e9fdb91c86d3e76bf505ee15f..5771737891b17956a4964a112099f431 other.resetLove(); world.addFreshEntityWithPassengers(entityageable, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 9245baa69aefee786c442e3b46a323a9c7f22eea..3b272c0e3710885fa0a4ef9b39bfa8874a972e0d 100644 +index 21bd1f6f24715351d46573964438bcb7304575f5..374a026de1fec53ba3433e528d03ad103fa25f86 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -218,6 +218,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -219,6 +219,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.beeMaxHealth); } @@ -63,10 +63,10 @@ index 9245baa69aefee786c442e3b46a323a9c7f22eea..3b272c0e3710885fa0a4ef9b39bfa887 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 81b63da3bca3e3942ed037fad15ad8f883fc0c82..b3df26d3e957f93987d48878a3f320db5e9b229e 100644 +index 90ef6c8d5371b62d043320d493d624ae18737f07..c6812166ee708100850561a0573be81af76ecfa5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -152,6 +152,11 @@ public class Cat extends TamableAnimal { +@@ -123,6 +123,11 @@ public class Cat extends TamableAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.catMaxHealth); } @@ -79,10 +79,10 @@ index 81b63da3bca3e3942ed037fad15ad8f883fc0c82..b3df26d3e957f93987d48878a3f320db public ResourceLocation getResourceLocation() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index ad1b52f93e45e1d42c7b31aefe879a692d782ffc..839cb9ff15132f3461317c5ead7c486a0b6fe5e0 100644 +index 96dceb9943c4320e0edfba47cc211d60aa92323b..fe266b94d08b8977451f75ec87c19497ac0ab975 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -75,6 +75,11 @@ public class Chicken extends Animal { +@@ -76,6 +76,11 @@ public class Chicken extends Animal { this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(2.0D); } } @@ -111,7 +111,7 @@ index 732c560383da3b8a270139758f29734d73b775be..b063a74327e51b3cd27427426b92ef68 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 4b42d8047f70d23eed09b6210b447ae2a272af0a..8a73267128c7e165651b97cd46f65f9cd373a1ea 100644 +index f03bd9a9129f0d45d36ef56a726d513a8cc088e5..aa18947d3822a1093985799e87ad6c2b28f51eb1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -183,6 +183,11 @@ public class Fox extends Animal { @@ -126,7 +126,7 @@ index 4b42d8047f70d23eed09b6210b447ae2a272af0a..8a73267128c7e165651b97cd46f65f9c // Purpur end @Override -@@ -967,8 +972,10 @@ public class Fox extends Animal { +@@ -969,8 +974,10 @@ public class Fox extends Animal { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,7 +140,7 @@ index 4b42d8047f70d23eed09b6210b447ae2a272af0a..8a73267128c7e165651b97cd46f65f9c this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index d4237fce253b2414337344b327250c1db2b19dfa..d7c68775fc39222be66bc82e0e7a1b0ae3238f7a 100644 +index 1bf3f1cf537c75aa32d1531ee77a4d08ad4b69bf..6cd1a173857b9815073d4bb5020ebe6582844418 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -84,6 +84,11 @@ public class MushroomCow extends Cow implements Shearable { @@ -156,7 +156,7 @@ index d4237fce253b2414337344b327250c1db2b19dfa..d7c68775fc39222be66bc82e0e7a1b0a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index a90c3e0c9f0064690bd17e5b132fbcfb360fa6b2..0719a17e886b6525d7ed091f1759eed12a945034 100644 +index 3697238a818aac364d62f779fe6b622494a9f658..25f01fe6bda429a13188e62aee68d242c9d5404b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -88,6 +88,11 @@ public class Ocelot extends Animal { @@ -172,7 +172,7 @@ index a90c3e0c9f0064690bd17e5b132fbcfb360fa6b2..0719a17e886b6525d7ed091f1759eed1 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 bcbf20728b4c9a181771984c54af742f07fd9855..83fdc33da473c8ddf69bb20125bf38f6801f8fce 100644 +index 47b03fd6a45b03f438fc9e4025dd2d7e70c273b6..260fb72d48e2e2c6d27ab21b8a5049235d51555c 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 { @@ -188,10 +188,10 @@ index bcbf20728b4c9a181771984c54af742f07fd9855..83fdc33da473c8ddf69bb20125bf38f6 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 91b8117238e76c00d758180df5cfd70ae76ace22..1539668c100352f7e8980f3b9db02b6fb979299b 100644 +index d8dce6968861cb03f2b1b7631fc54f3c91ebdd9f..b15fd1a01f273cf1d3dc2965a9d3584f75579e2d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -189,6 +189,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -190,6 +190,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.parrotMaxHealth); } @@ -204,7 +204,7 @@ index 91b8117238e76c00d758180df5cfd70ae76ace22..1539668c100352f7e8980f3b9db02b6f @Nullable diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java -index 7787d30ad7bb9aa6041c369a368deb382c9554c2..93f670fe1512ec18272c2e4d71735bcbdbc87eda 100644 +index d4348bd3877813295d01d0171fee2d59981734b9..179b4767283090467d5f415ce1cce44007f1e937 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -84,6 +84,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -220,7 +220,7 @@ index 7787d30ad7bb9aa6041c369a368deb382c9554c2..93f670fe1512ec18272c2e4d71735bcb @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index b370a0c392f69a1b42a4908ae012ee4c6bf6984d..0f4a0e50e701c3fb75536e0b6d7821046e7f8f66 100644 +index e68782ac48fd9ee11080dfd76c88d9a4768ae769..c0c7edfc243378bce9bb44d29c58d948b95a9310 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -118,6 +118,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -236,10 +236,10 @@ index b370a0c392f69a1b42a4908ae012ee4c6bf6984d..0f4a0e50e701c3fb75536e0b6d782104 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 5b30a1d34d7efb1a5c86ae187027313fec1fd700..8d44949c54f9cba0848b4f7b82c573325c134d9d 100644 +index 799ef179e1e02ec0a23a785cf2b31d5390ee29c8..e990e6f416854197bd5a4d31e4c7acc3fb69b390 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -141,6 +141,11 @@ public class Rabbit extends Animal { +@@ -142,6 +142,11 @@ public class Rabbit extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.rabbitMaxHealth); } @@ -252,7 +252,7 @@ index 5b30a1d34d7efb1a5c86ae187027313fec1fd700..8d44949c54f9cba0848b4f7b82c57332 // CraftBukkit start - code from constructor diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 9d6765e2bd6bfdd39728bdd14cabbe4bf33d96ac..86f398fc79dcc5dd24a61483d292e228dd6ab83b 100644 +index 2368c807e9c7146c186654a390e23af99addb804..dfd8d795abbe3912658c9d847424424e83006408 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -136,6 +136,11 @@ public class Sheep extends Animal implements Shearable { @@ -268,10 +268,10 @@ index 9d6765e2bd6bfdd39728bdd14cabbe4bf33d96ac..86f398fc79dcc5dd24a61483d292e228 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 54ad776603158f101c0199395f70dadb80301a8d..e3bf2c2bc16bc03c17d90f2ce1620c6b895e9bf7 100644 +index 94d0a8d94a210f62e4102f091c886bb7c48f8834..539777cb24e7427542ac43665585d3acea9f888c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -104,6 +104,11 @@ public class Turtle extends Animal { +@@ -102,6 +102,11 @@ public class Turtle extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.turtleMaxHealth); } @@ -284,7 +284,7 @@ index 54ad776603158f101c0199395f70dadb80301a8d..e3bf2c2bc16bc03c17d90f2ce1620c6b public void setHomePos(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 6312284ee33eef280a51392d7e0ba8d2ae3c9d5e..702a4b674013a455d179d88d3931f6c216c1ca89 100644 +index 01c8508571a88c22359cbf36341338c5497e4d45..28e35304e76b26af734fcfbccef8f43143345576 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -127,6 +127,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -300,10 +300,10 @@ index 6312284ee33eef280a51392d7e0ba8d2ae3c9d5e..702a4b674013a455d179d88d3931f6c2 @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 c194c215ec742dd5a527af98ef7d8a707193921a..0f38b65d490cde61cfc256719f91cc0a955b4080 100644 +index 53aef0ac481c3e79dfb04c33cb17bbdd89b2438b..cf5b71dd336341556f5b9effa531bc8d42e5880d 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 -@@ -124,6 +124,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -122,6 +122,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.axolotlMaxHealth); } @@ -316,10 +316,10 @@ index c194c215ec742dd5a527af98ef7d8a707193921a..0f38b65d490cde61cfc256719f91cc0a @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 c5a86e91465e725fd11d19fd668c1ba6bbe981ac..a697a094679c61e357177bc22e628c347b39a4d9 100644 +index 49b289fce943719a63df454fefab725a2b3a7de5..6d3a39c0f65e19cff3c13355a53995df34ee136f 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 { +@@ -109,6 +109,11 @@ public class Goat extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.goatMaxHealth); } @@ -348,10 +348,10 @@ index f0da5d107ddb2987ccc89f880ddba5e79fadf0c5..113b6d80885717d59c8fefab07afe687 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 9f7203608e15fdce1bfbaf419838768763d61378..2c5cb1b759a0b6e0233345da5a968288ec338837 100644 +index 559378175e0de56b4b4eb3b8ad4cf8a4980895a9..3144c7e7b018a1e8a907691b798e656500f57430 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -59,6 +59,11 @@ public class Horse extends AbstractHorse { +@@ -60,6 +60,11 @@ public class Horse extends AbstractHorse { public double generateRandomSpeed() { return generateRandomSpeed(this.level.purpurConfig.horseMovementSpeedMin, this.level.purpurConfig.horseMovementSpeedMax); } @@ -364,7 +364,7 @@ index 9f7203608e15fdce1bfbaf419838768763d61378..2c5cb1b759a0b6e0233345da5a968288 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 93c6e0d538dfa796b5a5b4f57d3f76fa2eef77ab..5553cffdbaf308c543d0afed467acd3e6a0f8956 100644 +index 5b15b9451007a0ffcf442a33de81ff5d8b8649a5..24b80622da9ddebb8544f25e8c01047c41a5fd86 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -131,6 +131,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -396,7 +396,7 @@ index 1ba32a3ba56974425762026026d1e5ba21540b3b..88e61572f5dd8d05fadab131046f74bd @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 3c3be1a40f04def3f2ffb6567fa5be0581b5608d..e7910b0bbb061f524909757dab4c7e59c0dc40c9 100644 +index c74f6d3384d3d18a5c591c87fc2f0850443b5afc..063602f2ccced778194b268d3d7dd00bdffd73ff 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -50,6 +50,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -428,10 +428,10 @@ index 89f3c480d2e8cc28bb26fcd65a5a51a652e7365a..bdb71283d402656a3da6dd699d4cd6a5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 48b72eb4051d612648a1978b38299c0c37a3a289..b6d9ba8dd5694952ca2eba54726ac5e587175250 100644 +index cb5981c2233dcf880fef660fe2c3f39408e8984f..5f6235ea148d11c9e875e0d6646ceb84d4fa8d5b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -@@ -47,6 +47,11 @@ public class ZombieHorse extends AbstractHorse { +@@ -48,6 +48,11 @@ public class ZombieHorse extends AbstractHorse { public double generateRandomSpeed() { return generateRandomSpeed(this.level.purpurConfig.zombieHorseMovementSpeedMin, this.level.purpurConfig.zombieHorseMovementSpeedMax); } @@ -444,7 +444,7 @@ index 48b72eb4051d612648a1978b38299c0c37a3a289..b6d9ba8dd5694952ca2eba54726ac5e5 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index e3f7816bb261c7772d86bd117ce30a53e77f44d1..0046bc4f7a1fb7bb40da955570d56c7cb87aa687 100644 +index c252a8f04fefbf50a8065026ace02e532ff6e307..eb2083d67f9486a24d2f0aa4bf1f5ba8a00e23a3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -116,6 +116,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -458,9 +458,9 @@ index e3f7816bb261c7772d86bd117ce30a53e77f44d1..0046bc4f7a1fb7bb40da955570d56c7c + } // Purpur end - public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { + public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource 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 65e6fbd8077777c63908f9faf6e387d28c86e808..5f879e65f3a6c0fea3e962716b61651fd54bcf6d 100644 +index 958b32de685653e75a9495cb0108e6982cc4cc97..748718c41d26dd49a69142ddc1f9cbe355e120ce 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 { @@ -476,10 +476,10 @@ index 65e6fbd8077777c63908f9faf6e387d28c86e808..5f879e65f3a6c0fea3e962716b61651f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3db068eca 100644 +index 7c203f8b0120d07263c0a96422a69173daebd89e..f2015098f6470a7f8ab37174138b84dc288c9ad8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -486,10 +486,12 @@ public class PurpurWorldConfig { +@@ -481,10 +481,12 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; @@ -492,7 +492,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean batRidable = false; -@@ -522,6 +524,7 @@ public class PurpurWorldConfig { +@@ -517,6 +519,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -500,7 +500,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -533,6 +536,7 @@ public class PurpurWorldConfig { +@@ -528,6 +531,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -508,7 +508,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean blazeRidable = false; -@@ -560,6 +564,7 @@ public class PurpurWorldConfig { +@@ -555,6 +559,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -516,7 +516,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -573,6 +578,7 @@ public class PurpurWorldConfig { +@@ -568,6 +573,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); @@ -524,7 +524,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean caveSpiderRidable = false; -@@ -596,6 +602,7 @@ public class PurpurWorldConfig { +@@ -591,6 +597,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -532,7 +532,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -607,6 +614,7 @@ public class PurpurWorldConfig { +@@ -602,6 +609,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -540,7 +540,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean codRidable = false; -@@ -628,6 +636,7 @@ public class PurpurWorldConfig { +@@ -623,6 +631,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -548,7 +548,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -639,6 +648,7 @@ public class PurpurWorldConfig { +@@ -634,6 +643,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -556,7 +556,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean creeperRidable = false; -@@ -690,6 +700,7 @@ public class PurpurWorldConfig { +@@ -685,6 +695,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -564,7 +564,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -705,6 +716,7 @@ public class PurpurWorldConfig { +@@ -700,6 +711,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); @@ -572,7 +572,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean drownedRidable = false; -@@ -824,6 +836,7 @@ public class PurpurWorldConfig { +@@ -819,6 +831,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -580,7 +580,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -835,6 +848,7 @@ public class PurpurWorldConfig { +@@ -830,6 +843,7 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -588,7 +588,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean ghastRidable = false; -@@ -902,11 +916,13 @@ public class PurpurWorldConfig { +@@ -897,11 +911,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = false; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -602,7 +602,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean guardianRidable = false; -@@ -927,6 +943,7 @@ public class PurpurWorldConfig { +@@ -922,6 +938,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = false; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -610,7 +610,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -937,6 +954,7 @@ public class PurpurWorldConfig { +@@ -932,6 +949,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -618,7 +618,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean horseRidableInWater = false; -@@ -946,6 +964,7 @@ public class PurpurWorldConfig { +@@ -941,6 +959,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -626,7 +626,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -961,6 +980,7 @@ public class PurpurWorldConfig { +@@ -956,6 +975,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); @@ -634,7 +634,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean huskRidable = false; -@@ -1038,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1033,6 +1053,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -642,7 +642,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1055,6 +1076,7 @@ public class PurpurWorldConfig { +@@ -1050,6 +1071,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); @@ -650,7 +650,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean magmaCubeRidable = false; -@@ -1083,6 +1105,7 @@ public class PurpurWorldConfig { +@@ -1078,6 +1100,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = false; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -658,7 +658,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1093,6 +1116,7 @@ public class PurpurWorldConfig { +@@ -1088,6 +1111,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -666,7 +666,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean muleRidableInWater = false; -@@ -1102,6 +1126,7 @@ public class PurpurWorldConfig { +@@ -1097,6 +1121,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -674,7 +674,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1117,12 +1142,14 @@ public class PurpurWorldConfig { +@@ -1112,12 +1137,14 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -689,7 +689,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1133,12 +1160,14 @@ public class PurpurWorldConfig { +@@ -1128,12 +1155,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -704,7 +704,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1149,6 +1178,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1173,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -712,7 +712,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean parrotRidable = false; -@@ -1244,6 +1274,7 @@ public class PurpurWorldConfig { +@@ -1239,6 +1269,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -720,7 +720,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1255,6 +1286,7 @@ public class PurpurWorldConfig { +@@ -1250,6 +1281,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -728,7 +728,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean piglinRidable = false; -@@ -1311,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1306,6 +1338,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -736,7 +736,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1324,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1319,6 +1352,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; @@ -744,7 +744,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean pufferfishRidable = false; -@@ -1346,6 +1380,7 @@ public class PurpurWorldConfig { +@@ -1341,6 +1375,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -752,7 +752,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1358,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1353,6 +1388,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); @@ -760,7 +760,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean ravagerRidable = false; -@@ -1394,6 +1430,7 @@ public class PurpurWorldConfig { +@@ -1389,6 +1425,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = false; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -768,7 +768,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1404,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1436,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -776,7 +776,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean shulkerRidable = false; -@@ -1579,6 +1617,7 @@ public class PurpurWorldConfig { +@@ -1574,6 +1612,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -784,7 +784,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1589,6 +1628,7 @@ public class PurpurWorldConfig { +@@ -1584,6 +1623,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -792,7 +792,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean traderLlamaRidable = false; -@@ -1600,6 +1640,7 @@ public class PurpurWorldConfig { +@@ -1595,6 +1635,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -800,7 +800,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1617,6 +1658,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1653,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); @@ -808,7 +808,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean tropicalFishRidable = false; -@@ -1637,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1674,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = false; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -816,7 +816,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1647,6 +1690,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1685,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -824,23 +824,23 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 } public boolean vexRidable = false; -@@ -1678,6 +1722,7 @@ public class PurpurWorldConfig { - public int villagerSpawnIronGolemRadius = 0; - public int villagerSpawnIronGolemLimit = 0; +@@ -1671,6 +1715,7 @@ public class PurpurWorldConfig { + public boolean villagerFollowEmeraldBlock = false; + public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; + public int villagerBreedingTicks = 6000; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1695,6 +1740,7 @@ public class PurpurWorldConfig { - villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); - villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); +@@ -1686,6 +1731,7 @@ public class PurpurWorldConfig { + villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); + villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); + villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); } public boolean vindicatorRidable = false; -@@ -1797,6 +1843,7 @@ public class PurpurWorldConfig { +@@ -1788,6 +1834,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -848,7 +848,7 @@ index 54ae2e855d2572a788d852d17a998311691687a0..662167abae0bfd964fb08741b4660ba3 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1807,6 +1854,7 @@ public class PurpurWorldConfig { +@@ -1798,6 +1845,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/unapplied/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0109-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 79% rename from patches/unapplied/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0109-Apply-display-names-from-item-forms-of-entities-to-e.patch index 5d25e48ca..ce6d59531 100644 --- a/patches/unapplied/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0109-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Apply display names from item forms of entities to entities diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index dc1630a1a769f848059f576c3d1220a216b5465c..50370dc8697569a4e5cf8ec3714d227a59357d64 100644 +index 9b71425f2c321d3130a409a0a5b47ac9c0c4bae6..29939e851e38fcd494c7556760191e0100bc2e07 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -596,7 +596,13 @@ public class ArmorStand extends LivingEntity { +@@ -594,7 +594,13 @@ public class ArmorStand extends LivingEntity { } private void brokenByPlayer(DamageSource damageSource) { @@ -25,10 +25,10 @@ index dc1630a1a769f848059f576c3d1220a216b5465c..50370dc8697569a4e5cf8ec3714d227a } diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index f134a2e68d50fba021b19fac4c75fb35d0e252c6..37133b573d41f1ce67cf1fe6ae7429c52b9bbd0a 100644 +index d2a77b4ca343d19e1c70afe3f3906a9bd53d0eec..2a3ec299283c2cc039877eade6e2ddee8f3812ea 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -265,7 +265,13 @@ public class ItemFrame extends HangingEntity { +@@ -267,7 +267,13 @@ public class ItemFrame extends HangingEntity { } if (alwaysDrop) { @@ -44,10 +44,10 @@ index f134a2e68d50fba021b19fac4c75fb35d0e252c6..37133b573d41f1ce67cf1fe6ae7429c5 if (!itemstack.isEmpty()) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -index 359f6cf63319ad9f125cdea848852def8a1ec1c8..b5ff43e866c3c43085e91b38c31c4845682e7555 100644 +index 18697701ca6406b2a74f190b22d5b276359547d0..ee72748a8c07587c95bdce8f982fcdd73e8fd8f4 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -102,7 +102,13 @@ public class Painting extends HangingEntity { +@@ -143,7 +143,13 @@ public class Painting extends HangingEntity { } } @@ -63,26 +63,26 @@ index 359f6cf63319ad9f125cdea848852def8a1ec1c8..b5ff43e866c3c43085e91b38c31c4845 } diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -index e4febdebc760f9babd77c55e87acccdc1625f0a5..04f9ef39aa4c27200c4c55c50f6eabc0f420cf80 100644 +index fabc444f819e7ecf9a1e7b156276e1ec63b53a08..72eecae88812c0b55df07e7019ae79cd81dbd2cf 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -207,7 +207,13 @@ public class Boat extends Entity { - } - // CraftBukkit end - if (!flag && this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { -- this.spawnAtLocation((ItemLike) this.getDropItem()); -+ // Purpur start -+ final ItemStack boat = new ItemStack(this.getDropItem()); -+ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ boat.setHoverName(this.getCustomName()); -+ } -+ this.spawnAtLocation(boat); -+ // Purpur end - } +@@ -220,7 +220,13 @@ public class Boat extends Entity { + } - this.discard(); + protected void destroy(DamageSource source) { +- this.spawnAtLocation((ItemLike) this.getDropItem()); ++ // Purpur start ++ final ItemStack boat = new ItemStack(this.getDropItem()); ++ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { ++ boat.setHoverName(this.getCustomName()); ++ } ++ this.spawnAtLocation(boat); ++ // Purpur end + } + + @Override diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java -index 3344e3f8ed0fe56217aae7ad9ed32ed4cc19bd07..623627e411ec4ca8168748bfa42e432133612309 100644 +index af81ba310dbd7fdbdccdd0cc74b7c085ad54027f..3e529ea7548a2a6617f70a3c3ad2d8f482c1b5e5 100644 --- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java @@ -60,6 +60,14 @@ public class ArmorStandItem extends Item { @@ -99,12 +99,12 @@ index 3344e3f8ed0fe56217aae7ad9ed32ed4cc19bd07..623627e411ec4ca8168748bfa42e4321 + // Purpur end worldserver.addFreshEntityWithPassengers(entityarmorstand); world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F); - world.gameEvent(context.getPlayer(), GameEvent.ENTITY_PLACE, (Entity) entityarmorstand); + entityarmorstand.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer()); diff --git a/src/main/java/net/minecraft/world/item/BoatItem.java b/src/main/java/net/minecraft/world/item/BoatItem.java -index 8c590da15b2dbca867efaaadcc3db3bb8309d444..49fe3a66dd3660b94d450dfd408de13a31f5e94d 100644 +index 447e16f06c1686c2a2c6c12c856bdb937a5d050f..c923ca8c405e415999148c0148d2d8238097692d 100644 --- a/src/main/java/net/minecraft/world/item/BoatItem.java +++ b/src/main/java/net/minecraft/world/item/BoatItem.java -@@ -67,6 +67,11 @@ public class BoatItem extends Item { +@@ -69,6 +69,11 @@ public class BoatItem extends Item { entityboat.setType(this.type); entityboat.setYRot(user.getYRot()); @@ -117,10 +117,10 @@ index 8c590da15b2dbca867efaaadcc3db3bb8309d444..49fe3a66dd3660b94d450dfd408de13a return InteractionResultHolder.fail(itemstack); } else { diff --git a/src/main/java/net/minecraft/world/item/HangingEntityItem.java b/src/main/java/net/minecraft/world/item/HangingEntityItem.java -index 0284201b0bb0f5c9a4a2393cf0d83e8e21262df3..1f46a2be362ed5f60a7ca75916fe7bd491e90db7 100644 +index 4c5671cd4c26c23e61b2196577c554f504a03c55..678e0cb7e5b704ce01eda96b2d74694d0e0b7614 100644 --- a/src/main/java/net/minecraft/world/item/HangingEntityItem.java +++ b/src/main/java/net/minecraft/world/item/HangingEntityItem.java -@@ -40,7 +40,7 @@ public class HangingEntityItem extends Item { +@@ -41,7 +41,7 @@ public class HangingEntityItem extends Item { return InteractionResult.FAIL; } else { Level world = context.getLevel(); @@ -128,8 +128,8 @@ index 0284201b0bb0f5c9a4a2393cf0d83e8e21262df3..1f46a2be362ed5f60a7ca75916fe7bd4 + Entity object; // Purpur if (this.type == EntityType.PAINTING) { - object = new Painting(world, blockposition1, enumdirection); -@@ -58,6 +58,11 @@ public class HangingEntityItem extends Item { + Optional optional = Painting.create(world, blockposition1, enumdirection); +@@ -65,6 +65,11 @@ public class HangingEntityItem extends Item { if (nbttagcompound != null) { EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, nbttagcompound); @@ -142,7 +142,7 @@ 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 662167abae0bfd964fb08741b4660ba3db068eca..bb21296b581ba3674425d32665d8a1f30063e177 100644 +index f2015098f6470a7f8ab37174138b84dc288c9ad8..2f76cb4f1755393fa3c5fab3b5094f38f23e6ce5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0110-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 95% rename from patches/unapplied/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0110-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 72271de10..8c2145350 100644 --- a/patches/unapplied/0113-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0110-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ 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 f0ec5498b5a814f644cb105dc3e6ec927d0dffe4..1dfd19712d883935dc59123d1b2468ed42453152 100644 +index 2f76cb4f1755393fa3c5fab3b5094f38f23e6ce5..99578dba4d30263024eedef3084e46bb7c08c465 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,9 +97,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0111-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 85% rename from patches/unapplied/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0111-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index e5f118110..4d1b6c45b 100644 --- a/patches/unapplied/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0111-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. 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 7b41dc359ae3ba49511717172619d2f7b58f02bf..018d94c3540bf6241d57fe915b5037978601dc2d 100644 +index d058bafa0b9dff551d5f26f18e1652df250a8de4..2bff3ace8ea2bd2ee3ec6025c41208e283dee266 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -473,7 +473,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -471,7 +471,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { @@ -21,10 +21,10 @@ index 7b41dc359ae3ba49511717172619d2f7b58f02bf..018d94c3540bf6241d57fe915b503797 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 b087f61d16656df5050691ee194d94063e0de054..c5051a9d495853c6abe025c34f6a08f0a55b110c 100644 +index 99578dba4d30263024eedef3084e46bb7c08c465..119da5f019b83d6c725003bba08842363b6d4115 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -792,6 +792,7 @@ public class PurpurWorldConfig { +@@ -787,6 +787,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index b087f61d16656df5050691ee194d94063e0de054..c5051a9d495853c6abe025c34f6a08f0 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -803,6 +804,7 @@ public class PurpurWorldConfig { +@@ -798,6 +799,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/unapplied/0115-Add-configurable-snowball-damage.patch b/patches/server/0112-Add-configurable-snowball-damage.patch similarity index 95% rename from patches/unapplied/0115-Add-configurable-snowball-damage.patch rename to patches/server/0112-Add-configurable-snowball-damage.patch index 517df10ee..d5b744d29 100644 --- a/patches/unapplied/0115-Add-configurable-snowball-damage.patch +++ b/patches/server/0112-Add-configurable-snowball-damage.patch @@ -18,7 +18,7 @@ index ed2f039c4042861bcfa2e41d8281eefd37daa9fa..d5d84893c77b4e60a19032d765d76bfd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2c3bc12d5d0f4342a684bc14d5b00bcd309716d..cafa9168b688ba141b96ba0a243048b5a00841cd 100644 +index 119da5f019b83d6c725003bba08842363b6d4115..7ccfccaaa3a4105751cdccdefa0784e7657bb503 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -315,6 +315,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0116-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0113-Changeable-Mob-Left-Handed-Chance.patch similarity index 63% rename from patches/unapplied/0116-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0113-Changeable-Mob-Left-Handed-Chance.patch index 04cebba88..2ef69d3a8 100644 --- a/patches/unapplied/0116-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0113-Changeable-Mob-Left-Handed-Chance.patch @@ -5,20 +5,20 @@ 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 8f53dd70d815493148709fbdff29a85924d12d00..079bfd97262cec9084d3491b3dd68f1506274f43 100644 +index 7dd8fdb921e8ad0a2d21f67241ed7c07614347a0..034aa7c98397bd9e4fd1e615e3cdad7e3473eb70 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1226,7 +1226,7 @@ public abstract class Mob extends LivingEntity { - @Nullable - public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { - this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", this.random.nextGaussian() * 0.05D, AttributeModifier.Operation.MULTIPLY_BASE)); -- if (this.random.nextFloat() < 0.05F) { -+ if (this.random.nextFloat() < world.getLevel().purpurConfig.entityLeftHandedChance) { // Purpur +@@ -1233,7 +1233,7 @@ public abstract class Mob extends LivingEntity { + RandomSource randomsource = world.getRandom(); + + this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); +- if (randomsource.nextFloat() < 0.05F) { ++ if (randomsource.nextFloat() < world.getLevel().purpurConfig.entityLeftHandedChance) { // Purpur this.setLeftHanded(true); } 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 63212c3d00a4aabb9f14b50016f43aa9e1f10249..367ce7f6003be23ffe2228e26365cb894089d4b4 100644 +index 7ccfccaaa3a4105751cdccdefa0784e7657bb503..b5b9217aeffb10219f06e196e91060ea24326b47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -150,8 +150,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0117-Add-boat-fall-damage-config.patch b/patches/server/0114-Add-boat-fall-damage-config.patch similarity index 92% rename from patches/unapplied/0117-Add-boat-fall-damage-config.patch rename to patches/server/0114-Add-boat-fall-damage-config.patch index 74c8aabaa..41c2bb980 100644 --- a/patches/unapplied/0117-Add-boat-fall-damage-config.patch +++ b/patches/server/0114-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 10806ceb46832aa80ffaa1df45c7ec0d1c112dd7..b5beb009479ad743be64ae48b278d0864e163ed4 100644 +index 03faa935d23b53b4749469b0b9b8e8ea2fe83c82..4209f076877e560f2e0463281c0a343526cab5e4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1023,7 +1023,16 @@ public class ServerPlayer extends Player { +@@ -1032,7 +1032,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -27,7 +27,7 @@ index 10806ceb46832aa80ffaa1df45c7ec0d1c112dd7..b5beb009479ad743be64ae48b278d086 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 367ce7f6003be23ffe2228e26365cb894089d4b4..2c0ac3fa1ce94c3b09dd55aa901e9e986ffb4338 100644 +index b5b9217aeffb10219f06e196e91060ea24326b47..60fed3d898388e88088284af1b0d45ca606b2a99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -106,6 +106,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0118-Snow-Golem-rate-of-fire-config.patch b/patches/server/0115-Snow-Golem-rate-of-fire-config.patch similarity index 91% rename from patches/unapplied/0118-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0115-Snow-Golem-rate-of-fire-config.patch index 831c9a5dd..6701b20d4 100644 --- a/patches/unapplied/0118-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0115-Snow-Golem-rate-of-fire-config.patch @@ -10,7 +10,7 @@ If min-shoot-interval-ticks and max-shoot-interval-ticks are both set to 0, snow golems won't shoot any snowballs. diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 921215712cba59273da4387b5b4b2f3f5c9da6e2..d5f4166e3148d1a15ed1f04069ac0b4f5d09ebdc 100644 +index b4459d68397cc5bac4f7ef79a2dfb18f3eb24f77..b9025929fcc89e72aa820953b91a65423878ba0f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -79,7 +79,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -23,10 +23,10 @@ index 921215712cba59273da4387b5b4b2f3f5c9da6e2..d5f4166e3148d1a15ed1f04069ac0b4f 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 2c0ac3fa1ce94c3b09dd55aa901e9e986ffb4338..50f4fe8b85a7e7fbb536f93b1c10132711aa5ded 100644 +index 60fed3d898388e88088284af1b0d45ca606b2a99..73453f20a0b2cd35abfb1985e225d9d595aa849d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1563,6 +1563,10 @@ public class PurpurWorldConfig { +@@ -1558,6 +1558,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 2c0ac3fa1ce94c3b09dd55aa901e9e986ffb4338..50f4fe8b85a7e7fbb536f93b1c101327 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1576,6 +1580,10 @@ public class PurpurWorldConfig { +@@ -1571,6 +1575,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/unapplied/0119-EMC-Configurable-disable-give-dropping.patch b/patches/server/0116-EMC-Configurable-disable-give-dropping.patch similarity index 86% rename from patches/unapplied/0119-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0116-EMC-Configurable-disable-give-dropping.patch index 0a8c01adb..109e6de8b 100644 --- a/patches/unapplied/0119-EMC-Configurable-disable-give-dropping.patch +++ b/patches/server/0116-EMC-Configurable-disable-give-dropping.patch @@ -8,10 +8,10 @@ purpur.yml to disable the /give command from dropping items on the floor when a player's inventory is full. diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java -index a60a84d5df0b05cf35668df8c5f08b811bc42a9f..a2751744517634700131ccfb0a2617557b4d42f2 100644 +index 06e3a868e922f1b7a586d0ca28f64a67ae463b68..32beb045f990d4da6112da4fea295333cb69e2ea 100644 --- a/src/main/java/net/minecraft/server/commands/GiveCommand.java +++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java -@@ -57,6 +57,7 @@ public class GiveCommand { +@@ -58,6 +58,7 @@ public class GiveCommand { boolean flag = entityplayer.getInventory().add(itemstack); ItemEntity entityitem; @@ -20,10 +20,10 @@ index a60a84d5df0b05cf35668df8c5f08b811bc42a9f..a2751744517634700131ccfb0a261755 itemstack.setCount(1); entityitem = entityplayer.drop(itemstack, false, false, false); // SPIGOT-2942: Add boolean to call event diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e57dab3abf5162dbe77cb2ba89b2ebabeae3895d..bd4c8c087b5468e5cde5e2cc017ae6187aef51bb 100644 +index e80a13cd7178e056e5fdf770de7f5c03342dc52d..c55504d376f331b01d53aad6a9492ce2f8a4bbd3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -207,6 +207,11 @@ public class PurpurConfig { +@@ -202,6 +202,11 @@ public class PurpurConfig { useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive); } diff --git a/patches/unapplied/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 83% rename from patches/unapplied/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 54e80288a..0188f2697 100644 --- a/patches/unapplied/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -8,10 +8,10 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a577985b61 100644 +index 17c76c310435f501d350bd99debacd242739196e..c7b9cd17cd2b13da9eedc8fd26a3bbdd8b307681 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -33,6 +33,7 @@ public class HarvestFarmland extends Behavior { +@@ -34,6 +34,7 @@ public class HarvestFarmland extends Behavior { private long nextOkStartTime; private int timeWorkedSoFar; private final List validFarmlandAroundVillager = Lists.newArrayList(); @@ -19,7 +19,7 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 public HarvestFarmland() { super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.SECONDARY_JOB_SITE, MemoryStatus.VALUE_PRESENT)); -@@ -41,9 +42,10 @@ public class HarvestFarmland extends Behavior { +@@ -42,9 +43,10 @@ public class HarvestFarmland extends Behavior { protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; @@ -31,7 +31,7 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 BlockPos.MutableBlockPos blockposition_mutableblockposition = entity.blockPosition().mutable(); this.validFarmlandAroundVillager.clear(); -@@ -74,6 +76,7 @@ public class HarvestFarmland extends Behavior { +@@ -75,6 +77,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(pos.below()).getBlock(); @@ -39,7 +39,7 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 return block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata) || iblockdata.isAir() && block1 instanceof FarmBlock; } -@@ -99,7 +102,7 @@ public class HarvestFarmland extends Behavior { +@@ -100,7 +103,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = worldserver.getBlockState(this.aboveFarmlandPos.below()).getBlock(); @@ -48,7 +48,7 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 // CraftBukkit start if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entityvillager, this.aboveFarmlandPos, Blocks.AIR.defaultBlockState()).isCancelled()) { worldserver.destroyBlock(this.aboveFarmlandPos, true, entityvillager); -@@ -107,7 +110,7 @@ public class HarvestFarmland extends Behavior { +@@ -108,7 +111,7 @@ public class HarvestFarmland extends Behavior { // CraftBukkit end } @@ -57,10 +57,10 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 SimpleContainer inventorysubcontainer = entityvillager.getInventory(); for (int j = 0; j < inventorysubcontainer.getContainerSize(); ++j) { -@@ -117,6 +120,14 @@ public class HarvestFarmland extends Behavior { - if (!itemstack.isEmpty()) { +@@ -119,6 +122,14 @@ public class HarvestFarmland extends Behavior { + BlockState iblockdata1; + // CraftBukkit start - Block planted = null; + // Purpur start + if (this.clericWartFarmer) { + if (itemstack.getItem() == Items.NETHER_WART) { @@ -70,9 +70,9 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 + } else + // Purpur end if (itemstack.is(Items.WHEAT_SEEDS)) { - planted = Blocks.WHEAT; + iblockdata1 = Blocks.WHEAT.defaultBlockState(); flag = true; -@@ -140,7 +151,7 @@ public class HarvestFarmland extends Behavior { +@@ -145,7 +156,7 @@ public class HarvestFarmland extends Behavior { } if (flag) { @@ -82,7 +82,7 @@ index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a5 if (itemstack.isEmpty()) { inventorysubcontainer.setItem(j, ItemStack.EMPTY); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java -index 1150a541a270a3ce5c69895f5385800aa44c22f4..808da0b75fcf492a76c692e312aa33ef6fc90c03 100644 +index 50e04df178668ee1ba6a9dcf5e5b315c1bfd587d..6bd428e3d70bfe5ec638a5bd6f1eb03c9104e030 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java @@ -56,6 +56,12 @@ public class TradeWithVillager extends Behavior { @@ -99,10 +99,10 @@ index 1150a541a270a3ce5c69895f5385800aa44c22f4..808da0b75fcf492a76c692e312aa33ef throwHalfStack(villager, this.trades, villager2); } diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -index 70a3db78c4913c14f39ddee39e5fcdd0e741c971..1763764662e061d1f8de74b65de7fb5cc1caac5c 100644 +index b966fa29d9f1d2253485f4f1d1f75e628151f904..ba17618784b76384737e876d790eafe76a7cec8d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -@@ -23,8 +23,13 @@ public class VillagerGoalPackages { +@@ -27,8 +27,13 @@ public class VillagerGoalPackages { } public static ImmutableList>> getWorkPackage(VillagerProfession profession, float speed) { @@ -118,7 +118,7 @@ index 70a3db78c4913c14f39ddee39e5fcdd0e741c971..1763764662e061d1f8de74b65de7fb5c } else { workAtPoi = new WorkAtPoi(); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java -index b615dc2a2127f0874775d1707e96edfb4d95b987..72ae6b3282aac806ae11b87024ee940eec8fbe91 100644 +index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3219d2f13 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java @@ -22,6 +22,13 @@ public class SecondaryPoiSensor extends Sensor { @@ -145,10 +145,10 @@ index b615dc2a2127f0874775d1707e96edfb4d95b987..72ae6b3282aac806ae11b87024ee940e brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 094fd4289bc42df6af6740acacd4f51ab6b668e0..bbb8dde583b1a40c305bb110313e7121ad354dc3 100644 +index 5e82e82ab3afd8dba8588d84a02f4a6d626db51a..18a184633362c43f59f9493c56b33ccfb09d2873 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -157,7 +157,7 @@ index 094fd4289bc42df6af6740acacd4f51ab6b668e0..bbb8dde583b1a40c305bb110313e7121 } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -989,6 +989,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -955,6 +955,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { @@ -170,24 +170,24 @@ index 094fd4289bc42df6af6740acacd4f51ab6b668e0..bbb8dde583b1a40c305bb110313e7121 } diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java -index 901fc6520d58a5fa5f2cf1b4fa78fec6008aa409..9050cd25663c71197c597aac0ab2e6121b76b13b 100644 +index b1f20cb356e6b4e89fdddf4e48f2fd932bdb5170..352a7df156c638684a12a864eb5a9d0625a00e0b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java +++ b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java -@@ -17,7 +17,7 @@ public class VillagerProfession { - public static final VillagerProfession ARMORER = register("armorer", PoiType.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER); - public static final VillagerProfession BUTCHER = register("butcher", PoiType.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER); - public static final VillagerProfession CARTOGRAPHER = register("cartographer", PoiType.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER); -- public static final VillagerProfession CLERIC = register("cleric", PoiType.CLERIC, SoundEvents.VILLAGER_WORK_CLERIC); -+ public static final VillagerProfession CLERIC = register("cleric", PoiType.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur - public static final VillagerProfession FARMER = register("farmer", PoiType.FARMER, ImmutableSet.of(Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS, Items.BONE_MEAL), ImmutableSet.of(Blocks.FARMLAND), SoundEvents.VILLAGER_WORK_FARMER); - 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); +@@ -25,7 +25,7 @@ public record VillagerProfession(String name, Predicate> heldJob + public static final VillagerProfession ARMORER = register("armorer", PoiTypes.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER); + public static final VillagerProfession BUTCHER = register("butcher", PoiTypes.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER); + public static final VillagerProfession CARTOGRAPHER = register("cartographer", PoiTypes.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER); +- public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, SoundEvents.VILLAGER_WORK_CLERIC); ++ public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur + public static final VillagerProfession FARMER = register("farmer", PoiTypes.FARMER, ImmutableSet.of(Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS, Items.BONE_MEAL), ImmutableSet.of(Blocks.FARMLAND), SoundEvents.VILLAGER_WORK_FARMER); + public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); + public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50f4fe8b85a7e7fbb536f93b1c10132711aa5ded..0b7125bf5abf54b4d87de846a583ca3f20f9774f 100644 +index 73453f20a0b2cd35abfb1985e225d9d595aa849d..961bb6fd04155efb4211a763f2efff517a08e644 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1748,6 +1748,8 @@ public class PurpurWorldConfig { - public int villagerSpawnIronGolemLimit = 0; +@@ -1741,6 +1741,8 @@ public class PurpurWorldConfig { + public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; + public boolean villagerClericsFarmWarts = false; @@ -195,8 +195,8 @@ index 50f4fe8b85a7e7fbb536f93b1c10132711aa5ded..0b7125bf5abf54b4d87de846a583ca3f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1766,6 +1768,8 @@ public class PurpurWorldConfig { - villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); +@@ -1757,6 +1759,8 @@ public class PurpurWorldConfig { + villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); + villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); diff --git a/patches/unapplied/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 91% rename from patches/unapplied/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index ed6f00223..7e4ea05b8 100644 --- a/patches/unapplied/0121-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -13,7 +13,7 @@ to the Piglin being angry, even though the player never hit them. This patch adds a toggle to disable this behavior. diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index e2192c45eba111a62dded3731dcdeacc6168710c..ecf0b5def569f6c37d0a27ceb51e7158e57cbe6b 100644 +index 6c1dd723373f9b1b920548de85aeb6cef0120fa7..1f0003fb08a45af02e6d38e28fa548abe480426b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -143,7 +143,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -35,10 +35,10 @@ index e2192c45eba111a62dded3731dcdeacc6168710c..ecf0b5def569f6c37d0a27ceb51e7158 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b7125bf5abf54b4d87de846a583ca3f20f9774f..ca40f12a245d57f1887adc599eef2fbf4f85c209 100644 +index 961bb6fd04155efb4211a763f2efff517a08e644..201f672797ca9f1ea5c6ed3bdebfef8dcdc41c7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1987,6 +1987,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +1978,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 0b7125bf5abf54b4d87de846a583ca3f20f9774f..ca40f12a245d57f1887adc599eef2fbf private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2001,5 +2002,6 @@ public class PurpurWorldConfig { +@@ -1992,5 +1993,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/unapplied/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch b/patches/server/0119-Spread-out-and-optimise-player-list-ticksSpread-out-.patch similarity index 91% rename from patches/unapplied/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch rename to patches/server/0119-Spread-out-and-optimise-player-list-ticksSpread-out-.patch index d221647aa..e5d7fb602 100644 --- a/patches/unapplied/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch +++ b/patches/server/0119-Spread-out-and-optimise-player-list-ticksSpread-out-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Spread out and optimise player list ticksSpread out and diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index b90138f95ad0cdeda2ed6e9a881f01c7b22dd3f2..ed4e4de5f4e303a8fe1c64040c65ab24c2f7e4d6 100644 +index 72a4ceb96169552325c3c96a5bc880e7e825f37d..eebc1cf65339a4938862ac71c314519d9a369496 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1018,22 +1018,22 @@ public abstract class PlayerList { @@ -46,10 +46,10 @@ index b90138f95ad0cdeda2ed6e9a881f01c7b22dd3f2..ed4e4de5f4e303a8fe1c64040c65ab24 public void broadcastAll(Packet packet) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2cd475ac88b3d28aa918ca7f8599a70a5b5c2ea4..365358ef910594980f0126a4300a40bb2293e03c 100644 +index 69db9fb3b319b7f43d93375e719ec13c67388dff..eef64bca59a9b1558d83eb178e988d45281d4638 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1737,7 +1737,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1699,7 +1699,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/patches/unapplied/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 95% rename from patches/unapplied/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch index ec5dcf767..6bf8a4acc 100644 --- a/patches/unapplied/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,10 +7,10 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 702a4b674013a455d179d88d3931f6c216c1ca89..61057ef26cf13a91a1c49d1a3c6383a0da75b77c 100644 +index 28e35304e76b26af734fcfbccef8f43143345576..f862d83db6127804b9254a33a73e6f186a1d1327 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -11,15 +11,19 @@ import net.minecraft.network.syncher.EntityDataAccessor; +@@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; @@ -18,7 +18,8 @@ index 702a4b674013a455d179d88d3931f6c216c1ca89..61057ef26cf13a91a1c49d1a3c6383a0 import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.BlockTags; - import net.minecraft.util.Mth; +@@ -17,9 +18,12 @@ import net.minecraft.util.Mth; + import net.minecraft.util.RandomSource; import net.minecraft.util.TimeUtil; import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.DifficultyInstance; @@ -178,7 +179,7 @@ index 702a4b674013a455d179d88d3931f6c216c1ca89..61057ef26cf13a91a1c49d1a3c6383a0 this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; -@@ -459,6 +539,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -458,6 +538,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { return InteractionResult.SUCCESS; } @@ -221,10 +222,10 @@ index a3bec00368aef0f8cc6aa21cce1389938d15f91b..704667760ab1593647e3f03bdd17ad32 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ca40f12a245d57f1887adc599eef2fbf4f85c209..dd874c0576d0f5986717c28a9d267b7590ff18ff 100644 +index 201f672797ca9f1ea5c6ed3bdebfef8dcdc41c7a..1578c5b83c72fead1ff191fc439f1c8c9cdd9032 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1872,6 +1872,8 @@ public class PurpurWorldConfig { +@@ -1863,6 +1863,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -233,7 +234,7 @@ index ca40f12a245d57f1887adc599eef2fbf4f85c209..dd874c0576d0f5986717c28a9d267b75 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1883,6 +1885,8 @@ public class PurpurWorldConfig { +@@ -1874,6 +1876,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/unapplied/0124-Configurable-default-collar-color.patch b/patches/server/0121-Configurable-default-collar-color.patch similarity index 87% rename from patches/unapplied/0124-Configurable-default-collar-color.patch rename to patches/server/0121-Configurable-default-collar-color.patch index 1fb024370..f9ca91bc7 100644 --- a/patches/unapplied/0124-Configurable-default-collar-color.patch +++ b/patches/server/0121-Configurable-default-collar-color.patch @@ -7,10 +7,10 @@ This allows for the server to set a default collar color when a wolf or cat is t Resets to RED when the value is invalid. diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 456b5f7aedda7f424e46f985f6b854646b2719d8..b4e482a28b1c7f1f46f31faa6466fb54a7991835 100644 +index c6812166ee708100850561a0573be81af76ecfa5..4e0f54689e4db6d4e23ed09bf9645b42fa889a5d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -374,6 +374,14 @@ public class Cat extends TamableAnimal { +@@ -346,6 +346,14 @@ public class Cat extends TamableAnimal { return Mth.lerp(tickDelta, this.relaxStateOneAmountO, this.relaxStateOneAmount); } @@ -26,7 +26,7 @@ index 456b5f7aedda7f424e46f985f6b854646b2719d8..b4e482a28b1c7f1f46f31faa6466fb54 public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { Cat entitycat = (Cat) EntityType.CAT.create(world); diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index cbd5f90f5005187c61e47e6f6fa74fb19d67a4d4..b9567d4d6c03124d4eaa3194c97a170277c64bbe 100644 +index f862d83db6127804b9254a33a73e6f186a1d1327..ffe8f80cfe3bec8fe79415015f5290749fcb770e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -201,6 +201,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -43,10 +43,10 @@ index cbd5f90f5005187c61e47e6f6fa74fb19d67a4d4..b9567d4d6c03124d4eaa3194c97a1702 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd874c0576d0f5986717c28a9d267b7590ff18ff..9e9d1c7be240a58d2e0c1fe6ac91c234f286c826 100644 +index 1578c5b83c72fead1ff191fc439f1c8c9cdd9032..9d20a9bf0af2a40648f1189b038a54ee1d4be9a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -580,6 +580,7 @@ public class PurpurWorldConfig { +@@ -575,6 +575,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index dd874c0576d0f5986717c28a9d267b7590ff18ff..9e9d1c7be240a58d2e0c1fe6ac91c234 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -594,6 +595,11 @@ public class PurpurWorldConfig { +@@ -589,6 +590,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index dd874c0576d0f5986717c28a9d267b7590ff18ff..9e9d1c7be240a58d2e0c1fe6ac91c234 } public boolean caveSpiderRidable = false; -@@ -1872,6 +1878,7 @@ public class PurpurWorldConfig { +@@ -1863,6 +1869,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index dd874c0576d0f5986717c28a9d267b7590ff18ff..9e9d1c7be240a58d2e0c1fe6ac91c234 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1885,6 +1892,11 @@ public class PurpurWorldConfig { +@@ -1876,6 +1883,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/unapplied/0125-Phantom-flames-on-swoop.patch b/patches/server/0122-Phantom-flames-on-swoop.patch similarity index 86% rename from patches/unapplied/0125-Phantom-flames-on-swoop.patch rename to patches/server/0122-Phantom-flames-on-swoop.patch index 79812f8e3..dd0118791 100644 --- a/patches/unapplied/0125-Phantom-flames-on-swoop.patch +++ b/patches/server/0122-Phantom-flames-on-swoop.patch @@ -5,7 +5,7 @@ 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 20ff9c65f89635a4b91d334775b3ac380b5ccbac..c01820307fa6d476402632d44b65ada164a5aded 100644 +index 056a7487e265182f7b50eba30aa6adaa4ba39eba..2be9ab670e93067fe23745cafa0655a1dfa2bc0f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -244,6 +244,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -17,10 +17,10 @@ index 20ff9c65f89635a4b91d334775b3ac380b5ccbac..c01820307fa6d476402632d44b65ada1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e9d1c7be240a58d2e0c1fe6ac91c234f286c826..f324176dcee9b3111cc69c66e7ba07d721c8af35 100644 +index 9d20a9bf0af2a40648f1189b038a54ee1d4be9a2..0abe70545304887722ec20c5ad20169273381560 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1251,6 +1251,7 @@ public class PurpurWorldConfig { +@@ -1246,6 +1246,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 9e9d1c7be240a58d2e0c1fe6ac91c234f286c826..f324176dcee9b3111cc69c66e7ba07d7 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1290,6 +1291,7 @@ public class PurpurWorldConfig { +@@ -1285,6 +1286,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/unapplied/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0123-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 86% rename from patches/unapplied/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0123-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 89849a527..fc3ed4f28 100644 --- a/patches/unapplied/0126-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0123-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for chests to open even with a solid block on top diff --git a/src/main/java/net/minecraft/world/level/block/ChestBlock.java b/src/main/java/net/minecraft/world/level/block/ChestBlock.java -index db726697b00afdee6078849fd224263483349912..c808664a67a9604e40ab388c6d0e6ac3c13f57ac 100644 +index 2f6b5142543aec14b27a996fe1a6817ac44c77b8..b69b72363d8b764b0bd21aa4d0799f7686ab4cf5 100644 --- a/src/main/java/net/minecraft/world/level/block/ChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ChestBlock.java -@@ -356,6 +356,7 @@ public class ChestBlock extends AbstractChestBlock implements +@@ -355,6 +355,7 @@ public class ChestBlock extends AbstractChestBlock implements } private static boolean isBlockedChestByBlock(BlockGetter world, BlockPos pos) { @@ -17,7 +17,7 @@ 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 9d879101a072c5c02ff874ad18483f810c42e353..8adefc693683c5870abb5d0f2f63b5391d7efb6d 100644 +index 0abe70545304887722ec20c5ad20169273381560..f5832c2a308d8acbac525b6ff9c1aea6b816e96e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -406,6 +406,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0127-Implement-TPSBar.patch b/patches/server/0124-Implement-TPSBar.patch similarity index 93% rename from patches/unapplied/0127-Implement-TPSBar.patch rename to patches/server/0124-Implement-TPSBar.patch index 3f86fec6c..9e5ba255e 100644 --- a/patches/unapplied/0127-Implement-TPSBar.patch +++ b/patches/server/0124-Implement-TPSBar.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 362fd34016b83ba346a43abb6acf38d887918437..c137f5299e4a9e2f33aeef77818c62c3805bdc0d 100644 +index 72ab7ba92d6f20c1711d9720c02c11ce0e4ede71..9db941587e870b2a9d0378652d62f4f2c2c385bd 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -210,6 +210,7 @@ public class Commands { +@@ -208,6 +208,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index 362fd34016b83ba346a43abb6acf38d887918437..c137f5299e4a9e2f33aeef77818c62c3 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9d156683ee46eb168048b90dd1819ae3dd87e408..1f65c943f78e416f47d97bf2628862fa76dee290 100644 +index 1a3f709c8aa455f1ce7e63751074044b85b14d19..8a6b839ce55bc352dd5a38883c2bf8240f7420bf 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1088,6 +1088,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop cachedSingleHashSet; // Paper -@@ -476,6 +477,7 @@ public class ServerPlayer extends Player { +@@ -483,6 +484,7 @@ public class ServerPlayer extends Player { } } @@ -60,7 +60,7 @@ index 9798cc19e67fd579aad17d7e57636416a7a8ac65..4b0a0f18708c887ea339f078aea4c988 } @Override -@@ -536,6 +538,7 @@ public class ServerPlayer extends Player { +@@ -543,6 +545,7 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -68,7 +68,7 @@ index 9798cc19e67fd579aad17d7e57636416a7a8ac65..4b0a0f18708c887ea339f078aea4c988 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2575,5 +2578,13 @@ public class ServerPlayer extends Player { +@@ -2612,5 +2615,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig.disableTeleportationSuffocationCheck); } } @@ -83,7 +83,7 @@ index 9798cc19e67fd579aad17d7e57636416a7a8ac65..4b0a0f18708c887ea339f078aea4c988 // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index ed4e4de5f4e303a8fe1c64040c65ab24c2f7e4d6..795b3c765bf91fbf1df236060344830de9330b38 100644 +index eebc1cf65339a4938862ac71c314519d9a369496..9e7bcd0b0b736ef7b7b5aa78037d13438b47824b 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -493,6 +493,7 @@ public abstract class PlayerList { @@ -104,7 +104,7 @@ index ed4e4de5f4e303a8fe1c64040c65ab24c2f7e4d6..795b3c765bf91fbf1df236060344830d entityplayer.awardStat(Stats.LEAVE_GAME); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bd4c8c087b5468e5cde5e2cc017ae6187aef51bb..1eb8d599ebb70313fda467d943888f137b1fa745 100644 +index c55504d376f331b01d53aad6a9492ce2f8a4bbd3..47f4c08c354c2d683dd0959c22c68eb78920a5da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -176,6 +176,7 @@ public class PurpurConfig { @@ -122,8 +122,8 @@ index bd4c8c087b5468e5cde5e2cc017ae6187aef51bb..1eb8d599ebb70313fda467d943888f13 + tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); } - public static String deathMsgStonecutter = " has sawed themself in half"; -@@ -212,6 +214,29 @@ public class PurpurConfig { + public static String serverModName = "Purpur"; +@@ -207,6 +209,29 @@ public class PurpurConfig { disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops); } diff --git a/patches/unapplied/0128-Striders-give-saddle-back.patch b/patches/server/0125-Striders-give-saddle-back.patch similarity index 86% rename from patches/unapplied/0128-Striders-give-saddle-back.patch rename to patches/server/0125-Striders-give-saddle-back.patch index ba6d29dbc..c41227015 100644 --- a/patches/unapplied/0128-Striders-give-saddle-back.patch +++ b/patches/server/0125-Striders-give-saddle-back.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Striders give saddle back diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index 0046bc4f7a1fb7bb40da955570d56c7cb87aa687..bec84c1dba34d61de9199b1b46cad49d46ee9731 100644 +index eb2083d67f9486a24d2f0aa4bf1f5ba8a00e23a3..df9d16a6493a57b6034cd56bf8dbe38fe7c5cda1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -453,6 +453,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -455,6 +455,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean flag = this.isFood(player.getItemInHand(hand)); @@ -29,10 +29,10 @@ index 0046bc4f7a1fb7bb40da955570d56c7cb87aa687..bec84c1dba34d61de9199b1b46cad49d if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2847155d1af14dd2b069328d671ed58363b4fdb..80485a8cb979ffc4ff698127574350ec78cc57e7 100644 +index f5832c2a308d8acbac525b6ff9c1aea6b816e96e..96b237ae22669e46eff2402906500cf869d93c7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1656,6 +1656,7 @@ public class PurpurWorldConfig { +@@ -1651,6 +1651,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index c2847155d1af14dd2b069328d671ed58363b4fdb..80485a8cb979ffc4ff698127574350ec private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1667,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1663,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/unapplied/0129-PlayerBookTooLargeEvent.patch b/patches/server/0126-PlayerBookTooLargeEvent.patch similarity index 91% rename from patches/unapplied/0129-PlayerBookTooLargeEvent.patch rename to patches/server/0126-PlayerBookTooLargeEvent.patch index b1278e004..af97f7f22 100644 --- a/patches/unapplied/0129-PlayerBookTooLargeEvent.patch +++ b/patches/server/0126-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0a7d748e0279a1fd7bb97051732ea1843510087b..e01afeb407acb8cf865d2d223aefaf15b634c94d 100644 +index baa02e8a9ed29854253ec03779ef9e5734d22104..535c4577c4fead700061020f0b946c0ee191f768 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1163,10 +1163,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1193,10 +1193,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser int maxBookPageSize = com.destroystokyo.paper.PaperConfig.maxBookPageSize; double multiplier = Math.max(0.3D, Math.min(1D, com.destroystokyo.paper.PaperConfig.maxBookTotalSizeMultiplier)); long byteAllowed = maxBookPageSize; @@ -21,7 +21,7 @@ index 0a7d748e0279a1fd7bb97051732ea1843510087b..e01afeb407acb8cf865d2d223aefaf15 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1190,6 +1192,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1220,6 +1222,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/unapplied/0130-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0127-Full-netherite-armor-grants-fire-resistance.patch similarity index 93% rename from patches/unapplied/0130-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0127-Full-netherite-armor-grants-fire-resistance.patch index e61e5472b..b68fc32fe 100644 --- a/patches/unapplied/0130-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0127-Full-netherite-armor-grants-fire-resistance.patch @@ -5,10 +5,10 @@ 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 cbe87a8da6ecfb9cb947acb80ab8c76f8a09460f..dcfb5cd4f069136a4e5507c6777d0841457a893d 100644 +index 292333dc9857c92808b3b7ec19ad84366ad073d6..120ac554b5ffd677731ed959f01da7478d37e2f3 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -359,6 +359,16 @@ public abstract class Player extends LivingEntity { +@@ -367,6 +367,16 @@ public abstract class Player extends LivingEntity { this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit } @@ -26,7 +26,7 @@ index cbe87a8da6ecfb9cb947acb80ab8c76f8a09460f..dcfb5cd4f069136a4e5507c6777d0841 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 80485a8cb979ffc4ff698127574350ec78cc57e7..edd79e3e05652b7fa5bbeefb85e391db3ccd6137 100644 +index 96b237ae22669e46eff2402906500cf869d93c7e..0b35b906360d964dbff288217340becddb14678c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -289,6 +289,19 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0128-Fix-rotating-UP-DOWN-CW-and-CCW.patch similarity index 83% rename from patches/unapplied/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename to patches/server/0128-Fix-rotating-UP-DOWN-CW-and-CCW.patch index a105bee7d..9894962bc 100644 --- a/patches/unapplied/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch +++ b/patches/server/0128-Fix-rotating-UP-DOWN-CW-and-CCW.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix rotating UP/DOWN CW and CCW diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java -index 6b71d9433846eb4464177f09d7bfdea82200b189..050a2e157b61a9ae86fa86f231d16ee3f2634db0 100644 +index a3bbebcdaea9e0dfddd9825272f84fc76cd13e89..6c27b22dd1d497687c0f4d3835e34149bcf952c1 100644 --- a/src/main/java/net/minecraft/core/Direction.java +++ b/src/main/java/net/minecraft/core/Direction.java -@@ -247,6 +247,12 @@ public enum Direction implements StringRepresentable { +@@ -252,6 +252,12 @@ public enum Direction implements StringRepresentable { case EAST: var10000 = SOUTH; break; @@ -21,7 +21,7 @@ index 6b71d9433846eb4464177f09d7bfdea82200b189..050a2e157b61a9ae86fa86f231d16ee3 default: throw new IllegalStateException("Unable to get Y-rotated facing of " + this); } -@@ -359,6 +365,12 @@ public enum Direction implements StringRepresentable { +@@ -364,6 +370,12 @@ public enum Direction implements StringRepresentable { case EAST: var10000 = NORTH; break; diff --git a/patches/unapplied/0132-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0129-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 90% rename from patches/unapplied/0132-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0129-Add-mobGriefing-bypass-to-everything-affected.patch index fb21c7a50..0fef23c5b 100644 --- a/patches/unapplied/0132-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0129-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 8ed08c1ce9fe689c009b37ca317b60339a0d6d76..52ac5e4968256dca6fbda827fa251b9a6d60d5ee 100644 +index 5ba6377ebf77b78d0bd15c01b302ef33ffdd4200..1c5daf93cca4c54b35d08092a7662e88d5d18f6d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1694,7 +1694,7 @@ public abstract class LivingEntity extends Entity { +@@ -1709,7 +1709,7 @@ public abstract class LivingEntity extends Entity { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,23 +18,23 @@ index 8ed08c1ce9fe689c009b37ca317b60339a0d6d76..52ac5e4968256dca6fbda827fa251b9a BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 079bfd97262cec9084d3491b3dd68f1506274f43..6d11daac5f0d0d119fb6854089457d158ab6550e 100644 +index 034aa7c98397bd9e4fd1e615e3cdad7e3473eb70..ce72ba463449958ddc798feea3824a97fbba0bed 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -657,7 +657,7 @@ public abstract class Mob extends LivingEntity { +@@ -662,7 +662,7 @@ public abstract class Mob extends LivingEntity { public void aiStep() { super.aiStep(); this.level.getProfiler().push("looting"); - if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level.purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { - List list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(1.0D, 0.0D, 1.0D)); + Vec3i baseblockposition = this.getPickupReach(); + List list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); Iterator iterator = list.iterator(); - diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index fdfa36d3e148e8638109acaf4a0ea8a577985b61..fb4cefdac067ea24764acf7a5d5d0f5b04c6147d 100644 +index c7b9cd17cd2b13da9eedc8fd26a3bbdd8b307681..22bec44fa23370ce57ba485546d665e120a50396 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -40,7 +40,7 @@ public class HarvestFarmland extends Behavior { +@@ -41,7 +41,7 @@ public class HarvestFarmland extends Behavior { } protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { @@ -57,10 +57,10 @@ index 529435cf648d61f80a37f041cee3c6fc0b74ceb6..6c7195c93b5968845da35450e80022c7 @Override diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index 99044ebe2c37ce951566e3463ddbfaeec46d2b3c..023d4e10aeccb2bea3131e498f257d6e6fab6c65 100644 +index 80aa539f7c6a6ee44338de084cdcdf5fb4ef996a..3a633f369af8005de3c06cfa715a42e3b248b2f0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -@@ -70,7 +70,7 @@ public class EatBlockGoal extends Goal { +@@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal { if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) { // CraftBukkit @@ -69,7 +69,7 @@ index 99044ebe2c37ce951566e3463ddbfaeec46d2b3c..023d4e10aeccb2bea3131e498f257d6e this.level.destroyBlock(blockposition, false); } -@@ -81,7 +81,7 @@ public class EatBlockGoal extends Goal { +@@ -79,7 +79,7 @@ public class EatBlockGoal extends Goal { if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) { // CraftBukkit @@ -79,7 +79,7 @@ index 99044ebe2c37ce951566e3463ddbfaeec46d2b3c..023d4e10aeccb2bea3131e498f257d6e this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java -index 027ef44d46cb1dda19c5c239f6970c90285fb961..fd0ed33487305093bbdf6c9bf23313a58c81b231 100644 +index bd0cbf4390fc7d00b4bd5008cdf8f6f49df4f69b..27e96c4c1377c49f03df032683aac32d96ae1c6f 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java @@ -40,7 +40,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -92,10 +92,10 @@ index 027ef44d46cb1dda19c5c239f6970c90285fb961..fd0ed33487305093bbdf6c9bf23313a5 } else if (this.nextStartTick > 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 8a73267128c7e165651b97cd46f65f9cd373a1ea..a1e9a41f2100457f93f21dbcf7bb9ecd53103d9e 100644 +index aa18947d3822a1093985799e87ad6c2b28f51eb1..364863d14e7c0ac6dffa1ac5df5f1af5d820c700 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1363,7 +1363,7 @@ public class Fox extends Animal { +@@ -1365,7 +1365,7 @@ public class Fox extends Animal { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index 8a73267128c7e165651b97cd46f65f9cd373a1ea..a1e9a41f2100457f93f21dbcf7bb9ecd if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 8d44949c54f9cba0848b4f7b82c573325c134d9d..3e1f6392853f7770a3a3427444ecc9c5fe039a63 100644 +index e990e6f416854197bd5a4d31e4c7acc3fb69b390..68579837bbe1f532b94de072bcb614d2baa3f74d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -618,7 +618,7 @@ public class Rabbit extends Animal { +@@ -619,7 +619,7 @@ public class Rabbit extends Animal { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,7 +118,7 @@ index 8d44949c54f9cba0848b4f7b82c573325c134d9d..3e1f6392853f7770a3a3427444ecc9c5 } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index bb71b370856d4ec050e04be3ad6527cca5e6e521..cdd171238cf01ca08eccc99d07f99f8c4b97d5c0 100644 +index b9025929fcc89e72aa820953b91a65423878ba0f..edf4537f08a54e1a5b043927678bbddf3bdfd881 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -133,7 +133,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -131,20 +131,20 @@ index bb71b370856d4ec050e04be3ad6527cca5e6e521..cdd171238cf01ca08eccc99d07f99f8c } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 1a454c782391ff906c58cdb71c4345bb15943649..716293b68ac1e9c8bd94780cbc3bdd361f445198 100644 +index bf05e13e6d385c87fdd36ac32db170f9b0a644af..dc27fb79ee596c39a8ea4a422b9a069bfccb08e9 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -579,7 +579,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -578,7 +578,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level.getBlockState(blockposition); - if (!iblockdata.isAir() && iblockdata.getMaterial() != Material.FIRE) { + if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { - if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { + if ((this.level.purpurConfig.enderDragonBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { // Purpur // CraftBukkit start - Add blocks to list rather than destroying them // flag1 = this.level.removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index a8698975b368b27c0bb1cab4e0b83d69e773fc6b..87aaad12386b0ad79b1017100c83ca0482a9e304 100644 +index b1d0ddcdd7da03d62ef952931ace03c2a0e0bd93..4da6fbb66350e4513dde28ba6f3c5d414ef92ad1 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -390,7 +390,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -179,10 +179,10 @@ index f486b722ef0c82b449238effc045fa9f68860193..f4aeaeef7d781a655e765993fb38a9d9 // CraftBukkit start 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 018d94c3540bf6241d57fe915b5037978601dc2d..28e293dd683b052782bb05d4523e908a6f4aa990 100644 +index 2bff3ace8ea2bd2ee3ec6025c41208e283dee266..2da54b559ba48eec118727499068ce1d937eee5a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -521,7 +521,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -519,7 +519,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -191,7 +191,7 @@ index 018d94c3540bf6241d57fe915b5037978601dc2d..28e293dd683b052782bb05d4523e908a } @Override -@@ -569,7 +569,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -567,7 +567,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -214,10 +214,10 @@ index 1641d5083cad8b7cd62fc1168834ff99b5239c5a..281e8e6232c30cf5c20e9e2de4ac2ab4 } else { List list = Evoker.this.level.getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 0b916be0e0ed6fcf4263759da368732f4e16542a..99125fe401c561cbd65cadf74d749392677acb24 100644 +index 647e0fbd0ff54944fbe7e2a9a6ac40a32919359c..02b0c732b17f8992c040f095c410d526e1faa62a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -190,7 +190,7 @@ public class Ravager extends Raider { +@@ -191,7 +191,7 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); } @@ -227,7 +227,7 @@ index 0b916be0e0ed6fcf4263759da368732f4e16542a..99125fe401c561cbd65cadf74d749392 AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index cfbbdea914eb55f5c772f68f6494ac90c1c4c0ea..d929193ed63b36deb32cc0807e75a589a0d8ad5c 100644 +index 4f0f7b2685696c48f2fe297ceea7a03322b8d45e..45aab92a976ac4c7e1f9b066119f0b4a7188a8f7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -204,7 +204,7 @@ public class Silverfish extends Monster { @@ -241,15 +241,15 @@ index cfbbdea914eb55f5c772f68f6494ac90c1c4c0ea..d929193ed63b36deb32cc0807e75a589 world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); @@ -242,7 +242,7 @@ public class Silverfish extends Monster { } else { - Random random = this.mob.getRandom(); + RandomSource randomsource = this.mob.getRandom(); -- if (this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && random.nextInt(reducedTickDelay(10)) == 0) { -+ if ((this.mob.level.purpurConfig.silverfishBypassMobGriefing || this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && random.nextInt(reducedTickDelay(10)) == 0) { // Purpur - this.selectedDirection = Direction.getRandom(random); +- if (this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && randomsource.nextInt(reducedTickDelay(10)) == 0) { ++ if ((this.mob.level.purpurConfig.silverfishBypassMobGriefing || this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && randomsource.nextInt(reducedTickDelay(10)) == 0) { // Purpur + this.selectedDirection = Direction.getRandom(randomsource); BlockPos blockposition = (new BlockPos(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ())).relative(this.selectedDirection); BlockState iblockdata = this.mob.level.getBlockState(blockposition); 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 ee1aadfa838aaed81760648bb6cf5b42e96d2a94..644ec458325049cb97a181dea6c6857c3d35ef1f 100644 +index 9b8925fe938962264fdf49e97abc660d7fe8476a..eb16e4b51a90224fdd0696ac57861dea541c6dab 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 @@ -412,7 +412,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -290,10 +290,10 @@ index e69213b43c8aa5a7c04add7a87482d531fbf52d2..f51ea103238b4a50439f5162a248cd9a // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 878757f6b5034ed54198102cf8d48ace580f856f..17a9ac588490232e8883d5df1619e1290e260a9b 100644 +index 877a568b74e9f12decfeb70459e0cc0737f176cf..40645c931a10a3631a9240e25c823097afe89dec 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -326,6 +326,6 @@ public abstract class Projectile extends Entity { +@@ -298,6 +298,6 @@ public abstract class Projectile extends Entity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); @@ -302,7 +302,7 @@ index 878757f6b5034ed54198102cf8d48ace580f856f..17a9ac588490232e8883d5df1619e129 } } diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index 226b33921c90ca3904a7397a68dc8169948f8faa..e2a652277f2a63e0f0501db4137d7813e2d603c4 100644 +index db6ae655400ea75dc8b8d53b31bf27e401518279..d2932bf496b0eff90e2f0738b23864cd6db5a495 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java @@ -24,7 +24,7 @@ public class SmallFireball extends Fireball { @@ -328,7 +328,7 @@ index 8613008090a9d7cf5cd7c2a598f2c725b5b0cdc6..a66e9826b8283366cec5adb54f79efee // CraftBukkit start // this.level.createExplosion(this, this.locX(), this.locY(), this.locZ(), 1.0F, false, explosion_effect); diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java -index c5611465b1f9228a994c462c093cec94d7d08c2f..b7c672c0df699a4d0c78a2333eae3754b2a28bf7 100644 +index 4bb9730b6a42702e91467f980b9f045585039db3..a1b9a11c3026a6fdd0f47ed27b99539ed18f0aaa 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raider.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java @@ -312,7 +312,7 @@ public abstract class Raider extends PatrollingMonster { @@ -341,7 +341,7 @@ index c5611465b1f9228a994c462c093cec94d7d08c2f..b7c672c0df699a4d0c78a2333eae3754 if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index b4fd9af8805f451c87a91f319c15fa132b91faf7..e9087a46e401bc99b73c2cf2731fdac3e68719f8 100644 +index 275e5334b1206a2dcafc3772c7e2ad0ebe3693f9..a68bf10353e5c19adfa86c2dd6290f2386af9a9d 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -164,7 +164,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -354,7 +354,7 @@ index b4fd9af8805f451c87a91f319c15fa132b91faf7..e9087a46e401bc99b73c2cf2731fdac3 } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index c61e8887e697806378686b3b1ffca2b154d1a074..732f9e1ebb99cb7201b972dbd4990abb5f327ebb 100644 +index a3ff99c461dd862733816d9d1204cf8b347663fe..d92ea9f29b9d919871662977d3e3eb41ddf2eb35 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -98,7 +98,7 @@ public class FarmBlock extends Block { @@ -367,7 +367,7 @@ index c61e8887e697806378686b3b1ffca2b154d1a074..732f9e1ebb99cb7201b972dbd4990abb org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -index 5e22a1cd1a0902d63f091bbfb8ae518b12c66f09..8fad9dfd25794c4f202e2104e4ae32b0c436f438 100644 +index 518d3832c36c9ecf1ed9267ffc1f926dc84b7989..af5933b886abf3fd17bfdb8c1cb1ea63f6f2a757 100644 --- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java @@ -72,7 +72,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { @@ -380,10 +380,10 @@ index 5e22a1cd1a0902d63f091bbfb8ae518b12c66f09..8fad9dfd25794c4f202e2104e4ae32b0 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index b1846a5c73f5be800ab1e4efe81e110e245b4726..08401d2908e41d1ce3968ab085c4c376da33181f 100644 +index 1a12fee99a8b69fc6c01e1e217575c7c19e13155..4907e0acb7d01b7f57b75579e58ce743e3e000bb 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -204,7 +204,7 @@ public class TurtleEggBlock extends Block { +@@ -209,7 +209,7 @@ public class TurtleEggBlock extends Block { return false; } if (entity instanceof LivingEntity && !(entity instanceof Player)) { @@ -393,7 +393,7 @@ index b1846a5c73f5be800ab1e4efe81e110e245b4726..08401d2908e41d1ce3968ab085c4c376 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 edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b595c8bea 100644 +index 0b35b906360d964dbff288217340becddb14678c..a2c8bb6c6dfda88ddaf4e445106a0d4b52ba2858 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -109,8 +109,11 @@ public class PurpurWorldConfig { @@ -444,7 +444,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -494,10 +507,12 @@ public class PurpurWorldConfig { +@@ -489,10 +502,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -457,7 +457,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean waterInfinite = true; -@@ -696,6 +711,7 @@ public class PurpurWorldConfig { +@@ -691,6 +706,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -465,7 +465,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -708,6 +724,7 @@ public class PurpurWorldConfig { +@@ -703,6 +719,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 edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean dolphinRidable = false; -@@ -802,6 +819,7 @@ public class PurpurWorldConfig { +@@ -797,6 +814,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -481,7 +481,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -818,6 +836,7 @@ public class PurpurWorldConfig { +@@ -813,6 +831,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 edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean endermanRidable = false; -@@ -826,6 +845,7 @@ public class PurpurWorldConfig { +@@ -821,6 +840,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -497,7 +497,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -838,6 +858,7 @@ public class PurpurWorldConfig { +@@ -833,6 +853,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 edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean endermiteRidable = false; -@@ -860,6 +881,7 @@ public class PurpurWorldConfig { +@@ -855,6 +876,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = false; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -513,7 +513,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -870,6 +892,7 @@ public class PurpurWorldConfig { +@@ -865,6 +887,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -521,7 +521,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean foxRidable = false; -@@ -878,6 +901,7 @@ public class PurpurWorldConfig { +@@ -873,6 +896,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -529,7 +529,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -890,6 +914,7 @@ public class PurpurWorldConfig { +@@ -885,6 +909,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 edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean ghastRidable = false; -@@ -1336,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1331,6 +1356,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = false; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -545,7 +545,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1346,6 +1372,7 @@ public class PurpurWorldConfig { +@@ -1341,6 +1367,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -553,7 +553,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean piglinBruteRidable = false; -@@ -1368,6 +1395,7 @@ public class PurpurWorldConfig { +@@ -1363,6 +1390,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = false; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -561,7 +561,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1378,6 +1406,7 @@ public class PurpurWorldConfig { +@@ -1373,6 +1401,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -569,7 +569,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean polarBearRidable = false; -@@ -1424,6 +1453,7 @@ public class PurpurWorldConfig { +@@ -1419,6 +1448,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -577,7 +577,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1437,12 +1467,14 @@ public class PurpurWorldConfig { +@@ -1432,12 +1462,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -592,7 +592,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1453,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1480,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -600,7 +600,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean salmonRidable = false; -@@ -1474,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1469,6 +1502,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -608,7 +608,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1485,6 +1519,7 @@ public class PurpurWorldConfig { +@@ -1480,6 +1514,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -616,7 +616,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean shulkerRidable = false; -@@ -1507,6 +1542,7 @@ public class PurpurWorldConfig { +@@ -1502,6 +1537,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = false; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -624,7 +624,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1517,6 +1553,7 @@ public class PurpurWorldConfig { +@@ -1512,6 +1548,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -632,7 +632,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean skeletonRidable = false; -@@ -1593,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1588,6 +1625,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -640,7 +640,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1610,6 +1648,7 @@ public class PurpurWorldConfig { +@@ -1605,6 +1643,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -648,7 +648,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean squidRidable = false; -@@ -1778,6 +1817,7 @@ public class PurpurWorldConfig { +@@ -1771,6 +1810,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -656,7 +656,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1798,6 +1838,7 @@ public class PurpurWorldConfig { +@@ -1789,6 +1829,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -664,7 +664,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean vindicatorRidable = false; -@@ -1861,6 +1902,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1893,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -672,7 +672,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1878,6 +1920,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1911,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -680,7 +680,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b } public boolean witherSkeletonRidable = false; -@@ -1949,6 +1992,7 @@ public class PurpurWorldConfig { +@@ -1940,6 +1983,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -688,7 +688,7 @@ index edd79e3e05652b7fa5bbeefb85e391db3ccd6137..0a44f20e99bc3ba2ed3e2e78e476a33b private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1964,6 +2008,7 @@ public class PurpurWorldConfig { +@@ -1955,6 +1999,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/unapplied/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0130-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 79% rename from patches/unapplied/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0130-Config-to-allow-Note-Block-sounds-when-blocked.patch index 94fc23c77..1d5350619 100644 --- a/patches/unapplied/0133-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0130-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -9,20 +9,20 @@ Normally, the sounds will only play when the block directly above is air. With this patch enabled, players can place any block above the Note Block and it will still work. diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index e5f2c3fefe22bc348eb50f0e9b2fed2f24bdede0..ce6701d46e28a24aecd348a4019aad5aa08f0b05 100644 +index 58e8905a4b98e2e1ee372b99bdc3de9815063ac9..443bf39734ba2b0a7cdf0362d415ff176b2e8c85 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -@@ -61,7 +61,7 @@ public class NoteBlock extends Block { +@@ -64,7 +64,7 @@ public class NoteBlock extends Block { } - private void playNote(Level world, BlockPos blockposition, BlockState data) { // CraftBukkit + private void playNote(@Nullable Entity entity, Level world, BlockPos blockposition, BlockState data) { // CraftBukkit - if (world.getBlockState(blockposition.above()).isAir()) { + if (world.purpurConfig.noteBlockIgnoreAbove || world.getBlockState(blockposition.above()).isAir()) { // Purpur // CraftBukkit start - // Paper start - move NotePlayEvent call to fix instrument/note changes - world.blockEvent(blockposition, this, 0, 0); + // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, blockposition, data.getValue(NoteBlock.INSTRUMENT), data.getValue(NoteBlock.NOTE)); // Paper - move event into block event handler + // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a44f20e99bc3ba2ed3e2e78e476a33b595c8bea..5135ce3a370d9d613a79eecda007fa3459fabf9d 100644 +index a2c8bb6c6dfda88ddaf4e445106a0d4b52ba2858..ce4e136ee8f1a196ceb4462a3c783622158a2fcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0134-Add-EntityTeleportHinderedEvent.patch b/patches/server/0131-Add-EntityTeleportHinderedEvent.patch similarity index 93% rename from patches/unapplied/0134-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0131-Add-EntityTeleportHinderedEvent.patch index c3f196b3f..0868c3bbc 100644 --- a/patches/unapplied/0134-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0131-Add-EntityTeleportHinderedEvent.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/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index 19892cb3cb290add4f094dc87bb22106e4f07a24..bd4f980f68330fc46a02a6f4bb4403fac3a91919 100644 +index 15c5cccfe02c924c02f605eb47dd0b420b189891..04bae5085756842ce88710646a17e9dc1aad5994 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -45,7 +45,15 @@ public class EndPortalBlock extends BaseEntityBlock { @@ -38,7 +38,7 @@ index 19892cb3cb290add4f094dc87bb22106e4f07a24..bd4f980f68330fc46a02a6f4bb4403fa ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey); diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 82c132bc90381aab6a29d50319ff40e7383eb7f2..13a367d2b5f245f4dd92df03288dc40b81e19603 100644 +index 51f0dc173ddb29c6928badbc3c3a68ff3677a0e1..352568607e16be8f0e5942acd0097b4b2cf13bbc 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -86,7 +86,15 @@ public class NetherPortalBlock extends Block { @@ -59,7 +59,7 @@ index 82c132bc90381aab6a29d50319ff40e7383eb7f2..13a367d2b5f245f4dd92df03288dc40b EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index a952f19530983ca9a72969ad25f9565a2a03688a..bb6f8db2f624fa5861fe860af7974c84104c2380 100644 +index 5c7e30eb5e8a2a1ab18750a2cd2ec7364e8c52e0..ecd0ba252feb57cb1d60745e7750a67635e8bc7f 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java @@ -178,6 +178,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { @@ -78,10 +78,10 @@ index a952f19530983ca9a72969ad25f9565a2a03688a..bb6f8db2f624fa5861fe860af7974c84 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 318456621faf484dbad479b2873ae647e0c0f037..83c8889137e566322ec4337b0e6d8b940cc2edbe 100644 +index 3cc9dab362141fdf61bdcd542ffa5e5c11f99e24..51325f67c49680417b8b843135ec0e91481fe7fc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -564,6 +564,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -575,6 +575,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { location.checkFinite(); if (this.entity.isVehicle() || this.entity.isRemoved()) { @@ -93,10 +93,10 @@ index 318456621faf484dbad479b2873ae647e0c0f037..83c8889137e566322ec4337b0e6d8b94 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 365358ef910594980f0126a4300a40bb2293e03c..bb0d196dc2e2ff6a2ccfda8b55a04fd6eaad0a97 100644 +index eef64bca59a9b1558d83eb178e988d45281d4638..1948eda5fd4d6b8d8a9bdb8ee36fd9f12764525a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1154,6 +1154,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1116,6 +1116,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle()) { @@ -108,7 +108,7 @@ index 365358ef910594980f0126a4300a40bb2293e03c..bb0d196dc2e2ff6a2ccfda8b55a04fd6 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5135ce3a370d9d613a79eecda007fa3459fabf9d..d0c983eacaff5d9314d767a8d58b5603fa336a50 100644 +index ce4e136ee8f1a196ceb4462a3c783622158a2fcd..f1d92ae817a505b80c638e4f34134742346bb7e5 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 { diff --git a/patches/unapplied/0135-Farmland-trampling-changes.patch b/patches/server/0132-Farmland-trampling-changes.patch similarity index 94% rename from patches/unapplied/0135-Farmland-trampling-changes.patch rename to patches/server/0132-Farmland-trampling-changes.patch index edbbad790..004a7918b 100644 --- a/patches/unapplied/0135-Farmland-trampling-changes.patch +++ b/patches/server/0132-Farmland-trampling-changes.patch @@ -12,7 +12,7 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 732f9e1ebb99cb7201b972dbd4990abb5f327ebb..29a538964d31527c9d10e25716e99ac22775119d 100644 +index d92ea9f29b9d919871662977d3e3eb41ddf2eb35..e5a3e3a4367dfb924624a913b816b3fd56e3fefd 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -113,12 +113,20 @@ public class FarmBlock extends Block { @@ -37,7 +37,7 @@ index 732f9e1ebb99cb7201b972dbd4990abb5f327ebb..29a538964d31527c9d10e25716e99ac2 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 d0c983eacaff5d9314d767a8d58b5603fa336a50..ee15bf8d8325977d6333e0d83ac2b16f4c78969e 100644 +index f1d92ae817a505b80c638e4f34134742346bb7e5..3f81ed1f0e5744d15f2abe49d9421e2990415b5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -444,10 +444,16 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0136-Movement-options-for-armor-stands.patch b/patches/server/0133-Movement-options-for-armor-stands.patch similarity index 91% rename from patches/unapplied/0136-Movement-options-for-armor-stands.patch rename to patches/server/0133-Movement-options-for-armor-stands.patch index 5d20f7b5f..9a26bb00d 100644 --- a/patches/unapplied/0136-Movement-options-for-armor-stands.patch +++ b/patches/server/0133-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ 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 f582265ec9dc5349183cbd5c6b1e3f2658166c02..d94e28c53df16ca969ac128886cdb60cfd712145 100644 +index 1b2edc78ca8b0c734d4fb1e9dfa369c1c1abede6..57af4ce3c47ffcad7fe046218ebc915ab17cd40a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1642,7 +1642,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1648,7 +1648,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.isInWater() || flag; } @@ -30,7 +30,7 @@ index f582265ec9dc5349183cbd5c6b1e3f2658166c02..d94e28c53df16ca969ac128886cdb60c this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014D)) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 50370dc8697569a4e5cf8ec3714d227a59357d64..e9e24435057cff9c0af758ca2aa822c3b1c3593d 100644 +index 29939e851e38fcd494c7556760191e0100bc2e07..1865fa0173dbd9362ba8186f0726f14d149d7602 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -98,10 +98,12 @@ public class ArmorStand extends LivingEntity { @@ -46,7 +46,7 @@ index 50370dc8697569a4e5cf8ec3714d227a59357d64..e9e24435057cff9c0af758ca2aa822c3 this.handItems = NonNullList.withSize(2, ItemStack.EMPTY); this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY); this.headPose = ArmorStand.DEFAULT_HEAD_POSE; -@@ -995,4 +997,18 @@ public class ArmorStand extends LivingEntity { +@@ -994,4 +996,18 @@ public class ArmorStand extends LivingEntity { } // Paper end // Paper end @@ -66,7 +66,7 @@ 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 ee15bf8d8325977d6333e0d83ac2b16f4c78969e..178bb27f204760e4ca3ad919024b4bae74244cbd 100644 +index 3f81ed1f0e5744d15f2abe49d9421e2990415b5a..729ba27c732d297ff7f1138426506998ae544726 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,10 +98,16 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0137-Fix-stuck-in-portals.patch b/patches/server/0134-Fix-stuck-in-portals.patch similarity index 88% rename from patches/unapplied/0137-Fix-stuck-in-portals.patch rename to patches/server/0134-Fix-stuck-in-portals.patch index 46c4d2550..485aa7c6d 100644 --- a/patches/unapplied/0137-Fix-stuck-in-portals.patch +++ b/patches/server/0134-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4b0a0f18708c887ea339f078aea4c988b222ce0c..49adcc516e880c9d1a4926115c0f6fc0f757d7e2 100644 +index 730a2f16fe9fea9662edf502419ad57387169c8f..ca1b2d02ec7a51fe2bee5037c09a0fdcf00ac58e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1176,6 +1176,7 @@ public class ServerPlayer extends Player { +@@ -1185,6 +1185,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index 4b0a0f18708c887ea339f078aea4c988b222ce0c..49adcc516e880c9d1a4926115c0f6fc0 // 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 d94e28c53df16ca969ac128886cdb60cfd712145..1c996ff06017c178064877c5dd6bff591fa170f3 100644 +index 57af4ce3c47ffcad7fe046218ebc915ab17cd40a..a7bd8be272376c4ec15603ee1dbc90cbbf455416 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2782,12 +2782,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2796,12 +2796,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } @@ -37,7 +37,7 @@ index d94e28c53df16ca969ac128886cdb60cfd712145..1c996ff06017c178064877c5dd6bff59 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 178bb27f204760e4ca3ad919024b4bae74244cbd..3fdcd6f04bd03fb65637b261e390ced9914c4bb1 100644 +index 729ba27c732d297ff7f1138426506998ae544726..8ab2d2925ba46f4750070d14e2affc4223a73362 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -329,6 +329,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0138-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch similarity index 88% rename from patches/unapplied/0138-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch index e910a7174..3f05139e8 100644 --- a/patches/unapplied/0138-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index ad93a0516391761f6275c2c04cc63f7f20101ba4..e98176b7969589897ee784bfb83f6c3f40cecd68 100644 +index b6df98797757462f35c306aa4c6ea1585a9a6ddc..506632a6b5107f5ef08cd87808b8c4be1e96b49f 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -48,6 +48,11 @@ public class GlowSquid extends Squid { @@ -21,7 +21,7 @@ index ad93a0516391761f6275c2c04cc63f7f20101ba4..e98176b7969589897ee784bfb83f6c3f @Override diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 70b8698ef3863c957ac4639f113f235705da4667..d4dde82e28200df974b5a084f2d3d7780d8da1bf 100644 +index a02502ce8916c6b817270297412f961d5fcf4689..9c8f26a7510c43e24b49660546d524f7bed85a5e 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -102,6 +102,11 @@ public class Bat extends AmbientCreature { @@ -37,10 +37,10 @@ index 70b8698ef3863c957ac4639f113f235705da4667..d4dde82e28200df974b5a084f2d3d778 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 3b272c0e3710885fa0a4ef9b39bfa8874a972e0d..1490c6d10824d556972a77aaa23eac3a8628dcaa 100644 +index 374a026de1fec53ba3433e528d03ad103fa25f86..15b8992ef9f77153885cb27e305e854f8d775864 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -175,7 +175,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -176,7 +176,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); @@ -49,7 +49,7 @@ index 3b272c0e3710885fa0a4ef9b39bfa8874a972e0d..1490c6d10824d556972a77aaa23eac3a this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); -@@ -223,6 +223,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -224,6 +224,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public int getPurpurBreedTime() { return this.level.purpurConfig.beeBreedingTicks; } @@ -62,10 +62,10 @@ index 3b272c0e3710885fa0a4ef9b39bfa8874a972e0d..1490c6d10824d556972a77aaa23eac3a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 0f28682db47708e81fea0a043f51cba3a3702014..31930b5936dcaea92afc54a583efcd5c3cedac3b 100644 +index 4e0f54689e4db6d4e23ed09bf9645b42fa889a5d..d60eb249c3cc893c8546ac99f7b25e545717335c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -157,6 +157,11 @@ public class Cat extends TamableAnimal { +@@ -128,6 +128,11 @@ public class Cat extends TamableAnimal { public int getPurpurBreedTime() { return this.level.purpurConfig.catBreedingTicks; } @@ -78,10 +78,10 @@ index 0f28682db47708e81fea0a043f51cba3a3702014..31930b5936dcaea92afc54a583efcd5c public ResourceLocation getResourceLocation() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 839cb9ff15132f3461317c5ead7c486a0b6fe5e0..439ce2e01cb861f2b3abb86090f49498e2a47142 100644 +index fe266b94d08b8977451f75ec87c19497ac0ab975..14b0160deab7895f0827d5dc75a48a98d906d7c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -80,6 +80,11 @@ public class Chicken extends Animal { +@@ -81,6 +81,11 @@ public class Chicken extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.chickenBreedingTicks; } @@ -126,7 +126,7 @@ index b063a74327e51b3cd27427426b92ef687c59c94b..00eec3f51e62858e7b85b3340e76bf66 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 68f470d38cd0974a9c6cfc8fe252ca4469e54377..21789c981e3fd49a1029bd41a2de61c97f03474f 100644 +index b52245d881186f91174819326abb0cf98acb0997..1e95fa49a5dc8b756756924cbaf12d49ad33a274 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -162,6 +162,11 @@ public class Dolphin extends WaterAnimal { @@ -142,7 +142,7 @@ index 68f470d38cd0974a9c6cfc8fe252ca4469e54377..21789c981e3fd49a1029bd41a2de61c9 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index a1e9a41f2100457f93f21dbcf7bb9ecd53103d9e..d0e9f326e755f1e9e8a9f96f9effba5f80faab1e 100644 +index 364863d14e7c0ac6dffa1ac5df5f1af5d820c700..8e04d20c0f1038dbe1c8e7f05242f66e95ec5a38 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -188,6 +188,11 @@ public class Fox extends Animal { @@ -158,10 +158,10 @@ index a1e9a41f2100457f93f21dbcf7bb9ecd53103d9e..d0e9f326e755f1e9e8a9f96f9effba5f @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index fe7d88d81d70d46acf031f82495d0503f5b6b5d8..a33b49248a76c84983e98a84efa8a0e1ef6b53d6 100644 +index 9474324ace8ad2c9f54930cea4ee825275493075..1f87f6879b9c23526a2d1b490959d60606657e02 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -90,6 +90,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -89,6 +89,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ironGolemMaxHealth); } @@ -174,7 +174,7 @@ index fe7d88d81d70d46acf031f82495d0503f5b6b5d8..a33b49248a76c84983e98a84efa8a0e1 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index d7c68775fc39222be66bc82e0e7a1b0ae3238f7a..047404f4e38b9d796ceecb4e07740942eb137ae0 100644 +index 6cd1a173857b9815073d4bb5020ebe6582844418..86830a554c750114f5ea11cf19bda86d37e69ac2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -89,6 +89,11 @@ public class MushroomCow extends Cow implements Shearable { @@ -190,7 +190,7 @@ index d7c68775fc39222be66bc82e0e7a1b0ae3238f7a..047404f4e38b9d796ceecb4e07740942 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 0719a17e886b6525d7ed091f1759eed12a945034..b0f133931815155f1dab02e2853bbcde5c96bac6 100644 +index 25f01fe6bda429a13188e62aee68d242c9d5404b..7ddf1dbef2df9982bb0975918d336ef117666bdb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -93,6 +93,11 @@ public class Ocelot extends Animal { @@ -206,7 +206,7 @@ index 0719a17e886b6525d7ed091f1759eed12a945034..b0f133931815155f1dab02e2853bbcde 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 83fdc33da473c8ddf69bb20125bf38f6801f8fce..538d52c49ec35653ace723e25adf40217c7ed775 100644 +index 260fb72d48e2e2c6d27ab21b8a5049235d51555c..72a510efeb885cd15f1d573aa94e14ecf51b66b3 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 { @@ -222,10 +222,10 @@ index 83fdc33da473c8ddf69bb20125bf38f6801f8fce..538d52c49ec35653ace723e25adf4021 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 1539668c100352f7e8980f3b9db02b6fb979299b..c35644499f4501fb9d1f2ed3551949a38f3464ca 100644 +index b15fd1a01f273cf1d3dc2965a9d3584f75579e2d..55b14422fea113ea64717f64226aac142f6f60bd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -194,6 +194,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -195,6 +195,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public int getPurpurBreedTime() { return 6000; } @@ -238,7 +238,7 @@ index 1539668c100352f7e8980f3b9db02b6fb979299b..c35644499f4501fb9d1f2ed3551949a3 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java -index 93f670fe1512ec18272c2e4d71735bcbdbc87eda..a24dffe25615c9c9a4b641b291ce735e3f1dd6b7 100644 +index 179b4767283090467d5f415ce1cce44007f1e937..19c2565f1acd19676cebb9f8a6532de6752fdf99 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -89,6 +89,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -254,7 +254,7 @@ index 93f670fe1512ec18272c2e4d71735bcbdbc87eda..a24dffe25615c9c9a4b641b291ce735e @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 0f4a0e50e701c3fb75536e0b6d7821046e7f8f66..3fe05be69cada8df7553ee0fb9828e5ec593f54f 100644 +index c0c7edfc243378bce9bb44d29c58d948b95a9310..54c1f56a20d592f348e61c1ca7b9eeffd08a26f7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -123,6 +123,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -286,10 +286,10 @@ index 988093b46a4c386f8d47a4c530b8e9f6f49efd0d..2a9af6af653dc62c99baff01ebea8ad6 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 3e1f6392853f7770a3a3427444ecc9c5fe039a63..dba2e1d677d7ac26517736cfbe2ee9d742fa4482 100644 +index 68579837bbe1f532b94de072bcb614d2baa3f74d..cc780b3e4649549c746fc6127fc85c387a6be370 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -146,6 +146,11 @@ public class Rabbit extends Animal { +@@ -147,6 +147,11 @@ public class Rabbit extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.rabbitBreedingTicks; } @@ -318,7 +318,7 @@ index 3873fb0e2d95973397f9a23dc363f7a65a1edfe6..16171814bab7fbc0c177323cc5f8b026 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 86f398fc79dcc5dd24a61483d292e228dd6ab83b..4fa8e4a298a98b2a41ef7572d21ed50aa06e2c7e 100644 +index dfd8d795abbe3912658c9d847424424e83006408..fbe7d731df4284e2bd99da6bae8d146cf9587d35 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -141,6 +141,11 @@ public class Sheep extends Animal implements Shearable { @@ -334,7 +334,7 @@ index 86f398fc79dcc5dd24a61483d292e228dd6ab83b..4fa8e4a298a98b2a41ef7572d21ed50a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index cdd171238cf01ca08eccc99d07f99f8c4b97d5c0..16ecfd25dc2b2e450410cff17e75354fec7dc4bc 100644 +index edf4537f08a54e1a5b043927678bbddf3bdfd881..069f90f113aeaa61236c86a07463c4190fc36c4e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -116,7 +116,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -363,7 +363,7 @@ index 4850960c7c4f38c7d81b8945f8c87504d5ccd0d0..7a8f8be052dc3ee6dc56dd39017e1148 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index f570600ca77b1b48e879198095ea54e692f3d243..206729081b8316ac76a808ec509a7aee4d6831f7 100644 +index e439f0e24851697e663f783edf643d5b1602a0ff..77237646232cf3b7975c7a0c1d2b83d688eaa8b8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -69,6 +69,11 @@ public class TropicalFish extends AbstractSchoolingFish { @@ -379,10 +379,10 @@ index f570600ca77b1b48e879198095ea54e692f3d243..206729081b8316ac76a808ec509a7aee public static String getPredefinedName(int variant) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index e3bf2c2bc16bc03c17d90f2ce1620c6b895e9bf7..3c38345b32d106a169d1e6abcae54f282d08fe89 100644 +index 539777cb24e7427542ac43665585d3acea9f888c..67b92fd831cb87bf8a7c5b96f17c0d3557bf9c62 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -109,6 +109,11 @@ public class Turtle extends Animal { +@@ -107,6 +107,11 @@ public class Turtle extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.turtleBreedingTicks; } @@ -395,7 +395,7 @@ index e3bf2c2bc16bc03c17d90f2ce1620c6b895e9bf7..3c38345b32d106a169d1e6abcae54f28 public void setHomePos(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index ba6acbf7b78e063dcc61c12f740b928642c2f8e6..79fdf8f0512fb9bff730b0a3674aba2f121dbb6f 100644 +index ffe8f80cfe3bec8fe79415015f5290749fcb770e..dd514cbf2f03b688eb4d8cd49052f1775d3adebb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -207,6 +207,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -411,10 +411,10 @@ index ba6acbf7b78e063dcc61c12f740b928642c2f8e6..79fdf8f0512fb9bff730b0a3674aba2f @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 0f38b65d490cde61cfc256719f91cc0a955b4080..efc02d00f3b95f4f6b6204b91ce15e03b23a6e6b 100644 +index cf5b71dd336341556f5b9effa531bc8d42e5880d..e83cd1f4e56f4ac2c9f0dcc060ddf94d936d7b07 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 -@@ -129,6 +129,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -127,6 +127,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { public int getPurpurBreedTime() { return this.level.purpurConfig.axolotlBreedingTicks; } @@ -427,10 +427,10 @@ index 0f38b65d490cde61cfc256719f91cc0a955b4080..efc02d00f3b95f4f6b6204b91ce15e03 @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 a697a094679c61e357177bc22e628c347b39a4d9..02146c9b5d64ed84869f946638f639d3cd176e5e 100644 +index 6d3a39c0f65e19cff3c13355a53995df34ee136f..327a2161ba4b400952f104113015cbb630d1950d 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 -@@ -94,6 +94,11 @@ public class Goat extends Animal { +@@ -114,6 +114,11 @@ public class Goat extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.goatBreedingTicks; } @@ -459,10 +459,10 @@ index 113b6d80885717d59c8fefab07afe68779f0051d..c888516a1e4b7283fdb2cb15bc9a1390 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 2c5cb1b759a0b6e0233345da5a968288ec338837..16755249c4700fa59f704b7c88e3490d2ce3fc48 100644 +index 3144c7e7b018a1e8a907691b798e656500f57430..6ae27ba8e40c490e8ae58d8f78f071a9e18d980e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -64,6 +64,11 @@ public class Horse extends AbstractHorse { +@@ -65,6 +65,11 @@ public class Horse extends AbstractHorse { public int getPurpurBreedTime() { return this.level.purpurConfig.horseBreedingTicks; } @@ -475,7 +475,7 @@ index 2c5cb1b759a0b6e0233345da5a968288ec338837..16755249c4700fa59f704b7c88e3490d @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 5553cffdbaf308c543d0afed467acd3e6a0f8956..f90f890c8a537be1912e9f131d1866cffcb580e1 100644 +index 24b80622da9ddebb8544f25e8c01047c41a5fd86..57589a54362a4e0d23ba32957d5db47da2b9ec83 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -136,6 +136,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -507,7 +507,7 @@ index 88e61572f5dd8d05fadab131046f74bd8131f42b..610282c7be7355f0800c1265cc8b19dd @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index e7910b0bbb061f524909757dab4c7e59c0dc40c9..5683136ec1ebf6671092a635f026decfc6d7733d 100644 +index 063602f2ccced778194b268d3d7dd00bdffd73ff..345cb3eca7663b34eb847b04491ad343d06c2eb8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -55,6 +55,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -539,10 +539,10 @@ index bdb71283d402656a3da6dd699d4cd6a5c935e541..b3d9ab9c40fff58cdcb64e1499ee70d5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index b6d9ba8dd5694952ca2eba54726ac5e587175250..88da7a365c28e2d097d0a7bff30ea1acd4c7d5dc 100644 +index 5f6235ea148d11c9e875e0d6646ceb84d4fa8d5b..0f76bcb56c03bc2743f7f36217c2442adf07d2a3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -@@ -52,6 +52,11 @@ public class ZombieHorse extends AbstractHorse { +@@ -53,6 +53,11 @@ public class ZombieHorse extends AbstractHorse { public int getPurpurBreedTime() { return 6000; } @@ -555,10 +555,10 @@ index b6d9ba8dd5694952ca2eba54726ac5e587175250..88da7a365c28e2d097d0a7bff30ea1ac public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 716293b68ac1e9c8bd94780cbc3bdd361f445198..d0cae88c3ccf5f9282f2e71525286f6625260374 100644 +index dc27fb79ee596c39a8ea4a422b9a069bfccb08e9..34e1ee5f67027cd7301e22e966f65c838e249bf6 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -166,6 +166,11 @@ public class EnderDragon extends Mob implements Enemy { +@@ -165,6 +165,11 @@ public class EnderDragon extends Mob implements Enemy { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.enderDragonMaxHealth); } @@ -571,7 +571,7 @@ index 716293b68ac1e9c8bd94780cbc3bdd361f445198..d0cae88c3ccf5f9282f2e71525286f66 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 87aaad12386b0ad79b1017100c83ca0482a9e304..1aadac665d7389431d819f72bb05af82a4d08b8c 100644 +index 4da6fbb66350e4513dde28ba6f3c5d414ef92ad1..e0c960a07fcecec58fecdf88c190ab85b25a3658 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -222,6 +222,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -587,7 +587,7 @@ index 87aaad12386b0ad79b1017100c83ca0482a9e304..1aadac665d7389431d819f72bb05af82 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 1fc653194718eb4698450af5d1865a6da090c76d..081f9ff6edf17a1588649cc69f48b2f577ce809f 100644 +index 773884b49ba5d0586c43f4c58cdcf9a8ce3de9e8..47ce2e61c2ce7984505355de5401c2310e9644b0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -33,7 +33,7 @@ public class Blaze extends Monster { @@ -641,7 +641,7 @@ index f4aeaeef7d781a655e765993fb38a9d920c47109..614baf25654c770a6cdac02f8cd4301a @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 346c274e81be8541b61c66a0a0574811ddf59ff9..195cbb1870caf48830ea8c3f294a258c3839431d 100644 +index 1d57ee963416e784a759f2ecee7b7c380f0597eb..037d77b47d0be69dfeda01f4a0d52ad72aea2c8d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -108,6 +108,11 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -657,10 +657,10 @@ index 346c274e81be8541b61c66a0a0574811ddf59ff9..195cbb1870caf48830ea8c3f294a258c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index 25fab7497a80a8fa65bd9cd9bdb0cd498f240bd1..2800594fea055d75268531d8ad3fef99721e5ca1 100644 +index 725e98128fca670e370a35e763050909074b2653..9d5dc4540ef3207cdfd9b80d00e0a04c7bf13028 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -@@ -50,6 +50,11 @@ public class ElderGuardian extends Guardian { +@@ -53,6 +53,11 @@ public class ElderGuardian extends Guardian { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.elderGuardianMaxHealth); } @@ -673,7 +673,7 @@ index 25fab7497a80a8fa65bd9cd9bdb0cd498f240bd1..2800594fea055d75268531d8ad3fef99 public static AttributeSupplier.Builder createAttributes() { 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 28e293dd683b052782bb05d4523e908a6f4aa990..c768a6cf25f7f5fa0fab4b1fe5d7d1aad27b7b49 100644 +index 2da54b559ba48eec118727499068ce1d937eee5a..74dff7ef5234f4b01fef7ccff5eeb2aafa82edc0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -84,7 +84,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -695,7 +695,7 @@ index 28e293dd683b052782bb05d4523e908a6f4aa990..c768a6cf25f7f5fa0fab4b1fe5d7d1aa @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 2d43bdae159f1345f1f50bb9b0c5aebffa33ed96..31cfaa059dc8df86027950e5db651560fcd51d32 100644 +index 1058897ab91e13884b480ad0e5028fb2a205fe05..df1d1085419b41920542260a75262b1a6ab3eb41 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -57,6 +57,11 @@ public class Endermite extends Monster { @@ -727,7 +727,7 @@ index 281e8e6232c30cf5c20e9e2de4ac2ab4d0722ccf..912c594c2a5df21663b26da81cc3d78b @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index d9886e6831b3034781aded2b3ab6ab5e06ba9a1c..a79a7b178e0bb3aed1522d4f837bdc76ed1a3b8f 100644 +index 3cb9b399db596b90d7885e2003ba41f4f79a3588..8ab5dfd2f56d52b275bf160d8a28adce5564a5f2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java @@ -81,6 +81,11 @@ public class Ghast extends FlyingMob implements Enemy { @@ -759,7 +759,7 @@ index 0d26d2388cc1963df9bc361b31a572c12e2f8709..dd7ad09e8b154347290126fe8f7e195c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 07f7cddb1faac701ae05e6a29c3427e7f8557cb1..070c707132929c2a68acca44e7c7f3ae3eb1f984 100644 +index aad07e8af58158079b0e54e759a08c735af91a40..96c3dc4764a12f8af2abfd3125e29a86e86da92b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -97,6 +97,11 @@ public class Guardian extends Monster { @@ -775,7 +775,7 @@ index 07f7cddb1faac701ae05e6a29c3427e7f8557cb1..070c707132929c2a68acca44e7c7f3ae @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 640c75c2cf7ec1f1bc514d29ac1f929c526e0caa..065005c13c2bff341402fc962d19148da27bc3c2 100644 +index 22daf7d11890a2e9276928ac9b242edf932e11cb..47e4f62d177c14ceffeb13a3fee5bfa342da7184 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -62,6 +62,11 @@ public class Husk extends Zombie { @@ -789,7 +789,7 @@ index 640c75c2cf7ec1f1bc514d29ac1f929c526e0caa..065005c13c2bff341402fc962d19148d + } // Purpur end - public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { + public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java index 171e2fef10ac75dd4585a82057edb4452a6f0d22..5b6a61fb2b44ea4dec4767958a2abe57d758646e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java @@ -807,10 +807,10 @@ index 171e2fef10ac75dd4585a82057edb4452a6f0d22..5b6a61fb2b44ea4dec4767958a2abe57 @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 a9c8dd788affd122d98bc9a2eef068c5fb9a58ba..b7b4e5173e0f6da888746f1d1679cbde43905bf0 100644 +index 69375fdb63b9edde3d161bac7a1946a36306f0c5..5311b26e56eac2a854e615a3e694eadd9520cc1c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -67,6 +67,11 @@ public class MagmaCube extends Slime { +@@ -65,6 +65,11 @@ public class MagmaCube extends Slime { protected java.util.Map getAttackDamageCache() { return level.purpurConfig.magmaCubeAttackDamageCache; } @@ -839,7 +839,7 @@ index 2be9ab670e93067fe23745cafa0655a1dfa2bc0f..e7e4d87fb8a5276fd617afc4e0b92510 @Override 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 efb80248d3c7318aaf58861b21d497ce57fcecdc..37c88972668a4102701c868cc9f7b18b89f5db14 100644 +index 13c0c270dc56f0e3d6e60714a3b9abeb6413c74f..d2dc2b73692ddf28272b1196a6ed718f2f14e116 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java @@ -83,6 +83,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -855,7 +855,7 @@ index efb80248d3c7318aaf58861b21d497ce57fcecdc..37c88972668a4102701c868cc9f7b18b @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 99125fe401c561cbd65cadf74d749392677acb24..f8ceb90e468203d995f9f3d9d041a9a43e94fa68 100644 +index 02b0c732b17f8992c040f095c410d526e1faa62a..14b2d1adabcdf9281f314e3cd185ea22353e614e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -95,6 +95,11 @@ public class Ravager extends Raider { @@ -871,7 +871,7 @@ index 99125fe401c561cbd65cadf74d749392677acb24..f8ceb90e468203d995f9f3d9d041a9a4 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 545ca8ada7ef9cff3619d2a556ddbd01742703f1..ae22748c9cefd000986d50e12fa9cb2a545ad63c 100644 +index 9cc44ccd584253cb16a19e7a4747ef39a3ae82f5..2abdeb351fbabec7490c1ce806cebf8886b6be61 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -112,6 +112,11 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -887,7 +887,7 @@ index 545ca8ada7ef9cff3619d2a556ddbd01742703f1..ae22748c9cefd000986d50e12fa9cb2a @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index d929193ed63b36deb32cc0807e75a589a0d8ad5c..e207d70a031131217874837198a30d04b9640409 100644 +index 45aab92a976ac4c7e1f9b066119f0b4a7188a8f7..6b418728d56f6a3f0dff669a115de49f942a5ce4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -62,6 +62,11 @@ public class Silverfish extends Monster { @@ -919,10 +919,10 @@ index e239bcc4d4afe48e9fc204ad38d8bc76833994f4..8ce46cc00a01a678270e906078097aa7 @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 d26f6bfb961cced818cfcf700bfd58f6703c7f39..8cf06d7e4537ff93fee4377ad4988e78084ff4a8 100644 +index 5c122ece695f61c58c90b853a0cb9a249f15b184..b069ec2f52956d1e2744fe3831567cdf85ff66c1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -135,6 +135,11 @@ public class Slime extends Mob implements Enemy { +@@ -134,6 +134,11 @@ public class Slime extends Mob implements Enemy { } return value; } @@ -935,7 +935,7 @@ index d26f6bfb961cced818cfcf700bfd58f6703c7f39..8cf06d7e4537ff93fee4377ad4988e78 @Override 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 219aeced44c99e64267cff8df39e4f4e8aa55da7..c66e85d865d0bd1018529636f0ef41d8a5aad890 100644 +index 0314b3ac32595a22e89619a928a3c5b1b0135ed4..39b6c3ea2aa955b1005edfd80e1c4913315bd621 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -71,6 +71,11 @@ public class Spider extends Monster { @@ -951,7 +951,7 @@ index 219aeced44c99e64267cff8df39e4f4e8aa55da7..c66e85d865d0bd1018529636f0ef41d8 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index b54368f53d3cf87f35132f811f8a917999968c1e..4888502f99e0a9db246f9714a4d7534839bc5487 100644 +index e7f0807cc4e57c99bbd0debaebb3b9f6243c591c..703d997e22ea24a93d054d72ca914f8a5a8cdc0a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -41,6 +41,11 @@ public class Stray extends AbstractSkeleton { @@ -965,9 +965,9 @@ index b54368f53d3cf87f35132f811f8a917999968c1e..4888502f99e0a9db246f9714a4d75348 + } // Purpur end - public static boolean checkStraySpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { + public static boolean checkStraySpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index bec84c1dba34d61de9199b1b46cad49d46ee9731..5ff3373c9c73691d7f21c05b0f044c198b2bab2d 100644 +index df9d16a6493a57b6034cd56bf8dbe38fe7c5cda1..0ac4a2b6ec9c88e8049a8a1cd0518e14e4b08ede 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -90,7 +90,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -979,7 +979,7 @@ index bec84c1dba34d61de9199b1b46cad49d46ee9731..5ff3373c9c73691d7f21c05b0f044c19 this.setPathfindingMalus(BlockPathTypes.LAVA, 0.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); -@@ -412,7 +412,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -414,7 +414,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override public boolean isSensitiveToWater() { @@ -989,10 +989,10 @@ index bec84c1dba34d61de9199b1b46cad49d46ee9731..5ff3373c9c73691d7f21c05b0f044c19 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index ee8a1b2e5ace89a1b2f457608903fbbc80e05973..dfcaaa245d229328d4227969bf747fd150c02f10 100644 +index cad3d3741460c21da2e163ed9ec6ba7894ab2712..1e4f227ad895f2099d889c3b9317176449675af1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java -@@ -105,6 +105,11 @@ public class Vex extends Monster { +@@ -106,6 +106,11 @@ public class Vex extends Monster { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vexMaxHealth); } @@ -1005,10 +1005,10 @@ index ee8a1b2e5ace89a1b2f457608903fbbc80e05973..dfcaaa245d229328d4227969bf747fd1 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index a5a6bcf79db034394068ab1db246b4444bdc3c27..5308f5d1dd226e2c73df69e729d93bf593ee467d 100644 +index 015d0f64e37003907a5ae4e9f5ca11dbe4d7b81a..9cb7983b911dd3ec260df9fc05651ed2de93205c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -79,6 +79,11 @@ public class Vindicator extends AbstractIllager { +@@ -78,6 +78,11 @@ public class Vindicator extends AbstractIllager { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vindicatorMaxHealth); } @@ -1037,10 +1037,10 @@ index 0359db7ccca286df046066b4a2356a50b8240a56..801355c7c3a4acfb3c45b0d5bc3218e9 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index d7d15eaaed3d184c0a4f81b09f7d2b564742ecd1..b2f1784e8a1b6afe4ba2a67f6d567869e96d4c3e 100644 +index 59797dd2521d349cb1d7c2a3d5344e2b14a510ac..81cc7a0707f8e4a8b7272543e0d9c45c5d58b897 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -@@ -54,6 +54,11 @@ public class WitherSkeleton extends AbstractSkeleton { +@@ -55,6 +55,11 @@ public class WitherSkeleton extends AbstractSkeleton { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witherSkeletonMaxHealth); } @@ -1069,7 +1069,7 @@ index a91ec2e385940b12bc41d9c09819c9081edc5c44..9928af5318c1cc4676c5cf215840ce0f @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 3cea172a1a54b34f5fbd62ace84661da429c44d6..52e6eb5269249e586683de647c350651e2c96c91 100644 +index 72bd61193c3289d7228ab76805eb19c29a4a058d..a68bced3a278f082680994a13920f97d82cdbd42 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -136,6 +136,11 @@ public class Zombie extends Monster { @@ -1085,10 +1085,10 @@ index 3cea172a1a54b34f5fbd62ace84661da429c44d6..52e6eb5269249e586683de647c350651 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 36f748fb4b4e6e0c3a39ab3f9c11bf178aced7df..322ba3293d170a81e1d501d590a18d435968456f 100644 +index d666b552023ebd5c3155a094a96a362e239100d1..c90cf19a4c29aa33c96a67bfab24cbbb56d783da 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -119,6 +119,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -118,6 +118,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { public boolean jockeyTryExistingChickens() { return level.purpurConfig.zombieVillagerJockeyTryExistingChickens; } @@ -1101,7 +1101,7 @@ index 36f748fb4b4e6e0c3a39ab3f9c11bf178aced7df..322ba3293d170a81e1d501d590a18d43 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 21610fa723b22894a4ff316ee34d8aabfb707526..918cd5c51849e3de4915016a76bbd4b66c3b8b42 100644 +index 1f0003fb08a45af02e6d38e28fa548abe480426b..ad5197636e367f863ca3d044dd343ae5ae722cc2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -94,6 +94,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1117,7 +1117,7 @@ index 21610fa723b22894a4ff316ee34d8aabfb707526..918cd5c51849e3de4915016a76bbd4b6 @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 5f879e65f3a6c0fea3e962716b61651fd54bcf6d..7a7508dcf15a3cb932944240816d63640aa8be61 100644 +index 748718c41d26dd49a69142ddc1f9cbe355e120ce..d356b239237ad79fdace1fab10bba156fbde16f2 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 { @@ -1133,10 +1133,10 @@ index 5f879e65f3a6c0fea3e962716b61651fd54bcf6d..7a7508dcf15a3cb932944240816d6364 @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 644ec458325049cb97a181dea6c6857c3d35ef1f..d5388ea5d88b2fb6e6f499e9e7f05f176136d023 100644 +index eb16e4b51a90224fdd0696ac57861dea541c6dab..8b8f9225aef90f1aeabb3a3fac97121d15ff9aae 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 +@@ -115,6 +115,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinMaxHealth); } @@ -1149,10 +1149,10 @@ index 644ec458325049cb97a181dea6c6857c3d35ef1f..d5388ea5d88b2fb6e6f499e9e7f05f17 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index ec532ba1ccb0dbe50b91ba698a4f30d5bc89ca82..e0be095bdff6a9316812715f26772ef4e6e77495 100644 +index 75db61c5aab66234b26f7899229ddca8896e2086..a44f9a59fbec146df95d89c26df12efb79f6179a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -60,6 +60,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -61,6 +61,11 @@ public class PiglinBrute extends AbstractPiglin { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinBruteMaxHealth); } @@ -1165,10 +1165,10 @@ index ec532ba1ccb0dbe50b91ba698a4f30d5bc89ca82..e0be095bdff6a9316812715f26772ef4 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index bbb8dde583b1a40c305bb110313e7121ad354dc3..c926a513490b91e83802ab1aea6db90b93acd206 100644 +index 18a184633362c43f59f9493c56b33ccfb09d2873..7962332c16f8cd83e5a05176b34674a3b3ff6a4b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -186,6 +186,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean canBeLeashed(Player player) { return level.purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } @@ -1197,10 +1197,10 @@ index 8756e0d8d0077308f5fb74bf45fe093d0f043c99..6dd8856816bebb2766203589048cc68b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1c11d178d 100644 +index 8ab2d2925ba46f4750070d14e2affc4223a73362..3616e81a44c10d94351520c66ed694abb98411ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -549,6 +549,7 @@ public class PurpurWorldConfig { +@@ -544,6 +544,7 @@ public class PurpurWorldConfig { useNightVisionWhenRiding = getBoolean("ridable-settings.use-night-vision", useNightVisionWhenRiding); } @@ -1208,7 +1208,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 public boolean axolotlRidable = false; public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; -@@ -558,6 +559,7 @@ public class PurpurWorldConfig { +@@ -553,6 +554,7 @@ public class PurpurWorldConfig { axolotlControllable = getBoolean("mobs.axolotl.controllable", axolotlControllable); axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks); @@ -1216,7 +1216,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean batRidable = false; -@@ -572,6 +574,7 @@ public class PurpurWorldConfig { +@@ -567,6 +569,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1224,7 +1224,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -583,6 +586,7 @@ public class PurpurWorldConfig { +@@ -578,6 +581,7 @@ public class PurpurWorldConfig { set("mobs.bat.attributes.max_health", oldValue); } batMaxHealth = getDouble("mobs.bat.attributes.max_health", batMaxHealth); @@ -1232,7 +1232,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean beeRidable = false; -@@ -591,6 +595,7 @@ public class PurpurWorldConfig { +@@ -586,6 +590,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1240,7 +1240,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -603,6 +608,7 @@ public class PurpurWorldConfig { +@@ -598,6 +603,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1248,7 +1248,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean blazeRidable = false; -@@ -610,6 +616,7 @@ public class PurpurWorldConfig { +@@ -605,6 +611,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1256,7 +1256,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -621,6 +628,7 @@ public class PurpurWorldConfig { +@@ -616,6 +623,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1264,7 +1264,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean catRidable = false; -@@ -632,6 +640,7 @@ public class PurpurWorldConfig { +@@ -627,6 +635,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1272,7 +1272,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -651,12 +660,14 @@ public class PurpurWorldConfig { +@@ -646,12 +655,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1287,7 +1287,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -667,6 +678,7 @@ public class PurpurWorldConfig { +@@ -662,6 +673,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1295,7 +1295,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean chickenRidable = false; -@@ -675,6 +687,7 @@ public class PurpurWorldConfig { +@@ -670,6 +682,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1303,7 +1303,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -687,11 +700,13 @@ public class PurpurWorldConfig { +@@ -682,11 +695,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1317,7 +1317,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -701,6 +716,7 @@ public class PurpurWorldConfig { +@@ -696,6 +711,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1325,7 +1325,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean cowRidable = false; -@@ -709,6 +725,7 @@ public class PurpurWorldConfig { +@@ -704,6 +720,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1333,7 +1333,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -721,6 +738,7 @@ public class PurpurWorldConfig { +@@ -716,6 +733,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1341,7 +1341,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean creeperRidable = false; -@@ -730,6 +748,7 @@ public class PurpurWorldConfig { +@@ -725,6 +743,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1349,7 +1349,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -743,6 +762,7 @@ public class PurpurWorldConfig { +@@ -738,6 +757,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1357,7 +1357,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean dolphinRidable = false; -@@ -752,6 +772,7 @@ public class PurpurWorldConfig { +@@ -747,6 +767,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1365,7 +1365,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -765,6 +786,7 @@ public class PurpurWorldConfig { +@@ -760,6 +781,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1373,7 +1373,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean donkeyRidableInWater = false; -@@ -775,6 +797,7 @@ public class PurpurWorldConfig { +@@ -770,6 +792,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1381,7 +1381,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -791,6 +814,7 @@ public class PurpurWorldConfig { +@@ -786,6 +809,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1389,7 +1389,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean drownedRidable = false; -@@ -801,6 +825,7 @@ public class PurpurWorldConfig { +@@ -796,6 +820,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1397,7 +1397,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -815,11 +840,13 @@ public class PurpurWorldConfig { +@@ -810,11 +835,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1411,7 +1411,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -829,6 +856,7 @@ public class PurpurWorldConfig { +@@ -824,6 +851,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1419,7 +1419,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean enderDragonRidable = false; -@@ -838,6 +866,7 @@ public class PurpurWorldConfig { +@@ -833,6 +861,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1427,7 +1427,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -855,6 +884,7 @@ public class PurpurWorldConfig { +@@ -850,6 +879,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1435,7 +1435,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean endermanRidable = false; -@@ -864,6 +894,7 @@ public class PurpurWorldConfig { +@@ -859,6 +889,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1443,7 +1443,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -877,12 +908,14 @@ public class PurpurWorldConfig { +@@ -872,12 +903,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1458,7 +1458,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -893,6 +926,7 @@ public class PurpurWorldConfig { +@@ -888,6 +921,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1466,7 +1466,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean evokerRidable = false; -@@ -900,6 +934,7 @@ public class PurpurWorldConfig { +@@ -895,6 +929,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1474,7 +1474,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -911,6 +946,7 @@ public class PurpurWorldConfig { +@@ -906,6 +941,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1482,7 +1482,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean foxRidable = false; -@@ -920,6 +956,7 @@ public class PurpurWorldConfig { +@@ -915,6 +951,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1490,7 +1490,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -933,6 +970,7 @@ public class PurpurWorldConfig { +@@ -928,6 +965,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1498,7 +1498,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean ghastRidable = false; -@@ -940,6 +978,7 @@ public class PurpurWorldConfig { +@@ -935,6 +973,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1506,7 +1506,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -951,6 +990,7 @@ public class PurpurWorldConfig { +@@ -946,6 +985,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1514,7 +1514,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean giantRidable = false; -@@ -963,6 +1003,7 @@ public class PurpurWorldConfig { +@@ -958,6 +998,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1522,7 +1522,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -983,17 +1024,20 @@ public class PurpurWorldConfig { +@@ -978,17 +1019,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1543,7 +1543,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean goatRidable = false; -@@ -1001,17 +1045,20 @@ public class PurpurWorldConfig { +@@ -996,17 +1040,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1564,7 +1564,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1021,6 +1068,7 @@ public class PurpurWorldConfig { +@@ -1016,6 +1063,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1572,7 +1572,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean hoglinRidable = false; -@@ -1028,6 +1076,7 @@ public class PurpurWorldConfig { +@@ -1023,6 +1071,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1580,7 +1580,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1039,6 +1088,7 @@ public class PurpurWorldConfig { +@@ -1034,6 +1083,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1588,7 +1588,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean horseRidableInWater = false; -@@ -1049,6 +1099,7 @@ public class PurpurWorldConfig { +@@ -1044,6 +1094,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1596,7 +1596,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1065,6 +1116,7 @@ public class PurpurWorldConfig { +@@ -1060,6 +1111,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1604,7 +1604,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean huskRidable = false; -@@ -1075,6 +1127,7 @@ public class PurpurWorldConfig { +@@ -1070,6 +1122,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1612,7 +1612,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1089,6 +1142,7 @@ public class PurpurWorldConfig { +@@ -1084,6 +1137,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1620,7 +1620,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean illusionerRidable = false; -@@ -1097,6 +1151,7 @@ public class PurpurWorldConfig { +@@ -1092,6 +1146,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1628,7 +1628,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1113,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1108,6 +1163,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1636,7 +1636,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean ironGolemRidable = false; -@@ -1120,6 +1176,7 @@ public class PurpurWorldConfig { +@@ -1115,6 +1171,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1644,7 +1644,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1131,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1126,6 +1183,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1652,7 +1652,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean llamaRidable = false; -@@ -1143,6 +1201,7 @@ public class PurpurWorldConfig { +@@ -1138,6 +1196,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1660,7 +1660,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1161,6 +1220,7 @@ public class PurpurWorldConfig { +@@ -1156,6 +1215,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1668,7 +1668,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean magmaCubeRidable = false; -@@ -1170,6 +1230,7 @@ public class PurpurWorldConfig { +@@ -1165,6 +1225,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1676,7 +1676,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1183,6 +1244,7 @@ public class PurpurWorldConfig { +@@ -1178,6 +1239,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1684,7 +1684,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean mooshroomRidable = false; -@@ -1190,6 +1252,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1247,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1692,7 +1692,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1201,6 +1264,7 @@ public class PurpurWorldConfig { +@@ -1196,6 +1259,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1700,7 +1700,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean muleRidableInWater = false; -@@ -1211,6 +1275,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1270,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1708,7 +1708,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1227,6 +1292,7 @@ public class PurpurWorldConfig { +@@ -1222,6 +1287,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1716,7 +1716,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean ocelotRidable = false; -@@ -1234,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1229,6 +1295,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1724,7 +1724,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1245,6 +1312,7 @@ public class PurpurWorldConfig { +@@ -1240,6 +1307,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1732,7 +1732,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean pandaRidable = false; -@@ -1252,6 +1320,7 @@ public class PurpurWorldConfig { +@@ -1247,6 +1315,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1740,7 +1740,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1263,6 +1332,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1327,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1748,7 +1748,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean parrotRidable = false; -@@ -1270,6 +1340,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1335,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1756,7 +1756,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1281,6 +1352,7 @@ public class PurpurWorldConfig { +@@ -1276,6 +1347,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1764,7 +1764,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean phantomRidable = false; -@@ -1313,6 +1385,7 @@ public class PurpurWorldConfig { +@@ -1308,6 +1380,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1772,7 +1772,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1353,6 +1426,7 @@ public class PurpurWorldConfig { +@@ -1348,6 +1421,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1780,7 +1780,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean pigRidable = false; -@@ -1361,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1430,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1788,7 +1788,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1373,6 +1448,7 @@ public class PurpurWorldConfig { +@@ -1368,6 +1443,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1796,7 +1796,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean piglinRidable = false; -@@ -1380,6 +1456,7 @@ public class PurpurWorldConfig { +@@ -1375,6 +1451,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1804,7 +1804,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1391,12 +1468,14 @@ public class PurpurWorldConfig { +@@ -1386,12 +1463,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1819,7 +1819,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1407,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1402,6 +1481,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1827,7 +1827,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean pillagerRidable = false; -@@ -1414,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1489,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1835,7 +1835,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1425,6 +1506,7 @@ public class PurpurWorldConfig { +@@ -1420,6 +1501,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1843,7 +1843,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean polarBearRidable = false; -@@ -1434,6 +1516,7 @@ public class PurpurWorldConfig { +@@ -1429,6 +1511,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1851,7 +1851,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1448,11 +1531,13 @@ public class PurpurWorldConfig { +@@ -1443,11 +1526,13 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1865,7 +1865,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1462,6 +1547,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1542,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1873,7 +1873,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean rabbitRidable = false; -@@ -1472,6 +1558,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1553,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1881,7 +1881,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1486,6 +1573,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1568,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1889,7 +1889,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean ravagerRidable = false; -@@ -1493,6 +1581,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1576,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1897,7 +1897,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1504,11 +1593,13 @@ public class PurpurWorldConfig { +@@ -1499,11 +1588,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1911,7 +1911,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1518,6 +1609,7 @@ public class PurpurWorldConfig { +@@ -1513,6 +1604,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1919,7 +1919,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean sheepRidable = false; -@@ -1526,6 +1618,7 @@ public class PurpurWorldConfig { +@@ -1521,6 +1613,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1927,7 +1927,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1538,12 +1631,14 @@ public class PurpurWorldConfig { +@@ -1533,12 +1626,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1942,7 +1942,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1554,6 +1649,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1644,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1950,7 +1950,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean silverfishRidable = false; -@@ -1561,6 +1657,7 @@ public class PurpurWorldConfig { +@@ -1556,6 +1652,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1958,7 +1958,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1572,12 +1669,14 @@ public class PurpurWorldConfig { +@@ -1567,12 +1664,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1973,7 +1973,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1588,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1682,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1981,7 +1981,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean skeletonHorseRidableInWater = true; -@@ -1598,6 +1698,7 @@ public class PurpurWorldConfig { +@@ -1593,6 +1693,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1989,7 +1989,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1613,6 +1714,7 @@ public class PurpurWorldConfig { +@@ -1608,6 +1709,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1997,7 +1997,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean slimeRidable = false; -@@ -1622,6 +1724,7 @@ public class PurpurWorldConfig { +@@ -1617,6 +1719,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2005,7 +2005,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1635,6 +1738,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1733,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2013,7 +2013,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean snowGolemRidable = false; -@@ -1649,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1748,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2021,7 +2021,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1667,6 +1772,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1767,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2029,7 +2029,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean squidRidable = false; -@@ -1675,6 +1781,7 @@ public class PurpurWorldConfig { +@@ -1670,6 +1776,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2037,7 +2037,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1687,12 +1794,14 @@ public class PurpurWorldConfig { +@@ -1682,12 +1789,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2052,7 +2052,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1703,12 +1812,14 @@ public class PurpurWorldConfig { +@@ -1698,12 +1807,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2067,7 +2067,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1719,6 +1830,7 @@ public class PurpurWorldConfig { +@@ -1714,6 +1825,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2075,7 +2075,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean striderRidable = false; -@@ -1727,6 +1839,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1834,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2083,7 +2083,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1739,6 +1852,7 @@ public class PurpurWorldConfig { +@@ -1734,6 +1847,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2091,7 +2091,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean traderLlamaRidable = false; -@@ -1751,6 +1865,7 @@ public class PurpurWorldConfig { +@@ -1746,6 +1860,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2099,7 +2099,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1769,11 +1884,13 @@ public class PurpurWorldConfig { +@@ -1764,11 +1879,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2113,7 +2113,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1783,6 +1900,7 @@ public class PurpurWorldConfig { +@@ -1778,6 +1895,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2121,7 +2121,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean turtleRidable = false; -@@ -1790,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1785,6 +1903,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2129,7 +2129,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1801,6 +1920,7 @@ public class PurpurWorldConfig { +@@ -1796,6 +1915,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2137,7 +2137,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean vexRidable = false; -@@ -1808,6 +1928,7 @@ public class PurpurWorldConfig { +@@ -1803,6 +1923,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2145,7 +2145,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1819,6 +1940,7 @@ public class PurpurWorldConfig { +@@ -1814,6 +1935,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2153,7 +2153,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean villagerRidable = false; -@@ -1836,6 +1958,7 @@ public class PurpurWorldConfig { +@@ -1829,6 +1951,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2161,7 +2161,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1857,6 +1980,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1971,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2169,7 +2169,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean vindicatorRidable = false; -@@ -1864,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1979,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2177,7 +2177,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1875,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1866,6 +1991,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2185,7 +2185,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean wanderingTraderRidable = false; -@@ -1883,6 +2009,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +2000,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2193,7 +2193,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1895,12 +2022,14 @@ public class PurpurWorldConfig { +@@ -1886,12 +2013,14 @@ 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); @@ -2208,7 +2208,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1911,6 +2040,7 @@ public class PurpurWorldConfig { +@@ -1902,6 +2031,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2216,7 +2216,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean witherRidable = false; -@@ -1921,6 +2051,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +2042,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2224,7 +2224,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1939,12 +2070,14 @@ public class PurpurWorldConfig { +@@ -1930,12 +2061,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2239,7 +2239,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1955,6 +2088,7 @@ public class PurpurWorldConfig { +@@ -1946,6 +2079,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2247,7 +2247,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean wolfRidable = false; -@@ -1965,6 +2099,7 @@ public class PurpurWorldConfig { +@@ -1956,6 +2090,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2255,7 +2255,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1983,12 +2118,14 @@ public class PurpurWorldConfig { +@@ -1974,12 +2109,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2270,7 +2270,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -1999,6 +2136,7 @@ public class PurpurWorldConfig { +@@ -1990,6 +2127,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2278,7 +2278,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean zombieRidable = false; -@@ -2011,6 +2149,7 @@ public class PurpurWorldConfig { +@@ -2002,6 +2140,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2286,7 +2286,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2027,6 +2166,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2157,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); @@ -2294,7 +2294,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean zombieHorseRidableInWater = false; -@@ -2038,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2029,6 +2169,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2302,7 +2302,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2054,6 +2195,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2186,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); @@ -2310,7 +2310,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean zombieVillagerRidable = false; -@@ -2064,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2197,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2318,7 +2318,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2078,6 +2221,7 @@ public class PurpurWorldConfig { +@@ -2069,6 +2212,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); @@ -2326,7 +2326,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 } public boolean zombifiedPiglinRidable = false; -@@ -2089,6 +2233,7 @@ public class PurpurWorldConfig { +@@ -2080,6 +2224,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2334,7 +2334,7 @@ index 3fdcd6f04bd03fb65637b261e390ced9914c4bb1..75907514dde64d6eb35bd318b63decb1 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2104,5 +2249,6 @@ public class PurpurWorldConfig { +@@ -2095,5 +2240,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/unapplied/0139-Config-to-always-tame-in-Creative.patch b/patches/server/0136-Config-to-always-tame-in-Creative.patch similarity index 91% rename from patches/unapplied/0139-Config-to-always-tame-in-Creative.patch rename to patches/server/0136-Config-to-always-tame-in-Creative.patch index abf5f5920..dbbb151cc 100644 --- a/patches/unapplied/0139-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0136-Config-to-always-tame-in-Creative.patch @@ -20,10 +20,10 @@ index 5c64905e90ccca6e0b347241ddf9cc3f71058b8e..3bd7521b131b2b40f807bdc7ab95e64c return; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 31930b5936dcaea92afc54a583efcd5c3cedac3b..9edd8b89abaa9a41dd50d859878703c02e514fd3 100644 +index d60eb249c3cc893c8546ac99f7b25e545717335c..dca3b1b4099cab57c25c2df74e865c876709321d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -501,7 +501,7 @@ public class Cat extends TamableAnimal { +@@ -468,7 +468,7 @@ public class Cat extends TamableAnimal { } } else if (this.isFood(itemstack)) { this.usePlayerItem(player, hand, itemstack); @@ -33,10 +33,10 @@ index 31930b5936dcaea92afc54a583efcd5c3cedac3b..9edd8b89abaa9a41dd50d859878703c0 this.setOrderedToSit(true); this.level.broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index c35644499f4501fb9d1f2ed3551949a38f3464ca..c266028b96dcdb4d6dbb161a5f16be0d38827a91 100644 +index 55b14422fea113ea64717f64226aac142f6f60bd..11291851f11127f6781b3c77c0d59534606eb9dd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -329,7 +329,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -330,7 +330,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } if (!this.level.isClientSide) { @@ -46,10 +46,10 @@ index c35644499f4501fb9d1f2ed3551949a38f3464ca..c266028b96dcdb4d6dbb161a5f16be0d this.level.broadcastEntityEvent(this, (byte) 7); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 79fdf8f0512fb9bff730b0a3674aba2f121dbb6f..303ac9f3941d6759b42ac1cae2586b4df3d9faaf 100644 +index dd514cbf2f03b688eb4d8cd49052f1775d3adebb..ed33573a96e96d557156fbe2f725e3d65c7d5ec4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -538,7 +538,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -537,7 +537,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // CraftBukkit - added event call and isCancelled check. @@ -59,7 +59,7 @@ index 79fdf8f0512fb9bff730b0a3674aba2f121dbb6f..303ac9f3941d6759b42ac1cae2586b4d 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 75907514dde64d6eb35bd318b63decb1c11d178d..5e7d226a3510e453d4a0b52467ca0f07364ec2a9 100644 +index 3616e81a44c10d94351520c66ed694abb98411ab..a33038ff82f8f1b33b091e7068a8a8d5ee186e30 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 { diff --git a/patches/unapplied/0140-End-crystal-explosion-options.patch b/patches/server/0137-End-crystal-explosion-options.patch similarity index 98% rename from patches/unapplied/0140-End-crystal-explosion-options.patch rename to patches/server/0137-End-crystal-explosion-options.patch index 914c3cbc2..8f676d5f3 100644 --- a/patches/unapplied/0140-End-crystal-explosion-options.patch +++ b/patches/server/0137-End-crystal-explosion-options.patch @@ -52,7 +52,7 @@ 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 e7299341d4890d6354564be47e30814300858f74..da979391d05fbfae76db66e02ead184b7aa606ad 100644 +index a33038ff82f8f1b33b091e7068a8a8d5ee186e30..3afbda85a14a392854344b9f8253087d467d6663 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -451,6 +451,35 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 86% rename from patches/unapplied/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index e7b957c4f..0ec8062c4 100644 --- a/patches/unapplied/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index d0cae88c3ccf5f9282f2e71525286f6625260374..fe742452cab6afd0db76072e8f5acffcf1ecce95 100644 +index 34e1ee5f67027cd7301e22e966f65c838e249bf6..0bcf2f853add232526d92ec2099fa63c9fff6f5e 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -1133,6 +1133,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1130,6 +1130,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -17,7 +17,7 @@ index d0cae88c3ccf5f9282f2e71525286f6625260374..fe742452cab6afd0db76072e8f5acffc } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 1aadac665d7389431d819f72bb05af82a4d08b8c..b947a9af4c3387aec9b7e62d5899fdae1ccfedbb 100644 +index e0c960a07fcecec58fecdf88c190ab85b25a3658..3cdf02e3376a24afe7fff9ebb981f7ffffa4cc1f 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -737,6 +737,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -29,10 +29,10 @@ index 1aadac665d7389431d819f72bb05af82a4d08b8c..b947a9af4c3387aec9b7e62d5899fdae } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 451ace3507e54a6a38dc4f154ef0b5471f50f7b4..cdff9baf10df1f572de881f8cb79f9ebe7261903 100644 +index 3afbda85a14a392854344b9f8253087d467d6663..bad1ac223d77cc178d78702a7f7d68c0fe226bee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -898,6 +898,7 @@ public class PurpurWorldConfig { +@@ -893,6 +893,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 451ace3507e54a6a38dc4f154ef0b5471f50f7b4..cdff9baf10df1f572de881f8cb79f9eb private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -916,6 +917,7 @@ public class PurpurWorldConfig { +@@ -911,6 +912,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 451ace3507e54a6a38dc4f154ef0b5471f50f7b4..cdff9baf10df1f572de881f8cb79f9eb } public boolean endermanRidable = false; -@@ -2083,6 +2085,7 @@ public class PurpurWorldConfig { +@@ -2074,6 +2076,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 451ace3507e54a6a38dc4f154ef0b5471f50f7b4..cdff9baf10df1f572de881f8cb79f9eb private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2102,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -2093,6 +2096,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/unapplied/0142-Dont-run-with-scissors.patch b/patches/server/0139-Dont-run-with-scissors.patch similarity index 84% rename from patches/unapplied/0142-Dont-run-with-scissors.patch rename to patches/server/0139-Dont-run-with-scissors.patch index 48a95bcc8..a7fff3eff 100644 --- a/patches/unapplied/0142-Dont-run-with-scissors.patch +++ b/patches/server/0139-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e01afeb407acb8cf865d2d223aefaf15b634c94d..d1ff93ffb591bb7c5a905c4794d19e0dd179346e 100644 +index 535c4577c4fead700061020f0b946c0ee191f768..70b9a030a93946a1298ee9594fdd5217ef5a6bca 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1597,6 +1597,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1625,6 +1625,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index e01afeb407acb8cf865d2d223aefaf15b634c94d..d1ff93ffb591bb7c5a905c4794d19e0d this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1630,6 +1637,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1658,6 +1665,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end - optimise out extra getCubes @@ -36,27 +36,29 @@ index e01afeb407acb8cf865d2d223aefaf15b634c94d..d1ff93ffb591bb7c5a905c4794d19e0d Iterable iterable = world.getCollisions(this.player, this.player.getBoundingBox().deflate(9.999999747378752E-6D)); VoxelShape voxelshape = Shapes.create(box.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 9125deb86b856bcb5e1cd779773522e2fa4cb5f9..c7dead8b33c987501c0b16ea905a5088cd4f27dd 100644 +index c4088446d30c3b25cf196f51fd394cd056be0495..8b03b8e58e16ab9b677ba14cf1d09b417cf369f5 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -46,6 +46,12 @@ public class DamageSource { - return getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgStonecutter, entity); - } - }).bypassArmor(); +@@ -38,6 +38,14 @@ public class DamageSource { + public static final DamageSource FREEZE = (new DamageSource("freeze")).bypassArmor(); + public static final DamageSource FALLING_STALACTITE = (new DamageSource("fallingStalactite")).damageHelmet(); + public static final DamageSource STALAGMITE = (new DamageSource("stalagmite")).bypassArmor().setIsFall(); ++ // Purpur start + public static final DamageSource SCISSORS = (new DamageSource("scissors") { + @Override + public Component getLocalizedDeathMessage(LivingEntity entity) { + return getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, entity); + } + }).bypassArmor(); - // Purpur end ++ // Purpur end private boolean damageHelmet; private boolean bypassArmor; + private boolean bypassInvul; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 066c40a8a0e5d13fc39c5283b54fe424b8822f4f..5ab4a37fcdd74924e70f8de1ffafdb231e1ab317 100644 +index 97108c2317a38e11d45fdbef448dca5cb3ddad1c..8f77f17fc8e2ce8e877b050e08fdc024e4e21184 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1132,6 +1132,10 @@ public class CraftEventFactory { +@@ -1128,6 +1128,10 @@ public class CraftEventFactory { cause = DamageCause.FREEZE; } else if (source == DamageSource.GENERIC) { cause = DamageCause.CUSTOM; @@ -68,7 +70,7 @@ index 066c40a8a0e5d13fc39c5283b54fe424b8822f4f..5ab4a37fcdd74924e70f8de1ffafdb23 if (cause != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1eb8d599ebb70313fda467d943888f137b1fa745..994047373148cd23758998a3d161c6dc9e2b5349 100644 +index 47f4c08c354c2d683dd0959c22c68eb78920a5da..cd2474c2bb19ef83a469daf8b28af7f9c14f0d81 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -177,6 +177,7 @@ public class PurpurConfig { @@ -79,23 +81,21 @@ index 1eb8d599ebb70313fda467d943888f137b1fa745..994047373148cd23758998a3d161c6dc private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -187,11 +188,14 @@ public class PurpurConfig { +@@ -187,6 +188,12 @@ public class PurpurConfig { demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); + dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); - } - - public static String deathMsgStonecutter = " has sawed themself in half"; ++ } ++ + public static String deathMsgRunWithScissors = " slipped and fell on their shears"; - private static void deathMessages() { - deathMsgStonecutter = getString("settings.messages.death-message.stonecutter", deathMsgStonecutter); ++ private static void deathMessages() { + deathMsgRunWithScissors = getString("settings.messages.death-message.run-with-scissors", deathMsgRunWithScissors); } 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 cdff9baf10df1f572de881f8cb79f9ebe7261903..3d7af5c4d09422bb528e244ab3ee6dff484d4d25 100644 +index bad1ac223d77cc178d78702a7f7d68c0fe226bee..d9b51013633328cd75bab5c6033c0b6c56f25780 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -191,6 +191,8 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0143-One-Punch-Man.patch b/patches/server/0140-One-Punch-Man.patch similarity index 91% rename from patches/unapplied/0143-One-Punch-Man.patch rename to patches/server/0140-One-Punch-Man.patch index 79974b5ba..f6591c869 100644 --- a/patches/unapplied/0143-One-Punch-Man.patch +++ b/patches/server/0140-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index dace52b3cae2ce20c10080612bf6d6b09e82bea1..bb114e9c8fb06c6530f302f5db5ba90eb048ff05 100644 +index 1c5daf93cca4c54b35d08092a7662e88d5d18f6d..12610d678830e92d90f42a518a7eda251be9c936 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2169,6 +2169,20 @@ public abstract class LivingEntity extends Entity { +@@ -2180,6 +2180,20 @@ public abstract class LivingEntity extends Entity { ((ServerPlayer) damagesource.getEntity()).awardStat(Stats.DAMAGE_DEALT_ABSORBED, Math.round(f2 * 10.0F)); } @@ -30,7 +30,7 @@ index dace52b3cae2ce20c10080612bf6d6b09e82bea1..bb114e9c8fb06c6530f302f5db5ba90e 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 3d7af5c4d09422bb528e244ab3ee6dff484d4d25..6ca6a53c677cdace8b7e0147d56872adb0f6951b 100644 +index d9b51013633328cd75bab5c6033c0b6c56f25780..4c80c6cc54ab24f969fb12352801bf8294efdd5e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -336,6 +336,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0141-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 96% rename from patches/unapplied/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0141-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 3968352d1..40a79198a 100644 --- a/patches/unapplied/0145-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0141-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -8,7 +8,7 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG - Endermite spawn chance diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 0686af29d4835b35dd6f9e6780437a7fd48bbd3f..ba58797f4952b8fc17f06526e28119915c47d2e3 100644 +index 22d5f5aac2f4c7ce8f490d4851ef3d637a9c7d06..33bfd33aa2fdf8e9da4dbd333721eb4449fddae4 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -69,7 +69,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { @@ -43,7 +43,7 @@ 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 df0397ea8bc4396ede6b357577677b9ae1c2a557..e95fe1e812135d9adfd8cf6a23433528060e5123 100644 +index 4c80c6cc54ab24f969fb12352801bf8294efdd5e..3738ab9fb98cadcb79c7d87d4948581f8277fd2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -193,6 +193,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0142-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 89% rename from patches/unapplied/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0142-Config-to-ignore-nearby-mobs-when-sleeping.patch index aa9579cc1..a771ba036 100644 --- a/patches/unapplied/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0142-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ceb6d67079819b5ef293b030875666eb8de7095c..ac93883c891c641169434e883387388394b39cbd 100644 +index ca1b2d02ec7a51fe2bee5037c09a0fdcf00ac58e..1b6a8932972862a5f2c4f0614362b5c3cf37b096 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1326,7 +1326,7 @@ public class ServerPlayer extends Player { +@@ -1335,7 +1335,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -18,7 +18,7 @@ index ceb6d67079819b5ef293b030875666eb8de7095c..ac93883c891c641169434e8833873883 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 093c3150e1fb88330f7c8a669440643f5931cdc0..9993677b92324bda36a01c673d1d47ce5b4f730d 100644 +index 3738ab9fb98cadcb79c7d87d4948581f8277fd2c..d3ee82025c0e15398ff670951300d0d4ed2dec86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -345,6 +345,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0147-Add-back-player-spawned-endermite-API.patch b/patches/server/0143-Add-back-player-spawned-endermite-API.patch similarity index 94% rename from patches/unapplied/0147-Add-back-player-spawned-endermite-API.patch rename to patches/server/0143-Add-back-player-spawned-endermite-API.patch index 94b0903c2..1a089b9b3 100644 --- a/patches/unapplied/0147-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0143-Add-back-player-spawned-endermite-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add back player spawned endermite API diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 31cfaa059dc8df86027950e5db651560fcd51d32..c644acd4402e41ec1eab919f35e378a8285b9b08 100644 +index df1d1085419b41920542260a75262b1a6ab3eb41..41d5465db97dee4ab5d0b7deb29f684ea605a80c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; @@ -47,7 +47,7 @@ index 31cfaa059dc8df86027950e5db651560fcd51d32..c644acd4402e41ec1eab919f35e378a8 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index ba58797f4952b8fc17f06526e28119915c47d2e3..1fe20aab5b0c129470c1563d5c0710f2a23895d2 100644 +index 33bfd33aa2fdf8e9da4dbd333721eb4449fddae4..69dd0f6cb53b2538ae39952f53eb7fbcb69a4674 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -72,6 +72,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { diff --git a/patches/unapplied/0148-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0144-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 91% rename from patches/unapplied/0148-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0144-Config-Enderman-aggressiveness-towards-Endermites.patch index 697a1b5a8..5cde341cf 100644 --- a/patches/unapplied/0148-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0144-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 2c637e8e93c553d51b2467de64b9d0b9bf9b8381..371cefe186dbb0643f7de4fabe40db9bdc9e1118 100644 +index 74dff7ef5234f4b01fef7ccff5eeb2aafa82edc0..4df4aead6a0e69175dd9464d50a6a855a5ad470a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -123,7 +123,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -18,10 +18,10 @@ index 2c637e8e93c553d51b2467de64b9d0b9bf9b8381..371cefe186dbb0643f7de4fabe40db9b } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9993677b92324bda36a01c673d1d47ce5b4f730d..b99f3b2414594640ad5d88cc461ae62b463c1e2a 100644 +index d3ee82025c0e15398ff670951300d0d4ed2dec86..7b00b367c895e200f11a99d4e2a0953defd8eb04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -949,6 +949,8 @@ public class PurpurWorldConfig { +@@ -939,6 +939,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 9993677b92324bda36a01c673d1d47ce5b4f730d..b99f3b2414594640ad5d88cc461ae62b private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -958,11 +960,17 @@ public class PurpurWorldConfig { +@@ -948,11 +950,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/unapplied/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0145-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 90% rename from patches/unapplied/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0145-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index d9a7afe9b..ce2f27037 100644 --- a/patches/unapplied/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0145-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 371cefe186dbb0643f7de4fabe40db9bdc9e1118..8713db4986d6db80c3422ead4f99203283e22e40 100644 +index 4df4aead6a0e69175dd9464d50a6a855a5ad470a..3bf86f01a32237efb9b95fc9cd3ca0a570c6dcff 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -260,7 +260,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,10 +20,10 @@ index 371cefe186dbb0643f7de4fabe40db9bdc9e1118..8713db4986d6db80c3422ead4f992032 } 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 b99f3b2414594640ad5d88cc461ae62b463c1e2a..13ddf5fbec4c20af82be03f814004e99fcdb67d9 100644 +index 7b00b367c895e200f11a99d4e2a0953defd8eb04..a5c25519d6a2fd11f957c425c6142195034e0e17 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -951,6 +951,8 @@ public class PurpurWorldConfig { +@@ -941,6 +941,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index b99f3b2414594640ad5d88cc461ae62b463c1e2a..13ddf5fbec4c20af82be03f814004e99 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -971,6 +973,8 @@ public class PurpurWorldConfig { +@@ -961,6 +963,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/unapplied/0150-Tick-fluids-config.patch b/patches/server/0146-Tick-fluids-config.patch similarity index 93% rename from patches/unapplied/0150-Tick-fluids-config.patch rename to patches/server/0146-Tick-fluids-config.patch index d5aba4ec9..8a328e882 100644 --- a/patches/unapplied/0150-Tick-fluids-config.patch +++ b/patches/server/0146-Tick-fluids-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tick fluids config diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -index 8497adcba2570da8875c322e751fca2fdad057e5..992430e38a3ffb3c0243a17c75432141937fcee5 100644 +index f0cbb9e44b9434a69ea0ee7a5b403373d3680908..859bd95ccaf41ef594948eaaaebb4a78329b2ee9 100644 --- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java +++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java @@ -106,7 +106,7 @@ public class LiquidBlock extends Block implements BucketPickup { @@ -29,14 +29,14 @@ index 8497adcba2570da8875c322e751fca2fdad057e5..992430e38a3ffb3c0243a17c75432141 @@ -139,7 +139,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block block, BlockPos fromPos, boolean notify) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { - if (this.shouldSpreadLiquid(world, pos, state)) { + if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13ddf5fbec4c20af82be03f814004e99fcdb67d9..ad950cbf50332004b03f9a19ac2d5739d60e1672 100644 +index a5c25519d6a2fd11f957c425c6142195034e0e17..c04cd1b4d34f2a5904b67952c5d4283ce008408b 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 { diff --git a/patches/unapplied/0151-Config-to-disable-Llama-caravans.patch b/patches/server/0147-Config-to-disable-Llama-caravans.patch similarity index 91% rename from patches/unapplied/0151-Config-to-disable-Llama-caravans.patch rename to patches/server/0147-Config-to-disable-Llama-caravans.patch index 395d8f181..d7eadd740 100644 --- a/patches/unapplied/0151-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0147-Config-to-disable-Llama-caravans.patch @@ -19,7 +19,7 @@ index 7b141c495095afcd9c8b04c059d692e829259e7a..ad30f2d678cfc4b0d693e84e6e152c63 List list = this.llama.level.getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index f90f890c8a537be1912e9f131d1866cffcb580e1..68f28835905c018428d848c1fc9ffe7dabcac0d3 100644 +index 57589a54362a4e0d23ba32957d5db47da2b9ec83..5506acea9b84a42eff7bdd593fec69c5031363b6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -32,10 +32,10 @@ index f90f890c8a537be1912e9f131d1866cffcb580e1..68f28835905c018428d848c1fc9ffe7d 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 ad950cbf50332004b03f9a19ac2d5739d60e1672..0d6bab1005b93b683ea19ec9b249da1802c4bc51 100644 +index c04cd1b4d34f2a5904b67952c5d4283ce008408b..b43dff5223728fe1f16fef4ccd1720d57be610c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1270,6 +1270,7 @@ public class PurpurWorldConfig { +@@ -1260,6 +1260,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index ad950cbf50332004b03f9a19ac2d5739d60e1672..0d6bab1005b93b683ea19ec9b249da18 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1289,6 +1290,7 @@ public class PurpurWorldConfig { +@@ -1279,6 +1280,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/unapplied/0152-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0148-Config-to-make-Creepers-explode-on-death.patch similarity index 92% rename from patches/unapplied/0152-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0148-Config-to-make-Creepers-explode-on-death.patch index 68b73cce2..cea0d3ce6 100644 --- a/patches/unapplied/0152-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0148-Config-to-make-Creepers-explode-on-death.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config to make Creepers explode on death Creepers exploded after being killed in the alpha days. This brings that back. diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 7c683693a806142c098dd31e6bc88a0b0a33ec66..cf585d2eaf743d38e06084609ff4c220e096cf71 100644 +index 614baf25654c770a6cdac02f8cd4301a3ccdfb23..ca66ac64fd8fac10622e9458faecc4f05b9b629c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -64,6 +64,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -50,10 +50,10 @@ index 7c683693a806142c098dd31e6bc88a0b0a33ec66..cf585d2eaf743d38e06084609ff4c220 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d6bab1005b93b683ea19ec9b249da1802c4bc51..cfc14462c566096fb6eb2e037da11967c80334f0 100644 +index b43dff5223728fe1f16fef4ccd1720d57be610c3..24940550e9f0778630d9f1ffa80638d39b94bb10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -803,6 +803,7 @@ public class PurpurWorldConfig { +@@ -793,6 +793,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 0d6bab1005b93b683ea19ec9b249da1802c4bc51..cfc14462c566096fb6eb2e037da11967 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -817,6 +818,7 @@ public class PurpurWorldConfig { +@@ -807,6 +808,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/unapplied/0153-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0149-Configurable-ravager-griefable-blocks-list.patch similarity index 90% rename from patches/unapplied/0153-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0149-Configurable-ravager-griefable-blocks-list.patch index dd3d11639..f88415c8b 100644 --- a/patches/unapplied/0153-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0149-Configurable-ravager-griefable-blocks-list.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable ravager griefable blocks list diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index f8ceb90e468203d995f9f3d9d041a9a43e94fa68..a2893e4a64c339af31641e9d8150b163fb79962c 100644 +index 14b2d1adabcdf9281f314e3cd185ea22353e614e..1c821c354184a57d54a2976e5e00eb9ed0cefb72 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -205,7 +205,7 @@ public class Ravager extends Raider { +@@ -206,7 +206,7 @@ public class Ravager extends Raider { BlockState iblockdata = this.level.getBlockState(blockposition); Block block = iblockdata.getBlock(); @@ -18,7 +18,7 @@ index f8ceb90e468203d995f9f3d9d041a9a43e94fa68..a2893e4a64c339af31641e9d8150b163 } } diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index e9087a46e401bc99b73c2cf2731fdac3e68719f8..e054edf9e7c4eef231e155516433c6faeb2ca540 100644 +index a68bf10353e5c19adfa86c2dd6290f2386af9a9d..38bc19edc2dcfa33b3191cfa3b69f00de13a5c4a 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -164,7 +164,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -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 cfc14462c566096fb6eb2e037da11967c80334f0..fb16a3541c86f73ea4922baa4e34788ee3c9112d 100644 +index 24940550e9f0778630d9f1ffa80638d39b94bb10..5eab9497e568c86cbc795b78cb6a07406f329d6b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1654,6 +1654,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1644,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index cfc14462c566096fb6eb2e037da11967c80334f0..fb16a3541c86f73ea4922baa4e34788e private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1666,6 +1667,23 @@ public class PurpurWorldConfig { +@@ -1656,6 +1657,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/unapplied/0154-Sneak-to-bulk-process-composter.patch b/patches/server/0150-Sneak-to-bulk-process-composter.patch similarity index 90% rename from patches/unapplied/0154-Sneak-to-bulk-process-composter.patch rename to patches/server/0150-Sneak-to-bulk-process-composter.patch index 8cc112f89..f42e054e9 100644 --- a/patches/unapplied/0154-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0150-Sneak-to-bulk-process-composter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Sneak to bulk process composter diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 415b6c2bbf11c5a2ac75d18f52b93f80b9e14fe4..a0e5ec1a3129fdb4facfbef936b68c43d2d2f710 100644 +index 7572f6d03d315ab4639be211c5ffc7682b326362..87e3c63ac67f2cbabcae55d76ecb5d5067479704 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -603,7 +603,7 @@ public class ServerPlayerGameMode { +@@ -567,7 +567,7 @@ public class ServerPlayerGameMode { boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemstack1 = stack.copy(); @@ -18,10 +18,10 @@ index 415b6c2bbf11c5a2ac75d18f52b93f80b9e14fe4..a0e5ec1a3129fdb4facfbef936b68c43 if (enuminteractionresult.consumesAction()) { diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -index fb8b8a9733ac50096d8406487ab1ae167ef5f7b1..16598ca0fd953b6af98dfcdb6716e2e128d14bab 100644 +index 2b1983d61fd3ed856770146de5cdfd33b4f63a46..9315c819a0c113313a8e6f97e02b4d13c2cf62c0 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -@@ -217,16 +217,21 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -220,16 +220,21 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { ItemStack itemstack = player.getItemInHand(hand); if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(itemstack.getItem())) { @@ -52,7 +52,7 @@ index fb8b8a9733ac50096d8406487ab1ae167ef5f7b1..16598ca0fd953b6af98dfcdb6716e2e1 return InteractionResult.sidedSuccess(world.isClientSide); } else if (i == 8) { ComposterBlock.extractProduce(state, world, pos, (Entity) null); // CraftBukkit - no event for players -@@ -236,6 +241,21 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -239,6 +244,21 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { } } @@ -75,7 +75,7 @@ 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 fb16a3541c86f73ea4922baa4e34788ee3c9112d..7a7fbc0f8d5f6e40c209666a83de9f7371f3e4d3 100644 +index 5eab9497e568c86cbc795b78cb6a07406f329d6b..cc1074cee651e0a3b06943474fe2525dda3b0aa1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -462,6 +462,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0155-Config-for-skipping-night.patch b/patches/server/0151-Config-for-skipping-night.patch similarity index 90% rename from patches/unapplied/0155-Config-for-skipping-night.patch rename to patches/server/0151-Config-for-skipping-night.patch index 6246b6771..a781805a8 100644 --- a/patches/unapplied/0155-Config-for-skipping-night.patch +++ b/patches/server/0151-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ 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 09800a0c113e1e70ad773e55bd370e7b3c36d463..285927ca0c196c554df725403ea2cfd6d84013db 100644 +index b1a3615d3b9d27ca7c7d7a84d213ef16a984e3a8..678dd3f82c3e842450b9d701909bd69298dd8015 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -607,7 +607,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -621,7 +621,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index 09800a0c113e1e70ad773e55bd370e7b3c36d463..285927ca0c196c554df725403ea2cfd6 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 7a7fbc0f8d5f6e40c209666a83de9f7371f3e4d3..2ef12f92c5f002294bc3bf81e429b60378bbd75f 100644 +index cc1074cee651e0a3b06943474fe2525dda3b0aa1..a7c7b9607c53cc2735ce0d9a8003621a30fec0a5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -348,6 +348,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0156-Add-config-for-villager-trading.patch b/patches/server/0152-Add-config-for-villager-trading.patch similarity index 89% rename from patches/unapplied/0156-Add-config-for-villager-trading.patch rename to patches/server/0152-Add-config-for-villager-trading.patch index 72daa5652..7f235383c 100644 --- a/patches/unapplied/0156-Add-config-for-villager-trading.patch +++ b/patches/server/0152-Add-config-for-villager-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for villager trading diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index c926a513490b91e83802ab1aea6db90b93acd206..f810e1d00c084e9a1edaa367752c040032a58d75 100644 +index 7962332c16f8cd83e5a05176b34674a3b3ff6a4b..ebc2a2f0518423dbc527d2b622d71320a56a34a9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -365,7 +365,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return tryRide(player, hand); // Purpur } else { if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur @@ -31,10 +31,10 @@ index 6dd8856816bebb2766203589048cc68b3f5c8f5c..8d6930868a42b9fc98d7672bff433ec5 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ef12f92c5f002294bc3bf81e429b60378bbd75f..a1969d56e5c3088812737c591d6a59fd8875e6b9 100644 +index a7c7b9607c53cc2735ce0d9a8003621a30fec0a5..454c2537b03add477174e01b8c4f0b74c512f3d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2056,6 +2056,7 @@ public class PurpurWorldConfig { +@@ -2044,6 +2044,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 2ef12f92c5f002294bc3bf81e429b60378bbd75f..a1969d56e5c3088812737c591d6a59fd private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2078,6 +2079,7 @@ public class PurpurWorldConfig { +@@ -2064,6 +2065,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 2ef12f92c5f002294bc3bf81e429b60378bbd75f..a1969d56e5c3088812737c591d6a59fd } public boolean vindicatorRidable = false; -@@ -2107,6 +2109,7 @@ public class PurpurWorldConfig { +@@ -2093,6 +2095,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 2ef12f92c5f002294bc3bf81e429b60378bbd75f..a1969d56e5c3088812737c591d6a59fd private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2120,6 +2123,7 @@ public class PurpurWorldConfig { +@@ -2106,6 +2109,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/unapplied/0157-Allow-infinity-on-crossbows.patch b/patches/server/0153-Allow-infinity-on-crossbows.patch similarity index 91% rename from patches/unapplied/0157-Allow-infinity-on-crossbows.patch rename to patches/server/0153-Allow-infinity-on-crossbows.patch index de423610a..5102190e5 100644 --- a/patches/unapplied/0157-Allow-infinity-on-crossbows.patch +++ b/patches/server/0153-Allow-infinity-on-crossbows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow infinity on crossbows diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index c0c211c7227f4ce5d1e0e433419425e6bb13046f..9122ce42d8349aabe31ab2bb025813963c72b8e4 100644 +index 3b8629d31dc7bc66debe9c56593fbd071a6ddd11..25a95a64dfb79ef80e9d21f551d0cc5a50906d36 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -114,7 +114,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { +@@ -112,7 +112,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { // Paper end int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, projectile); int j = i == 0 ? 1 : 3; @@ -17,7 +17,7 @@ index c0c211c7227f4ce5d1e0e433419425e6bb13046f..9122ce42d8349aabe31ab2bb02581396 ItemStack itemstack1 = shooter.getProjectile(projectile); ItemStack itemstack2 = itemstack1.copy(); -@@ -305,7 +305,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { +@@ -303,7 +303,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { for (int i = 0; i < list.size(); ++i) { ItemStack itemstack1 = (ItemStack) list.get(i); @@ -65,7 +65,7 @@ index 6f6106ca4d74d50a7b74b086adc96c58c7906cb6..d6417c1e77ac8823e18a179dc9f61757 public abstract boolean canEnchant(Item item); diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index 11c1eb0e0bc326b28dc0cab16f67c413cc52e98c..7073985656ae5b17a7489518747dc8584487e46e 100644 +index d94ca202033edff679d9471cb33a314735f57be7..e883e966811ef47137a16f42969f7ff539a69265 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -59,6 +59,7 @@ public class CraftEnchantment extends Enchantment { @@ -77,10 +77,10 @@ index 11c1eb0e0bc326b28dc0cab16f67c413cc52e98c..7073985656ae5b17a7489518747dc858 return null; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7a2cb685dbf10b8a0c69e393b855c001a24d1767..e1c4af38a7eac438b3304f11121c754e451c5bd6 100644 +index cd2474c2bb19ef83a469daf8b28af7f9c14f0d81..88ab4288b0853369d62ea6c5a87a49954147699e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -279,6 +279,7 @@ public class PurpurConfig { +@@ -277,6 +277,7 @@ public class PurpurConfig { } public static boolean allowInfinityMending = false; @@ -88,7 +88,7 @@ index 7a2cb685dbf10b8a0c69e393b855c001a24d1767..e1c4af38a7eac438b3304f11121c754e private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -286,6 +287,7 @@ public class PurpurConfig { +@@ -284,6 +285,7 @@ public class PurpurConfig { set("settings.enchantment.allow-infinite-and-mending-together", null); } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); diff --git a/patches/unapplied/0158-Drowning-Settings.patch b/patches/server/0154-Drowning-Settings.patch similarity index 86% rename from patches/unapplied/0158-Drowning-Settings.patch rename to patches/server/0154-Drowning-Settings.patch index 927cfeca2..0fe719967 100644 --- a/patches/unapplied/0158-Drowning-Settings.patch +++ b/patches/server/0154-Drowning-Settings.patch @@ -5,10 +5,10 @@ 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 1c996ff06017c178064877c5dd6bff591fa170f3..91bbb0b3d5a3d702a5b68e7b8a4146d7ec0f47b5 100644 +index a7bd8be272376c4ec15603ee1dbc90cbbf455416..9b90757dbe6689366b9ad03264a21b608e6ec55c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3016,7 +3016,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3027,7 +3027,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public int getMaxAirSupply() { @@ -18,10 +18,10 @@ index 1c996ff06017c178064877c5dd6bff591fa170f3..91bbb0b3d5a3d702a5b68e7b8a4146d7 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 3f4b6fad360d56738066046feefce64a08947c0d..6155573d5e4ebee45ebbcacf71577c7a029d1b29 100644 +index 12610d678830e92d90f42a518a7eda251be9c936..1d2536b5c410997b3a584b179f4c41a13fcbcfca 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -421,7 +421,7 @@ public abstract class LivingEntity extends Entity { +@@ -425,7 +425,7 @@ public abstract class LivingEntity extends Entity { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index 3f4b6fad360d56738066046feefce64a08947c0d..6155573d5e4ebee45ebbcacf71577c7a this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -433,7 +433,7 @@ public abstract class LivingEntity extends Entity { +@@ -437,7 +437,7 @@ public abstract class LivingEntity extends Entity { this.level.addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } @@ -40,7 +40,7 @@ index 3f4b6fad360d56738066046feefce64a08947c0d..6155573d5e4ebee45ebbcacf71577c7a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1969d56e5c3088812737c591d6a59fd8875e6b9..4f913ecf1d259badb7eaf584da57ff8327e0e66b 100644 +index 454c2537b03add477174e01b8c4f0b74c512f3d6..0a76aefd53a52ab582ef2bf5f9c55f46e7439d34 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -158,6 +158,15 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0159-Break-individual-slabs-when-sneaking.patch b/patches/server/0155-Break-individual-slabs-when-sneaking.patch similarity index 91% rename from patches/unapplied/0159-Break-individual-slabs-when-sneaking.patch rename to patches/server/0155-Break-individual-slabs-when-sneaking.patch index 4c4cb2b2c..1799058a6 100644 --- a/patches/unapplied/0159-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0155-Break-individual-slabs-when-sneaking.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index a0e5ec1a3129fdb4facfbef936b68c43d2d2f710..464e304c532c1af48914d3cfad86380e8b4a096d 100644 +index 87e3c63ac67f2cbabcae55d76ecb5d5067479704..12d11659134410b2720a00297b796bba3357c89a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -430,6 +430,7 @@ public class ServerPlayerGameMode { +@@ -391,6 +391,7 @@ public class ServerPlayerGameMode { } return false; } @@ -47,10 +47,10 @@ index 18b603d646081926343dea108b55d641df1c2c34..fdbbd2e5d4fd970a4593b55f16bd0f82 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4f913ecf1d259badb7eaf584da57ff8327e0e66b..036b6f987a8fc966539795ab22bdf505e48bdd1f 100644 +index 0a76aefd53a52ab582ef2bf5f9c55f46e7439d34..7a7a5ffbee371d92899beb3defee9e6ebf8a9e71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -582,6 +582,11 @@ public class PurpurWorldConfig { +@@ -577,6 +577,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/unapplied/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0156-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 71% rename from patches/unapplied/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0156-Config-to-disable-hostile-mob-spawn-on-ice.patch index d9c1ab5ea..4d3ee535d 100644 --- a/patches/unapplied/0160-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0156-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Config to disable hostile mob spawn on ice diff --git a/src/main/java/net/minecraft/world/entity/monster/Monster.java b/src/main/java/net/minecraft/world/entity/monster/Monster.java -index 1d66588cfe94d190a34dc376b4b5bff9461a3529..9459255dd06d71dc1728e440e501cb3c2dde616c 100644 +index 37539f7680013ab99ed3313b82f9829617d17a71..01eb60c7086be32c64f119a1c492a11cd070a073 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Monster.java +++ b/src/main/java/net/minecraft/world/entity/monster/Monster.java -@@ -88,6 +88,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { +@@ -89,6 +89,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { } - public static boolean isDarkEnoughToSpawn(ServerLevelAccessor world, BlockPos pos, Random random) { + public static boolean isDarkEnoughToSpawn(ServerLevelAccessor world, BlockPos pos, RandomSource random) { + // Purpur start + if (!world.getMinecraftWorld().purpurConfig.mobsSpawnOnPackedIce || !world.getMinecraftWorld().purpurConfig.mobsSpawnOnBlueIce) { + net.minecraft.world.level.block.state.BlockState spawnBlock = world.getBlockState(pos.below()); @@ -22,21 +22,22 @@ index 1d66588cfe94d190a34dc376b4b5bff9461a3529..9459255dd06d71dc1728e440e501cb3c + // Purpur end if (world.getBrightness(LightLayer.SKY, pos) > random.nextInt(32)) { 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 + } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77ad69e86deb7b55d5d5bd96c92dc93b02c28be0..5f86eaacb5f2b17bdd145a188001807469e87393 100644 +index 7a7a5ffbee371d92899beb3defee9e6ebf8a9e71..28cfb198b936c24bdad05ce5603847811335d911 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -541,8 +541,12 @@ public class PurpurWorldConfig { +@@ -540,6 +540,13 @@ public class PurpurWorldConfig { + furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } - public boolean snowOnBlueIce = true; + public boolean mobsSpawnOnPackedIce = true; + public boolean mobsSpawnOnBlueIce = true; - private void iceSettings() { - snowOnBlueIce = getBoolean("blocks.blue_ice.allow-snow-formation", snowOnBlueIce); ++ private void iceSettings() { + mobsSpawnOnPackedIce = getBoolean("blocks.packed_ice.allow-mob-spawns", mobsSpawnOnPackedIce); + mobsSpawnOnBlueIce = getBoolean("blocks.blue_ice.allow-mob-spawns", mobsSpawnOnBlueIce); - } - ++ } ++ public boolean lavaInfinite = false; + public int lavaInfiniteRequiredSources = 2; + public int lavaSpeedNether = 10; diff --git a/patches/unapplied/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0157-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 92% rename from patches/unapplied/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0157-Config-to-show-Armor-Stand-arms-on-spawn.patch index 7e112d5f3..0c6970f90 100644 --- a/patches/unapplied/0161-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0157-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index e9e24435057cff9c0af758ca2aa822c3b1c3593d..8634431cabae82b71f409f02c84dda2d8eca8504 100644 +index 1865fa0173dbd9362ba8186f0726f14d149d7602..fefb8c81df91c8ba30b0cf48735b47ab4f24f0a7 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -113,6 +113,7 @@ public class ArmorStand extends LivingEntity { @@ -17,7 +17,7 @@ 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 5f86eaacb5f2b17bdd145a188001807469e87393..7857b39673a19474ebc22da92b7132682b8ca896 100644 +index 28cfb198b936c24bdad05ce5603847811335d911..cbee1bd44f6eef66a6b2073e8a8bf051e1aca9fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -101,6 +101,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0162-Option-to-make-doors-require-redstone.patch b/patches/server/0158-Option-to-make-doors-require-redstone.patch similarity index 96% rename from patches/unapplied/0162-Option-to-make-doors-require-redstone.patch rename to patches/server/0158-Option-to-make-doors-require-redstone.patch index 49e8bfdf3..0d6443bcd 100644 --- a/patches/unapplied/0162-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0158-Option-to-make-doors-require-redstone.patch @@ -36,7 +36,7 @@ index 4abfeffa72bc70fd26908252ed596e816b4b9eb2..e5c20f40a63e8db215876c03ba6de972 } else { DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java -index 1df52a9c86c01696a8bc9f84a2082387160b3eeb..a4b9c5da133e2e8ad45d447e3f184cb12884961e 100644 +index aa5289f652392515952cc10f70627ed2cdc6c398..d1d3323559f12f60ef0564e2218ca15313ab225f 100644 --- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java @@ -169,6 +169,7 @@ public class DoorBlock extends Block { @@ -67,7 +67,7 @@ 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 3871c1fe25309c1bc0a0361e640c16de4fbd4c1d..490b1147688313660a779997ae07c33da04a1676 100644 +index cbee1bd44f6eef66a6b2073e8a8bf051e1aca9fa..3bcdbd82230d54f64a560882fbc85439af5e425f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -487,6 +487,16 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0163-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0159-Config-to-allow-for-unsafe-enchants.patch similarity index 92% rename from patches/unapplied/0163-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0159-Config-to-allow-for-unsafe-enchants.patch index fad45a232..a2b8b955b 100644 --- a/patches/unapplied/0163-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0159-Config-to-allow-for-unsafe-enchants.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow for unsafe enchants diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java -index 514cc0e8805045549eacde6c280859aa2dc4a91d..f43fe5becfdbe9973b1cfa43c71bbad2ad61daac 100644 +index 7c012f1e37b0085c0939797b0dae8996b4953ab8..155b0a1aa58b891e98a55e10f112f611ff0b35c5 100644 --- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java +++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java @@ -44,7 +44,7 @@ public class EnchantCommand { @@ -27,7 +27,7 @@ index 514cc0e8805045549eacde6c280859aa2dc4a91d..f43fe5becfdbe9973b1cfa43c71bbad2 ++i; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 75e1f6b593a23c88f34cc25db580930066bfb7bb..6cb145ce59d26d8c743962166ff7478887dd4eef 100644 +index 10cd589e427f847936f29e33edee3923a4661210..46fc3f504828e402dda50791d6867cb595de766b 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -208,7 +208,7 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -58,10 +58,10 @@ index 75e1f6b593a23c88f34cc25db580930066bfb7bb..6cb145ce59d26d8c743962166ff74788 ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index d823e4ceba2128ee588b2b344cc8f91cd6de1d13..4098ed7542fe484ee066c3cdc4720e61cc9acae0 100644 +index 5b79adf2e036b4e9c2abd7cea53f1ef064252d7a..520c76a7a2baa3091224c96580a861a635ea11f2 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1157,6 +1157,12 @@ public final class ItemStack { +@@ -1153,6 +1153,12 @@ public final class ItemStack { return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false; } @@ -75,10 +75,10 @@ index d823e4ceba2128ee588b2b344cc8f91cd6de1d13..4098ed7542fe484ee066c3cdc4720e61 this.getOrCreateTag().put(key, element); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 956be9847fc4f34643d9d563c0edc16dfa5ccbbe..12c0774967881168e7abc6fcb8db315458bbce8d 100644 +index 88ab4288b0853369d62ea6c5a87a49954147699e..d3f793b285b8afbf030dd32b8829c986ee10eada 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -280,6 +280,8 @@ public class PurpurConfig { +@@ -278,6 +278,8 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; @@ -87,7 +87,7 @@ index 956be9847fc4f34643d9d563c0edc16dfa5ccbbe..12c0774967881168e7abc6fcb8db3154 private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -288,6 +290,8 @@ public class PurpurConfig { +@@ -286,6 +288,8 @@ public class PurpurConfig { } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); diff --git a/patches/unapplied/0164-Configurable-sponge-absorption.patch b/patches/server/0160-Configurable-sponge-absorption.patch similarity index 87% rename from patches/unapplied/0164-Configurable-sponge-absorption.patch rename to patches/server/0160-Configurable-sponge-absorption.patch index 88356d4dd..5c9de46f7 100644 --- a/patches/unapplied/0164-Configurable-sponge-absorption.patch +++ b/patches/server/0160-Configurable-sponge-absorption.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable sponge absorption Allows the total area and radius of water blocks the sponge can absorb to be changed. diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 11b40defd5f5362346fd8a70a1141cd6425cefa7..fe4fdd21ae22970ddd8c7f5cd72bdf88b9be0a20 100644 +index 7304b2659eb45bc4bc9fa7c43e6ca07221d0fc73..d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java @@ -76,13 +76,13 @@ public class SpongeBlock extends Block { @@ -43,10 +43,10 @@ index 11b40defd5f5362346fd8a70a1141cd6425cefa7..fe4fdd21ae22970ddd8c7f5cd72bdf88 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 490b1147688313660a779997ae07c33da04a1676..d31159c88273c0910c52db82853678102815192f 100644 +index 3bcdbd82230d54f64a560882fbc85439af5e425f..3c8e0d9c26473759bc4b2428b17b995eeb8f9182 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -608,6 +608,13 @@ public class PurpurWorldConfig { +@@ -606,6 +606,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } @@ -57,6 +57,6 @@ index 490b1147688313660a779997ae07c33da04a1676..d31159c88273c0910c52db8285367810 + spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius); + } + - public float stonecutterDamage = 0.0F; - private void stonecutterSettings() { - stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); + public boolean turtleEggsBreakFromExpOrbs = true; + public boolean turtleEggsBreakFromItems = true; + public boolean turtleEggsBreakFromMinecarts = true; diff --git a/patches/unapplied/0165-Projectile-offset-config.patch b/patches/server/0161-Projectile-offset-config.patch similarity index 97% rename from patches/unapplied/0165-Projectile-offset-config.patch rename to patches/server/0161-Projectile-offset-config.patch index 4f456f69a..80498476a 100644 --- a/patches/unapplied/0165-Projectile-offset-config.patch +++ b/patches/server/0161-Projectile-offset-config.patch @@ -18,10 +18,10 @@ index 33df0ca406dc8321b76b393f317bbd1c8ebe6366..220513d3fd5645322886522ea4f6b8c5 entityarrow.setCritArrow(true); } diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 9122ce42d8349aabe31ab2bb025813963c72b8e4..ab8c02a9f619a9e8f9f19943d9262ff6b29ba225 100644 +index 25a95a64dfb79ef80e9d21f551d0cc5a50906d36..2d30300de78de957358cfddac12294b308062e2a 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -65,7 +65,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { +@@ -63,7 +63,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { ItemStack itemstack = user.getItemInHand(hand); if (CrossbowItem.isCharged(itemstack)) { @@ -96,7 +96,7 @@ 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 848fe557a3adf3cf6e66056bc14f4dd5f961355f..3efe20bf5a808c9a6a1d71a8ec6907ca96d9cda9 100644 +index 3c8e0d9c26473759bc4b2428b17b995eeb8f9182..c185c158f8173fd3c675a699281ec2083f7dd675 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,23 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0166-Config-for-powered-rail-activation-distance.patch b/patches/server/0162-Config-for-powered-rail-activation-distance.patch similarity index 91% rename from patches/unapplied/0166-Config-for-powered-rail-activation-distance.patch rename to patches/server/0162-Config-for-powered-rail-activation-distance.patch index 9532d6091..e13522905 100644 --- a/patches/unapplied/0166-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0162-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 3efe20bf5a808c9a6a1d71a8ec6907ca96d9cda9..b0439ccc8094637cb041370c5a37024f4f24d2d4 100644 +index c185c158f8173fd3c675a699281ec2083f7dd675..57b8e78a8b625a8024eb780bf4136723970d94ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -594,6 +594,11 @@ public class PurpurWorldConfig { +@@ -592,6 +592,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/unapplied/0167-Piglin-portal-spawn-modifier.patch b/patches/server/0163-Piglin-portal-spawn-modifier.patch similarity index 89% rename from patches/unapplied/0167-Piglin-portal-spawn-modifier.patch rename to patches/server/0163-Piglin-portal-spawn-modifier.patch index 8f05152e9..7b2ba44e0 100644 --- a/patches/unapplied/0167-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0163-Piglin-portal-spawn-modifier.patch @@ -18,23 +18,23 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 13a367d2b5f245f4dd92df03288dc40b81e19603..bd593ec55fcccc1e02cf5683891c5586d989952c 100644 +index 352568607e16be8f0e5942acd0097b4b2cf13bbc..68de09debf05853bb4a2e74ad34d0af221eb5161 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -55,7 +55,7 @@ public class NetherPortalBlock extends Block { @Override - public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) { + public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { - if (world.spigotConfig.enableZombiePigmenPortalSpawns && world.dimensionType().natural() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && random.nextInt(2000) < world.getDifficulty().getId()) { // Spigot + if (world.spigotConfig.enableZombiePigmenPortalSpawns && world.dimensionType().natural() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && random.nextInt(world.purpurConfig.piglinPortalSpawnModifier) < world.getDifficulty().getId()) { // Spigot // Purpur while (world.getBlockState(pos).is((Block) this)) { pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e53dc52d78f8aa4bd36c156f4e3f7caed77b1758..eb7faf2a5cf909f0570435bf8656421a44a50ff9 100644 +index 57b8e78a8b625a8024eb780bf4136723970d94ef..b6edbf3b08ab571928d0d9f049a5131f786401df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1595,6 +1595,7 @@ public class PurpurWorldConfig { +@@ -1588,6 +1588,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index e53dc52d78f8aa4bd36c156f4e3f7caed77b1758..eb7faf2a5cf909f0570435bf8656421a private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1607,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1600,6 +1601,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/unapplied/0168-Config-to-change-max-number-of-bees.patch b/patches/server/0164-Config-to-change-max-number-of-bees.patch similarity index 86% rename from patches/unapplied/0168-Config-to-change-max-number-of-bees.patch rename to patches/server/0164-Config-to-change-max-number-of-bees.patch index e5db9087c..654d29a70 100644 --- a/patches/unapplied/0168-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0164-Config-to-change-max-number-of-bees.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 483dc52c793d9f90a35b1d091dd8ce71115e4640..9a6bf2159e2ad6a2204d81fd44e2b1888cd60c0c 100644 +index 41c9f074203915c31c1ae7a160ce509c13383f84..a16a1df28258d605cf5908dbe19bda5d71ad4f45 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -42,7 +42,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity { private final List stored = Lists.newArrayList(); @Nullable public BlockPos savedFlowerPos; @@ -18,10 +18,10 @@ index 483dc52c793d9f90a35b1d091dd8ce71115e4640..9a6bf2159e2ad6a2204d81fd44e2b188 public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 12c0774967881168e7abc6fcb8db315458bbce8d..bd996beb468823c3b7957038eff28382d8b2c2ee 100644 +index d3f793b285b8afbf030dd32b8829c986ee10eada..d0ee748947cbe0d6f5747177b0ade0bc62bd99e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -245,6 +245,7 @@ public class PurpurConfig { +@@ -243,6 +243,7 @@ public class PurpurConfig { public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; @@ -29,7 +29,7 @@ index 12c0774967881168e7abc6fcb8db315458bbce8d..bd996beb468823c3b7957038eff28382 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -276,6 +277,7 @@ public class PurpurConfig { +@@ -274,6 +275,7 @@ public class PurpurConfig { org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); diff --git a/patches/unapplied/0170-Config-for-wither-explosion-radius.patch b/patches/server/0165-Config-for-wither-explosion-radius.patch similarity index 92% rename from patches/unapplied/0170-Config-for-wither-explosion-radius.patch rename to patches/server/0165-Config-for-wither-explosion-radius.patch index ce7d5b295..fe9798104 100644 --- a/patches/unapplied/0170-Config-for-wither-explosion-radius.patch +++ b/patches/server/0165-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 d3e9b9c680a71b4e9cb3d1cb3a91a195cad336ba..894f9d48c54ca251e872ec514b6568a420a0b4f9 100644 +index b6edbf3b08ab571928d0d9f049a5131f786401df..31e05cf3dbc075062d358150232cc681ae1eddc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2222,6 +2222,7 @@ public class PurpurWorldConfig { +@@ -2204,6 +2204,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index d3e9b9c680a71b4e9cb3d1cb3a91a195cad336ba..894f9d48c54ca251e872ec514b6568a4 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2242,6 +2243,7 @@ public class PurpurWorldConfig { +@@ -2224,6 +2225,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/unapplied/0171-Gamemode-extra-permissions.patch b/patches/server/0166-Gamemode-extra-permissions.patch similarity index 92% rename from patches/unapplied/0171-Gamemode-extra-permissions.patch rename to patches/server/0166-Gamemode-extra-permissions.patch index ecf7f1729..b0b7bcd49 100644 --- a/patches/unapplied/0171-Gamemode-extra-permissions.patch +++ b/patches/server/0166-Gamemode-extra-permissions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 9d884da26e6515a85b0a8f8f611fafc17c19debc..cfceccc35ba1cc161f47b462504027d74a23b000 100644 +index 25b38ae65250a0b3c34dfbf2d853f65368fd916f..82f4438032a42c35ed8940d850a35f64859a572e 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -195,6 +195,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -203,6 +203,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy } // CraftBukkit end @@ -31,10 +31,10 @@ index 9d884da26e6515a85b0a8f8f611fafc17c19debc..cfceccc35ba1cc161f47b462504027d7 return this.worldPosition; } diff --git a/src/main/java/net/minecraft/server/commands/GameModeCommand.java b/src/main/java/net/minecraft/server/commands/GameModeCommand.java -index 79f6089b934124c3309c6bee2e48b36b937252e0..d1e6ac2dcff3f058dc147c8ed4d16d273b7c40a9 100644 +index 7882ee2b7813d437d3b7580f046f38e79fc9e7b6..afdf86826efc1c8c73a722d7709641b3fa16d542 100644 --- a/src/main/java/net/minecraft/server/commands/GameModeCommand.java +++ b/src/main/java/net/minecraft/server/commands/GameModeCommand.java -@@ -49,6 +49,18 @@ public class GameModeCommand { +@@ -47,6 +47,18 @@ public class GameModeCommand { } private static int setMode(CommandContext context, Collection targets, GameType gameMode) { @@ -75,10 +75,10 @@ index 045ebc5533de7486d1975efe9d51ab368969178a..bfd82778acd2849a9f75b20b78a9a3f3 DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bd996beb468823c3b7957038eff28382d8b2c2ee..dd6468098ca71bfc4e4a41e019a5315dcada1e78 100644 +index d0ee748947cbe0d6f5747177b0ade0bc62bd99e0..ba5570a33768b114d2123cc828cd6e705c7e974b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -228,6 +228,7 @@ public class PurpurConfig { +@@ -226,6 +226,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -86,7 +86,7 @@ index bd996beb468823c3b7957038eff28382d8b2c2ee..dd6468098ca71bfc4e4a41e019a5315d private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -239,6 +240,7 @@ public class PurpurConfig { +@@ -237,6 +238,7 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); diff --git a/patches/unapplied/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0167-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch similarity index 90% rename from patches/unapplied/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch rename to patches/server/0167-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index b364b0413..aac79f432 100644 --- a/patches/unapplied/0172-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0167-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for changing the blocks that turn into dirt paths diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java -index e5562b407bba35ab93bf8bc3c22ac9d45e8353cb..c688bb73cd062f36524cfc231cb691f29f7998c2 100644 +index 32995cb5efdad0bc34ecacacb78cccd21220ba8d..ee1ed9262e4f2a8f1889feb7b2d4f64a2efa63a5 100644 --- a/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java -@@ -33,7 +33,7 @@ public class ShovelItem extends DiggerItem { +@@ -34,7 +34,7 @@ public class ShovelItem extends DiggerItem { return InteractionResult.PASS; } else { Player player = context.getPlayer(); @@ -18,7 +18,7 @@ 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 d282948eac093a3a6bfebe9416c76339f629bc25..043c7c945b200e4731dc7947f6e0ffe34d77e8af 100644 +index 31e05cf3dbc075062d358150232cc681ae1eddc1..04bb336f57476cd0234feb1e8f17daad5b2a10e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -434,6 +434,21 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0173-Configurable-piston-push-limit.patch b/patches/server/0168-Configurable-piston-push-limit.patch similarity index 89% rename from patches/unapplied/0173-Configurable-piston-push-limit.patch rename to patches/server/0168-Configurable-piston-push-limit.patch index 76d5d4f07..583e0345e 100644 --- a/patches/unapplied/0173-Configurable-piston-push-limit.patch +++ b/patches/server/0168-Configurable-piston-push-limit.patch @@ -36,11 +36,11 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 043c7c945b200e4731dc7947f6e0ffe34d77e8af..340ec59f0c02b4f10dc4664dcc6d1f4c7685af1e 100644 +index 04bb336f57476cd0234feb1e8f17daad5b2a10e3..fccb81528dc58c1d3e204954f610e2e04165e958 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -611,6 +611,11 @@ public class PurpurWorldConfig { - magmaBlockDamageWithFrostWalker = getBoolean("blocks.magma-block.damage-with-frost-walker", magmaBlockDamageWithFrostWalker); +@@ -602,6 +602,11 @@ public class PurpurWorldConfig { + lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } + public int pistonBlockPushLimit = 12; diff --git a/patches/unapplied/0174-Configurable-broadcast-settings.patch b/patches/server/0169-Configurable-broadcast-settings.patch similarity index 81% rename from patches/unapplied/0174-Configurable-broadcast-settings.patch rename to patches/server/0169-Configurable-broadcast-settings.patch index f49d0cbc6..432aa0f20 100644 --- a/patches/unapplied/0174-Configurable-broadcast-settings.patch +++ b/patches/server/0169-Configurable-broadcast-settings.patch @@ -5,34 +5,34 @@ Subject: [PATCH] Configurable broadcast settings diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index 048413655ef636b3dae687452fc5a95780058a22..f7f10a523cd08fddf1f14968cb1abd4aea56f421 100644 +index 161a2b122843318a1bc411ea09ef83bc56bff0d1..fb1f9574235aec9e6b2e0fa289ce0853d352ff61 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -301,6 +301,7 @@ public class PlayerAdvancements { +@@ -300,6 +300,7 @@ public class PlayerAdvancements { advancement.getRewards().grant(this.player); // Paper start - Add Adventure message to PlayerAdvancementDoneEvent if (message != null && this.player.level.getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { + if (org.purpurmc.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur - this.playerList.broadcastMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message), ChatType.SYSTEM, Util.NIL_UUID); + this.playerList.broadcastSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message), ChatType.SYSTEM); // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ac93883c891c641169434e883387388394b39cbd..7eeaecfe6e1619d48af59982c75352c634ebc123 100644 +index 1b6a8932972862a5f2c4f0614362b5c3cf37b096..ee95f92443a313852ebb880af302899c18394a15 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -915,6 +915,7 @@ public class ServerPlayer extends Player { +@@ -923,6 +923,7 @@ public class ServerPlayer extends Player { }); Team scoreboardteambase = this.getTeam(); + if (org.purpurmc.purpur.PurpurConfig.deathMessageOnlyBroadcastToAffectedPlayer) this.sendMessage(ichatbasecomponent); else // Purpur if (scoreboardteambase != null && scoreboardteambase.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { - this.server.getPlayerList().broadcastToTeam(this, ichatbasecomponent); + this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index dd6468098ca71bfc4e4a41e019a5315dcada1e78..28033b120ef5abebca97f477f88afe8c17b89bda 100644 +index ba5570a33768b114d2123cc828cd6e705c7e974b..01df902edf8cf11a6d66dcb6d5b59f633bc97f7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -198,6 +198,18 @@ public class PurpurConfig { +@@ -196,6 +196,18 @@ public class PurpurConfig { deathMsgRunWithScissors = getString("settings.messages.death-message.run-with-scissors", deathMsgRunWithScissors); } diff --git a/patches/unapplied/0175-Configurable-mob-blindness.patch b/patches/server/0170-Configurable-mob-blindness.patch similarity index 91% rename from patches/unapplied/0175-Configurable-mob-blindness.patch rename to patches/server/0170-Configurable-mob-blindness.patch index bfaaed13b..d0cb245e4 100644 --- a/patches/unapplied/0175-Configurable-mob-blindness.patch +++ b/patches/server/0170-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ 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 82ef5fa5ca09fafff3c1720072158a3098b54496..4be548422d14ae4d8800e73c4e91f55f67a1bfee 100644 +index 1d2536b5c410997b3a584b179f4c41a13fcbcfca..5a742e95da47208366e791a10ce1e82d0c3524b4 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -988,6 +988,17 @@ public abstract class LivingEntity extends Entity { +@@ -1013,6 +1013,17 @@ public abstract class LivingEntity extends Entity { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } @@ -28,7 +28,7 @@ index 82ef5fa5ca09fafff3c1720072158a3098b54496..4be548422d14ae4d8800e73c4e91f55f return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c5d82e9b51fd629219728cd78716d753de650ea6..fb33eb38503d9eb74ad65edfc2b75d0e2e558422 100644 +index fccb81528dc58c1d3e204954f610e2e04165e958..ed7006fd22c9a9bbb519e75f8d4578b9bab3831e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -126,6 +126,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0176-Hide-hidden-players-from-entity-selector.patch b/patches/server/0171-Hide-hidden-players-from-entity-selector.patch similarity index 96% rename from patches/unapplied/0176-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0171-Hide-hidden-players-from-entity-selector.patch index 54887eab8..51e0ea3c2 100644 --- a/patches/unapplied/0176-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0171-Hide-hidden-players-from-entity-selector.patch @@ -59,10 +59,10 @@ index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..2cba35dcc479ed9ad3e698aa2e02b4aa + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d3a26894b75a7222c6cd8208667fbb0d41d25118..48efc0d9cd8d55cb58e63115be8755af0d1d31d1 100644 +index 01df902edf8cf11a6d66dcb6d5b59f633bc97f7a..a388dd5495b6021bf7e13ef3d5591e750ab9b9e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -241,6 +241,7 @@ public class PurpurConfig { +@@ -239,6 +239,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; public static boolean commandGamemodeRequiresPermission = false; @@ -70,7 +70,7 @@ index d3a26894b75a7222c6cd8208667fbb0d41d25118..48efc0d9cd8d55cb58e63115be8755af private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -253,6 +254,7 @@ public class PurpurConfig { +@@ -251,6 +252,7 @@ public class PurpurConfig { commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); diff --git a/patches/unapplied/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0172-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 90% rename from patches/unapplied/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0172-Config-for-health-to-impact-Creeper-explosion-radius.patch index b4cb88551..72ecdd61e 100644 --- a/patches/unapplied/0177-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0172-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index cf585d2eaf743d38e06084609ff4c220e096cf71..b0e5146f0cf33f8fbc97c4c51edee252ad06e6a9 100644 +index ca66ac64fd8fac10622e9458faecc4f05b9b629c..09d41e2adef76a4d3fb68b3a3002572144c9044c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -366,9 +366,10 @@ public class Creeper extends Monster implements PowerableMob { @@ -21,10 +21,10 @@ index cf585d2eaf743d38e06084609ff4c220e096cf71..b0e5146f0cf33f8fbc97c4c51edee252 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 fb33eb38503d9eb74ad65edfc2b75d0e2e558422..6dfba9bbc2c25044e8c5a676259f439a2a5348ef 100644 +index ed7006fd22c9a9bbb519e75f8d4578b9bab3831e..1d6f9204cc25eb882db5da5dbd1f67ef257a07ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -899,6 +899,7 @@ public class PurpurWorldConfig { +@@ -885,6 +885,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index fb33eb38503d9eb74ad65edfc2b75d0e2e558422..6dfba9bbc2c25044e8c5a676259f439a private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -914,6 +915,7 @@ public class PurpurWorldConfig { +@@ -900,6 +901,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/unapplied/0178-Iron-golem-calm-anger-options.patch b/patches/server/0173-Iron-golem-calm-anger-options.patch similarity index 93% rename from patches/unapplied/0178-Iron-golem-calm-anger-options.patch rename to patches/server/0173-Iron-golem-calm-anger-options.patch index 4cce3f2a6..e31d70232 100644 --- a/patches/unapplied/0178-Iron-golem-calm-anger-options.patch +++ b/patches/server/0173-Iron-golem-calm-anger-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Iron golem calm anger options diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 13cdc3a97c7707c9cb41e3da6395b0022fd661aa..1fcc7c27e905851871357423fc8185c882f838d8 100644 +index 1f87f6879b9c23526a2d1b490959d60606657e02..6e4cb77ed0f0aefb2ce403f8ede0d3c04ebef833 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -101,6 +101,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -100,6 +100,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { protected void registerGoals() { if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -16,7 +16,7 @@ index 13cdc3a97c7707c9cb41e3da6395b0022fd661aa..1fcc7c27e905851871357423fc8185c8 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); -@@ -313,6 +314,8 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -324,6 +325,8 @@ public class IronGolem extends AbstractGolem implements NeutralMob { itemstack.shrink(1); } @@ -26,10 +26,10 @@ index 13cdc3a97c7707c9cb41e3da6395b0022fd661aa..1fcc7c27e905851871357423fc8185c8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6dfba9bbc2c25044e8c5a676259f439a2a5348ef..55686e45f7d8a92c5363f411548157236543e36a 100644 +index 1d6f9204cc25eb882db5da5dbd1f67ef257a07ed..cf1cb69dbd020cd0e44c760d10a6aa3c7bd36c1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1344,6 +1344,8 @@ public class PurpurWorldConfig { +@@ -1330,6 +1330,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -38,7 +38,7 @@ index 6dfba9bbc2c25044e8c5a676259f439a2a5348ef..55686e45f7d8a92c5363f41154815723 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1356,6 +1358,8 @@ public class PurpurWorldConfig { +@@ -1342,6 +1344,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/unapplied/0179-Breedable-parrots.patch b/patches/server/0174-Breedable-parrots.patch similarity index 84% rename from patches/unapplied/0179-Breedable-parrots.patch rename to patches/server/0174-Breedable-parrots.patch index 7f3aa6d78..c14f2ce69 100644 --- a/patches/unapplied/0179-Breedable-parrots.patch +++ b/patches/server/0174-Breedable-parrots.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index c266028b96dcdb4d6dbb161a5f16be0d38827a91..661d8ce472a5f57107035ec32158aea30e1d181b 100644 +index 11291851f11127f6781b3c77c0d59534606eb9dd..4f4df0f5459e3f62db4b15c57a536dc298b02877 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -223,6 +223,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -224,6 +224,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur @@ -16,7 +16,7 @@ index c266028b96dcdb4d6dbb161a5f16be0d38827a91..661d8ce472a5f57107035ec32158aea3 this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); -@@ -337,6 +338,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -338,6 +339,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } } @@ -24,7 +24,7 @@ index c266028b96dcdb4d6dbb161a5f16be0d38827a91..661d8ce472a5f57107035ec32158aea3 return InteractionResult.sidedSuccess(this.level.isClientSide); } else if (itemstack.is(Parrot.POISONOUS_FOOD)) { if (!player.getAbilities().instabuild) { -@@ -362,7 +364,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -363,7 +365,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean isFood(ItemStack stack) { @@ -32,8 +32,8 @@ index c266028b96dcdb4d6dbb161a5f16be0d38827a91..661d8ce472a5f57107035ec32158aea3 + return this.level.purpurConfig.parrotBreedable && Parrot.TAME_FOOD.contains(stack.getItem()); // Purpur } - public static boolean checkParrotSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { -@@ -379,13 +381,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { + public static boolean checkParrotSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { +@@ -380,13 +382,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean canMate(Animal other) { @@ -50,10 +50,10 @@ index c266028b96dcdb4d6dbb161a5f16be0d38827a91..661d8ce472a5f57107035ec32158aea3 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55686e45f7d8a92c5363f411548157236543e36a..90d0cbe43c6feffb3ab8d0c7be970a3a4219f869 100644 +index cf1cb69dbd020cd0e44c760d10a6aa3c7bd36c1e..7485c50a148c08597ae21b0c0c4951cf5df99ae8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1514,6 +1514,7 @@ public class PurpurWorldConfig { +@@ -1500,6 +1500,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 55686e45f7d8a92c5363f411548157236543e36a..90d0cbe43c6feffb3ab8d0c7be970a3a private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1526,6 +1527,7 @@ public class PurpurWorldConfig { +@@ -1512,6 +1513,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/unapplied/0180-Configurable-powered-rail-boost-modifier.patch b/patches/server/0175-Configurable-powered-rail-boost-modifier.patch similarity index 89% rename from patches/unapplied/0180-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0175-Configurable-powered-rail-boost-modifier.patch index da22a41e5..71891b2ad 100644 --- a/patches/unapplied/0180-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0175-Configurable-powered-rail-boost-modifier.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable powered rail boost modifier diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index dac3f948481e444b3b641ab00eabca0cc8f17fa8..9645ae9425333025ced53d7c5ddc88f17c6be428 100644 +index e3cf90b1506b5c6b96140799bc51c495ef5657ac..e2c75a715a1c2180344c19e5206a4586c15fb732 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -712,7 +712,7 @@ public abstract class AbstractMinecart extends Entity { +@@ -714,7 +714,7 @@ public abstract class AbstractMinecart extends Entity { if (d18 > 0.01D) { double d20 = 0.06D; @@ -18,7 +18,7 @@ index dac3f948481e444b3b641ab00eabca0cc8f17fa8..9645ae9425333025ced53d7c5ddc88f1 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 90d0cbe43c6feffb3ab8d0c7be970a3a4219f869..28af6e298e78811ce4e53de5bdb3fb384a966924 100644 +index 7485c50a148c08597ae21b0c0c4951cf5df99ae8..81db1f714160bad239648a6e77e2436a430947da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -265,6 +265,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0181-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch similarity index 89% rename from patches/unapplied/0181-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch index 7ae75501d..5c6581a8d 100644 --- a/patches/unapplied/0181-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config change multiplier critical damage value 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 648eff612fa85430d90903d80325c99af5684ab0..b83695996d966310a2fe687baeaed66019754998 100644 +index 120ac554b5ffd677731ed959f01da7478d37e2f3..fa3a2ef8ec1f2b7c22a27acfddda12cb5e666fe9 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1271,7 +1271,7 @@ public abstract class Player extends LivingEntity { +@@ -1314,7 +1314,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !level.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { @@ -18,7 +18,7 @@ index 648eff612fa85430d90903d80325c99af5684ab0..b83695996d966310a2fe687baeaed660 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28af6e298e78811ce4e53de5bdb3fb384a966924..32245cea169762eaccd076a953cfb3c67678b958 100644 +index 81db1f714160bad239648a6e77e2436a430947da..f9075c3d3a0bf7da8c3969606f07129671833a2e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -364,6 +364,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0182-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0177-Option-to-disable-dragon-egg-teleporting.patch similarity index 95% rename from patches/unapplied/0182-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0177-Option-to-disable-dragon-egg-teleporting.patch index 1d2a39823..19211cc12 100644 --- a/patches/unapplied/0182-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0177-Option-to-disable-dragon-egg-teleporting.patch @@ -19,7 +19,7 @@ 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 845a530c2c11615714e54303e5ef361cb2e1f296..de1b73bea9d61b14df93bfdb7cf86c242e475d8b 100644 +index f9075c3d3a0bf7da8c3969606f07129671833a2e..2f77797e267a9da4327137c6abb68a9a9edf9ce8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -535,6 +535,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0183-Config-for-unverified-username-message.patch b/patches/server/0178-Config-for-unverified-username-message.patch similarity index 78% rename from patches/unapplied/0183-Config-for-unverified-username-message.patch rename to patches/server/0178-Config-for-unverified-username-message.patch index 54f7c49cf..e09b914d2 100644 --- a/patches/unapplied/0183-Config-for-unverified-username-message.patch +++ b/patches/server/0178-Config-for-unverified-username-message.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index befcb501b4b1b6330bf3cd53e00e30b01efade6f..03eb7933f309b30fa8c243f4dd0a292b850bfda0 100644 +index 9311130b5401cda69c62b5b5c23718554b94ab84..6ee6a35006a3d479ce916b3be297e3c1e38d7a8c 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -342,7 +342,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -402,7 +402,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener ServerLoginPacketListenerImpl.this.gameProfile = ServerLoginPacketListenerImpl.this.createFakeProfile(gameprofile); ServerLoginPacketListenerImpl.this.state = ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT; } else { -- ServerLoginPacketListenerImpl.this.disconnect(new TranslatableComponent("multiplayer.disconnect.unverified_username")); -+ ServerLoginPacketListenerImpl.this.disconnect(org.purpurmc.purpur.PurpurConfig.unverifiedUsername.equals("default") ? new TranslatableComponent("multiplayer.disconnect.unverified_username") : io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.unverifiedUsername))); // Purpur +- ServerLoginPacketListenerImpl.this.disconnect(Component.translatable("multiplayer.disconnect.unverified_username")); ++ ServerLoginPacketListenerImpl.this.disconnect(org.purpurmc.purpur.PurpurConfig.unverifiedUsername.equals("default") ? Component.translatable("multiplayer.disconnect.unverified_username") : io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.unverifiedUsername))); // Purpur ServerLoginPacketListenerImpl.LOGGER.error("Username '{}' tried to join with an invalid session", gameprofile.getName()); } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7500d4b32b6d9f9996f6b382e88cf8b14beefea9..799340bb7e603805d009357cabe6bb9ff2219d88 100644 +index a388dd5495b6021bf7e13ef3d5591e750ab9b9e5..8cd0f1ce58694922d186b483f16ccc45ebd8858d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -178,6 +178,7 @@ public class PurpurConfig { @@ -36,4 +36,4 @@ index 7500d4b32b6d9f9996f6b382e88cf8b14beefea9..799340bb7e603805d009357cabe6bb9f + unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername); } - public static String deathMsgStonecutter = " has sawed themself in half"; + public static String deathMsgRunWithScissors = " slipped and fell on their shears"; diff --git a/patches/unapplied/0184-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0179-Make-anvil-cumulative-cost-configurable.patch similarity index 87% rename from patches/unapplied/0184-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0179-Make-anvil-cumulative-cost-configurable.patch index 508ac5602..1b7892bbb 100644 --- a/patches/unapplied/0184-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0179-Make-anvil-cumulative-cost-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 6cb145ce59d26d8c743962166ff7478887dd4eef..605489718d38b0888c6d1954ab4ed2d67af51664 100644 +index 46fc3f504828e402dda50791d6867cb595de766b..308bf5525775ab097dddc164e8a08122d571dc1e 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -341,7 +341,7 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -18,10 +18,10 @@ index 6cb145ce59d26d8c743962166ff7478887dd4eef..605489718d38b0888c6d1954ab4ed2d6 public void setItemName(String newItemName) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 799340bb7e603805d009357cabe6bb9ff2219d88..611fbde429a6742715c54dfd61f8b0a9877c18da 100644 +index 8cd0f1ce58694922d186b483f16ccc45ebd8858d..d98f82fa5270c469526457d3b91413a8d9f35036 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -264,6 +264,7 @@ public class PurpurConfig { +@@ -262,6 +262,7 @@ public class PurpurConfig { public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; @@ -29,7 +29,7 @@ index 799340bb7e603805d009357cabe6bb9ff2219d88..611fbde429a6742715c54dfd61f8b0a9 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -296,6 +297,7 @@ public class PurpurConfig { +@@ -294,6 +295,7 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); diff --git a/patches/unapplied/0185-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0180-ShulkerBox-allow-oversized-stacks.patch similarity index 86% rename from patches/unapplied/0185-ShulkerBox-allow-oversized-stacks.patch rename to patches/server/0180-ShulkerBox-allow-oversized-stacks.patch index 3b633b742..f20d62264 100644 --- a/patches/unapplied/0185-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0180-ShulkerBox-allow-oversized-stacks.patch @@ -9,10 +9,10 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for creative players) instead of routing it through the LootableBuilder. diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 464e304c532c1af48914d3cfad86380e8b4a096d..302203e64277932ecb224edd3768dace07bd9d94 100644 +index 12d11659134410b2720a00297b796bba3357c89a..95f047e6eb523d07e2b29c8f48e4b0d59d140144 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -461,7 +461,7 @@ public class ServerPlayerGameMode { +@@ -422,7 +422,7 @@ public class ServerPlayerGameMode { ItemStack mainHandStack = null; // Paper boolean isCorrectTool = false; // Paper @@ -22,10 +22,10 @@ index 464e304c532c1af48914d3cfad86380e8b4a096d..302203e64277932ecb224edd3768dace } else { ItemStack itemstack = this.player.getMainHandItem(); diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -index ca5fb9d69ced45bbbdc1d5580b1aec4cf9f6e999..a9ad97f15c1a40cc20b08b7db955f81add70bf94 100644 +index 0ca6d495005bded447c3f940dfd571a003301cb0..f4c47f7a7f2572dedbaee4890c98e1f3589a40c2 100644 --- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -@@ -122,7 +122,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock { +@@ -120,7 +120,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock { public void playerWillDestroy(Level world, BlockPos pos, BlockState state, Player player) { BlockEntity blockEntity = world.getBlockEntity(pos); if (blockEntity instanceof ShulkerBoxBlockEntity shulkerBoxBlockEntity) { @@ -35,10 +35,10 @@ index ca5fb9d69ced45bbbdc1d5580b1aec4cf9f6e999..a9ad97f15c1a40cc20b08b7db955f81a 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 6ccfbcf813fb2262f4cdf33513cf9d208a7d2a00..476b6018dc378599902d895f05e3e5babcec1a9d 100644 +index 2f77797e267a9da4327137c6abb68a9a9edf9ce8..93ae0620013ceef2f52ecd57a97e6397dcbc8e96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -653,6 +653,11 @@ public class PurpurWorldConfig { +@@ -644,6 +644,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/unapplied/0186-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0181-Bee-can-work-when-raining-or-at-night.patch similarity index 86% rename from patches/unapplied/0186-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0181-Bee-can-work-when-raining-or-at-night.patch index dd026c799..4b09cdc50 100644 --- a/patches/unapplied/0186-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0181-Bee-can-work-when-raining-or-at-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bee can work when raining or at night diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index ff9ec34962cdcd018a56bd39310b345d0adaf5cd..ca7225e80e1612120ac9b197e0188a06df8049a7 100644 +index 15b8992ef9f77153885cb27e305e854f8d775864..e8302e054b74ba6793b4b0928f0e87edb645d450 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -409,7 +409,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -410,7 +410,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { boolean wantsToEnterHive() { if (this.stayOutOfHiveCountdown <= 0 && !this.beePollinateGoal.isPollinating() && !this.hasStung() && this.getTarget() == null) { @@ -18,10 +18,10 @@ index ff9ec34962cdcd018a56bd39310b345d0adaf5cd..ca7225e80e1612120ac9b197e0188a06 return flag && !this.isHiveNearFire(); } else { diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 9a6bf2159e2ad6a2204d81fd44e2b1888cd60c0c..9eee0366ab790e3bd183eacdc3940ab5e10f01e2 100644 +index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c55acbbf3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -201,7 +201,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -203,7 +203,7 @@ public class BeehiveBlockEntity extends BlockEntity { } private static boolean releaseBee(Level world, BlockPos blockposition, BlockState iblockdata, BeehiveBlockEntity.BeeData tileentitybeehive_hivebee, @Nullable List list, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, @Nullable BlockPos blockposition1, boolean force) { @@ -31,10 +31,10 @@ index 9a6bf2159e2ad6a2204d81fd44e2b1888cd60c0c..9eee0366ab790e3bd183eacdc3940ab5 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 476b6018dc378599902d895f05e3e5babcec1a9d..020b86d6237745f45285f99b5bc2f6c9912c8277 100644 +index 93ae0620013ceef2f52ecd57a97e6397dcbc8e96..15796f7fac9105433fc4bbae688d5683e9c3ba40 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -759,6 +759,8 @@ public class PurpurWorldConfig { +@@ -745,6 +745,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 476b6018dc378599902d895f05e3e5babcec1a9d..020b86d6237745f45285f99b5bc2f6c9 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -772,6 +774,8 @@ public class PurpurWorldConfig { +@@ -758,6 +760,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/unapplied/0187-API-for-any-mob-to-burn-daylight.patch b/patches/server/0182-API-for-any-mob-to-burn-daylight.patch similarity index 89% rename from patches/unapplied/0187-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0182-API-for-any-mob-to-burn-daylight.patch index af9550102..34ab6bb7d 100644 --- a/patches/unapplied/0187-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0182-API-for-any-mob-to-burn-daylight.patch @@ -6,33 +6,35 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 87e1a9aefa0c048c7f1619ad002538f7e2694bd7..affbe839ad996722b2b4b93f82c12f4bbe055f85 100644 +index 9b90757dbe6689366b9ad03264a21b608e6ec55c..36d8613464803d84fa4c233613acc6921886962b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4509,5 +4509,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4463,5 +4463,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean canSaveToDisk() { return true; } + + // Purpur start - copied from Mob + public boolean isSunBurnTick() { -+ if (this.level.isDay()) { -+ float brightness = this.getBrightness(); -+ BlockPos pos = new BlockPos(this.getX(), this.getEyeY(), this.getZ()); ++ if (this.level.isDay() && !this.level.isClientSide) { ++ float f = this.getLightLevelDependentMagicValue(); ++ BlockPos blockposition = new BlockPos(this.getX(), this.getEyeY(), this.getZ()); + boolean flag = this.isInWaterRainOrBubble() || this.isInPowderSnow || this.wasInPowderSnow; -+ if (brightness > 0.5F && this.random.nextFloat() * 30.0F < (brightness - 0.4F) * 2.0F && !flag && this.level.canSeeSky(pos)) { ++ ++ if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && !flag && this.level.canSeeSky(blockposition)) { + return true; + } + } ++ + return false; + } // 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 f3d64418b8c3d441532e0504cf182d0a16fb700e..2e5f22c74ff2c8a3fdae7d507280875a7d15e423 100644 +index 5a742e95da47208366e791a10ce1e82d0c3524b4..b2036c0bd97126290c581b0c48e25d8f9d809584 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity { +@@ -266,6 +266,7 @@ public abstract class LivingEntity extends Entity { public boolean bukkitPickUpLoot; public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event @@ -40,7 +42,7 @@ index f3d64418b8c3d441532e0504cf182d0a16fb700e..2e5f22c74ff2c8a3fdae7d507280875a @Override public float getBukkitYaw() { -@@ -765,6 +766,7 @@ public abstract class LivingEntity extends Entity { +@@ -790,6 +791,7 @@ public abstract class LivingEntity extends Entity { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -48,7 +50,7 @@ index f3d64418b8c3d441532e0504cf182d0a16fb700e..2e5f22c74ff2c8a3fdae7d507280875a } @Override -@@ -840,6 +842,11 @@ public abstract class LivingEntity extends Entity { +@@ -865,6 +867,11 @@ public abstract class LivingEntity extends Entity { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -60,7 +62,7 @@ index f3d64418b8c3d441532e0504cf182d0a16fb700e..2e5f22c74ff2c8a3fdae7d507280875a } // CraftBukkit start -@@ -3447,6 +3454,27 @@ public abstract class LivingEntity extends Entity { +@@ -3458,6 +3465,27 @@ public abstract class LivingEntity extends Entity { this.hurt(DamageSource.DROWN, 1.0F); } @@ -89,15 +91,15 @@ index f3d64418b8c3d441532e0504cf182d0a16fb700e..2e5f22c74ff2c8a3fdae7d507280875a public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 6d11daac5f0d0d119fb6854089457d158ab6550e..d016e5c833a68d4c0d2eba72b7a11f7d400a26de 100644 +index ce72ba463449958ddc798feea3824a97fbba0bed..f689085fae18cd7d8c9187fdeb1b684b17b98afc 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1659,17 +1659,7 @@ public abstract class Mob extends LivingEntity { +@@ -1673,17 +1673,7 @@ public abstract class Mob extends LivingEntity { } public boolean isSunBurnTick() { - if (this.level.isDay() && !this.level.isClientSide) { -- float f = this.getBrightness(); +- float f = this.getLightLevelDependentMagicValue(); - BlockPos blockposition = new BlockPos(this.getX(), this.getEyeY(), this.getZ()); - boolean flag = this.isInWaterRainOrBubble() || this.isInPowderSnow || this.wasInPowderSnow; - @@ -112,10 +114,10 @@ index 6d11daac5f0d0d119fb6854089457d158ab6550e..d016e5c833a68d4c0d2eba72b7a11f7d @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index a60ca5d69a9734c7979f953bd56c05c7016356d2..193622015c6d3dbff787061e13fa098a287bce0c 100644 +index 4188d8b564999ba3befa53e78f103a6d2777845f..fffdea563dbe48ce8c1b13cbe0d052940fa9f571 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -64,6 +64,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -65,6 +65,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo protected AbstractSkeleton(EntityType type, Level world) { super(type, world); this.reassessWeaponGoal(); @@ -123,7 +125,7 @@ index a60ca5d69a9734c7979f953bd56c05c7016356d2..193622015c6d3dbff787061e13fa098a } @Override -@@ -99,35 +100,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -100,35 +101,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo } // Paper start @@ -161,7 +163,7 @@ index a60ca5d69a9734c7979f953bd56c05c7016356d2..193622015c6d3dbff787061e13fa098a super.aiStep(); } -@@ -188,7 +168,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -191,7 +171,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo } else { this.goalSelector.addGoal(4, this.meleeGoal); } @@ -169,7 +171,7 @@ index a60ca5d69a9734c7979f953bd56c05c7016356d2..193622015c6d3dbff787061e13fa098a } } -@@ -232,7 +211,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -235,7 +214,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); // Paper start if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -178,7 +180,7 @@ index a60ca5d69a9734c7979f953bd56c05c7016356d2..193622015c6d3dbff787061e13fa098a } // Paper end } -@@ -241,7 +220,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -244,7 +223,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); @@ -188,7 +190,7 @@ index a60ca5d69a9734c7979f953bd56c05c7016356d2..193622015c6d3dbff787061e13fa098a // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 065005c13c2bff341402fc962d19148da27bc3c2..e394b6427329f48a85a277eeb8336b12499525ee 100644 +index 47e4f62d177c14ceffeb13a3fee5bfa342da7184..bcbce83f9e304809fb946f80c9dd32c4a17a7afb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -20,6 +20,7 @@ public class Husk extends Zombie { @@ -273,7 +275,7 @@ index e7e4d87fb8a5276fd617afc4e0b925100abf3f76..42919b2267eed71e29830a96afdd3be1 // Paper end private static enum AttackPhase { 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 52e6eb5269249e586683de647c350651e2c96c91..2e9eaa19aaf643c09bc1fea04fe37388c02845e7 100644 +index a68bced3a278f082680994a13920f97d82cdbd42..8f88e320d7165cb56172d6a1bfa4bf3c5c2a9162 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -93,11 +93,12 @@ public class Zombie extends Monster { @@ -349,10 +351,10 @@ index 52e6eb5269249e586683de647c350651e2c96c91..2e9eaa19aaf643c09bc1fea04fe37388 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 83c8889137e566322ec4337b0e6d8b940cc2edbe..d575da51b4f1318734ebf26a3730871134e28102 100644 +index 51325f67c49680417b8b843135ec0e91481fe7fc..e24261f2ddc3de614feb9ae38e7e04c57ea7364b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -199,6 +199,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -203,6 +203,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entity = entity; } diff --git a/patches/unapplied/0188-Config-MobEffect-by-world.patch b/patches/server/0183-Config-MobEffect-by-world.patch similarity index 94% rename from patches/unapplied/0188-Config-MobEffect-by-world.patch rename to patches/server/0183-Config-MobEffect-by-world.patch index 3841527b3..82666ea6e 100644 --- a/patches/unapplied/0188-Config-MobEffect-by-world.patch +++ b/patches/server/0183-Config-MobEffect-by-world.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config MobEffect by world diff --git a/src/main/java/net/minecraft/world/effect/MobEffect.java b/src/main/java/net/minecraft/world/effect/MobEffect.java -index 8bbb9bdcf95989f1737714655f6f6a269d46d7f2..8d569eb2ec1b2bdbd415094ae04ae531dfdeafae 100644 +index 17ffab92f4ae2c06fa9f9249a474d4b6c9c55090..bb15cf2aa35ce8754bba56f5b312d92b1a50c9f8 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffect.java +++ b/src/main/java/net/minecraft/world/effect/MobEffect.java -@@ -49,16 +49,16 @@ public class MobEffect { +@@ -61,16 +61,16 @@ public class MobEffect { public void applyEffectTick(LivingEntity entity, int amplifier) { if (this == MobEffects.REGENERATION) { if (entity.getHealth() < entity.getMaxHealth()) { @@ -30,7 +30,7 @@ index 8bbb9bdcf95989f1737714655f6f6a269d46d7f2..8d569eb2ec1b2bdbd415094ae04ae531 } else if (this == MobEffects.SATURATION && entity instanceof Player) { if (!entity.level.isClientSide) { // CraftBukkit start -@@ -68,7 +68,7 @@ public class MobEffect { +@@ -80,7 +80,7 @@ public class MobEffect { org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, amplifier + 1 + oldFoodLevel); if (!event.isCancelled()) { @@ -40,7 +40,7 @@ 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 8c41f8e4c88596ad225cfa48e69fa0ecf6d10766..5c403c34d4a741d4a4624d76554991f248fbc717 100644 +index 15796f7fac9105433fc4bbae688d5683e9c3ba40..a444bbe09709a01dc8785449eacfe6364b3cdf95 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -321,6 +321,21 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0189-Beacon-Activation-Range-Configurable.patch b/patches/server/0184-Beacon-Activation-Range-Configurable.patch similarity index 90% rename from patches/unapplied/0189-Beacon-Activation-Range-Configurable.patch rename to patches/server/0184-Beacon-Activation-Range-Configurable.patch index 93607c1c9..651cae5ab 100644 --- a/patches/unapplied/0189-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0184-Beacon-Activation-Range-Configurable.patch @@ -5,10 +5,10 @@ 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 8d5c9813010a0256bd2712a1eabbc91f0f473a41..97b106ccac4e37260444468f4f774efcfb61788d 100644 +index 5f6eeb36f57bd342b18590c8f0ffb668d2bf273c..59259dd3d8d8fd02c02d7435a4443779984fe33f 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 -@@ -83,6 +83,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider { +@@ -82,6 +82,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider { public double getEffectRange() { if (this.effectRange < 0) { @@ -26,7 +26,7 @@ index 8d5c9813010a0256bd2712a1eabbc91f0f473a41..97b106ccac4e37260444468f4f774efc } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f4857e05643942b44a2506aa22301903f2e9d37..42db30881bda2917783e14210df3f74c72f12193 100644 +index a444bbe09709a01dc8785449eacfe6364b3cdf95..5d548c0e03e01aaf08b0a7f7368a7683c1e6eb2b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -507,6 +507,17 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0190-Add-toggle-for-sand-duping-fix.patch b/patches/server/0185-Add-toggle-for-sand-duping-fix.patch similarity index 93% rename from patches/unapplied/0190-Add-toggle-for-sand-duping-fix.patch rename to patches/server/0185-Add-toggle-for-sand-duping-fix.patch index 1f2f55af9..82d7aaa7d 100644 --- a/patches/unapplied/0190-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0185-Add-toggle-for-sand-duping-fix.patch @@ -27,10 +27,10 @@ index 318ea6ebf4c13a984b3815f00bf6cb3856ff6fe0..ae35add70d25c6c202e24237d6626665 } // 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 42db30881bda2917783e14210df3f74c72f12193..1f864bdc1e6d8cc389c0c9bccafb9ef596ce366a 100644 +index 5d548c0e03e01aaf08b0a7f7368a7683c1e6eb2b..19fca7b84002b023cd9b9b2493f37a4178b57b51 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -679,6 +679,11 @@ public class PurpurWorldConfig { +@@ -670,6 +670,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/unapplied/0191-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0186-Add-toggle-for-end-portal-safe-teleporting.patch similarity index 88% rename from patches/unapplied/0191-Add-toggle-for-end-portal-safe-teleporting.patch rename to patches/server/0186-Add-toggle-for-end-portal-safe-teleporting.patch index af1557928..946759eb3 100644 --- a/patches/unapplied/0191-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0186-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ 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 affbe839ad996722b2b4b93f82c12f4bbe055f85..2c60091945aa3510d34c21b31827cb0b7f302ec2 100644 +index 36d8613464803d84fa4c233613acc6921886962b..0457a83fef4147623c8478dcb3aafb52d64a55e8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2833,7 +2833,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2847,7 +2847,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -18,7 +18,7 @@ index affbe839ad996722b2b4b93f82c12f4bbe055f85..2c60091945aa3510d34c21b31827cb0b } diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index bd4f980f68330fc46a02a6f4bb4403fac3a91919..8601ea0575323ea7cf07c4909a495bf5b1d10162 100644 +index 04bae5085756842ce88710646a17e9dc1aad5994..e7658fa9806701505e15cbf1d28ea3bd2ed6f113 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -61,6 +61,22 @@ public class EndPortalBlock extends BaseEntityBlock { @@ -45,7 +45,7 @@ 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 1f864bdc1e6d8cc389c0c9bccafb9ef596ce366a..90fb53ea2de11f24024240fa35bd4dd4da333d0e 100644 +index 19fca7b84002b023cd9b9b2493f37a4178b57b51..7459fb8fa0e3b14d58e8bb5e89bc4fc2237e2011 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,11 @@ public class PurpurWorldConfig { @@ -57,6 +57,6 @@ index 1f864bdc1e6d8cc389c0c9bccafb9ef596ce366a..90fb53ea2de11f24024240fa35bd4dd4 + endPortalSafeTeleporting = getBoolean("blocks.end_portal.safe-teleporting", endPortalSafeTeleporting); + } + - public boolean snowOnBlueIce = true; public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; + private void iceSettings() { diff --git a/patches/unapplied/0192-Flying-Fall-Damage-API.patch b/patches/server/0187-Flying-Fall-Damage-API.patch similarity index 82% rename from patches/unapplied/0192-Flying-Fall-Damage-API.patch rename to patches/server/0187-Flying-Fall-Damage-API.patch index 96e9adfe3..e28e86d4f 100644 --- a/patches/unapplied/0192-Flying-Fall-Damage-API.patch +++ b/patches/server/0187-Flying-Fall-Damage-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Flying Fall Damage API 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 b83695996d966310a2fe687baeaed66019754998..eda18bda0b8332c5b1d9c260e748cca86d32a875 100644 +index fa3a2ef8ec1f2b7c22a27acfddda12cb5e666fe9..e8b1dd7f413a27fa5d495a03bc725cead85a2c34 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -182,6 +182,7 @@ public abstract class Player extends LivingEntity { +@@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity { public boolean affectsSpawning = true; // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur @@ -16,7 +16,7 @@ index b83695996d966310a2fe687baeaed66019754998..eda18bda0b8332c5b1d9c260e748cca8 // CraftBukkit start public boolean fauxSleeping; -@@ -1745,7 +1746,7 @@ public abstract class Player extends LivingEntity { +@@ -1793,7 +1794,7 @@ public abstract class Player extends LivingEntity { @Override public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { @@ -26,10 +26,10 @@ index b83695996d966310a2fe687baeaed66019754998..eda18bda0b8332c5b1d9c260e748cca8 } else { if (fallDistance >= 2.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index bb0d196dc2e2ff6a2ccfda8b55a04fd6eaad0a97..d1e4c0253800ca0aaf83f106353cfb4c5b99b3f8 100644 +index 1948eda5fd4d6b8d8a9bdb8ee36fd9f12764525a..3747a3b47735a26a86651677579c20a5eb6a915f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2848,5 +2848,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2819,5 +2819,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) { getHandle().spawnInvulnerableTime = spawnInvulnerableTime; } diff --git a/patches/unapplied/0193-Make-lightning-rod-range-configurable.patch b/patches/server/0188-Make-lightning-rod-range-configurable.patch similarity index 76% rename from patches/unapplied/0193-Make-lightning-rod-range-configurable.patch rename to patches/server/0188-Make-lightning-rod-range-configurable.patch index da14ee82c..3d346171a 100644 --- a/patches/unapplied/0193-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0188-Make-lightning-rod-range-configurable.patch @@ -5,23 +5,23 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 285927ca0c196c554df725403ea2cfd6d84013db..24b800d99fda57154c23352b1c8889f7cd2cba36 100644 +index 678dd3f82c3e842450b9d701909bd69298dd8015..e584bcdca9ed8e3ccb3969b45011df3eb7624689 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -915,7 +915,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - return villageplacetype == PoiType.LIGHTNING_ROD; +@@ -913,7 +913,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { - return blockposition1.getY() == this.getLevel().getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; + return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; - }, pos, 128, PoiManager.Occupancy.ANY); + }, pos, org.purpurmc.purpur.PurpurConfig.lightningRodRange, PoiManager.Occupancy.ANY); return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 611fbde429a6742715c54dfd61f8b0a9877c18da..792255c3f9499180a746175bf07f2890577332b5 100644 +index d98f82fa5270c469526457d3b91413a8d9f35036..8b1299a15c886585904271d50925283e505ee4e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -265,6 +265,7 @@ public class PurpurConfig { +@@ -263,6 +263,7 @@ public class PurpurConfig { public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; @@ -29,7 +29,7 @@ index 611fbde429a6742715c54dfd61f8b0a9877c18da..792255c3f9499180a746175bf07f2890 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -298,6 +299,7 @@ public class PurpurConfig { +@@ -296,6 +297,7 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); diff --git a/patches/unapplied/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0189-Burp-after-eating-food-fills-hunger-bar-completely.patch similarity index 91% rename from patches/unapplied/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch rename to patches/server/0189-Burp-after-eating-food-fills-hunger-bar-completely.patch index 017908d2f..2873932d2 100644 --- a/patches/unapplied/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch +++ b/patches/server/0189-Burp-after-eating-food-fills-hunger-bar-completely.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Burp after eating food fills hunger bar completely 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 eda18bda0b8332c5b1d9c260e748cca86d32a875..d4d909d5e72911005030c1eb4053778a6c00290e 100644 +index e8b1dd7f413a27fa5d495a03bc725cead85a2c34..f8c196dc452fb1f79c6a6c2dea479fc98870728e 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -195,6 +195,8 @@ public abstract class Player extends LivingEntity { +@@ -200,6 +200,8 @@ public abstract class Player extends LivingEntity { // CraftBukkit end // Purpur start @@ -17,7 +17,7 @@ index eda18bda0b8332c5b1d9c260e748cca86d32a875..d4d909d5e72911005030c1eb4053778a public abstract void resetLastActionTime(); public void setAfk(boolean afk) { -@@ -257,6 +259,12 @@ public abstract class Player extends LivingEntity { +@@ -264,6 +266,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index eda18bda0b8332c5b1d9c260e748cca86d32a875..d4d909d5e72911005030c1eb4053778a this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.onGround = false; -@@ -2314,7 +2322,7 @@ public abstract class Player extends LivingEntity { +@@ -2354,7 +2362,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); @@ -55,7 +55,7 @@ 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 90fb53ea2de11f24024240fa35bd4dd4da333d0e..e6527157369e2babfbdfcf0cd3056ac0b450f4eb 100644 +index 7459fb8fa0e3b14d58e8bb5e89bc4fc2237e2011..bfbbdd1d368b8c22204b4efcc33a4d252df7feac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -380,6 +380,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0195-Allow-player-join-full-server-by-permission.patch b/patches/server/0190-Allow-player-join-full-server-by-permission.patch similarity index 80% rename from patches/unapplied/0195-Allow-player-join-full-server-by-permission.patch rename to patches/server/0190-Allow-player-join-full-server-by-permission.patch index da5b44d63..2035272c4 100644 --- a/patches/unapplied/0195-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0190-Allow-player-join-full-server-by-permission.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 795b3c765bf91fbf1df236060344830de9330b38..7574f8c60b69f5a9281a8c888b8e131e73bb1676 100644 +index 9e7bcd0b0b736ef7b7b5aa78037d13438b47824b..59efd554048e766bd04442aa9720ef554d5dab25 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -773,7 +773,7 @@ public abstract class PlayerList { - event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(chatmessage)); // Paper - Adventure + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { - // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? new ChatMessage("multiplayer.disconnect.server_full") : null; + // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; - if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile)) { + if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameprofile))) { // Purpur event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure diff --git a/patches/unapplied/0196-Add-permission-bypass-for-portal-waiting.patch b/patches/server/0191-Add-permission-bypass-for-portal-waiting.patch similarity index 83% rename from patches/unapplied/0196-Add-permission-bypass-for-portal-waiting.patch rename to patches/server/0191-Add-permission-bypass-for-portal-waiting.patch index 69cd9df36..e6a8db19f 100644 --- a/patches/unapplied/0196-Add-permission-bypass-for-portal-waiting.patch +++ b/patches/server/0191-Add-permission-bypass-for-portal-waiting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission bypass for portal waiting 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 35431662e92c9ba1f350df7113cdf0239a22d03d..75393ff3aafa01eaa911149d0173da28c236f7c2 100644 +index f8c196dc452fb1f79c6a6c2dea479fc98870728e..64ab2ff61d5611574d11a32e7887e48e673a86c4 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { +@@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity { // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur public boolean flyingFallDamage = false; // Purpur @@ -16,7 +16,7 @@ index 35431662e92c9ba1f350df7113cdf0239a22d03d..75393ff3aafa01eaa911149d0173da28 // CraftBukkit start public boolean fauxSleeping; -@@ -464,7 +465,7 @@ public abstract class Player extends LivingEntity { +@@ -472,7 +473,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { @@ -26,7 +26,7 @@ index 35431662e92c9ba1f350df7113cdf0239a22d03d..75393ff3aafa01eaa911149d0173da28 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index e7108dd70f1eb91f38e04ad71e595bc679560f75..9f326161e13155283acfc9d73b2d568fdc135168 100644 +index 83c5314ed3a3f09162bca47902c4e749fab940a0..baec08d7d23bb71e0978f790b2e07ffab93d1c79 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -245,6 +245,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { diff --git a/patches/unapplied/0197-Shulker-spawn-from-bullet-options.patch b/patches/server/0192-Shulker-spawn-from-bullet-options.patch similarity index 90% rename from patches/unapplied/0197-Shulker-spawn-from-bullet-options.patch rename to patches/server/0192-Shulker-spawn-from-bullet-options.patch index 4a0b5e8ea..82de5f63c 100644 --- a/patches/unapplied/0197-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0192-Shulker-spawn-from-bullet-options.patch @@ -13,10 +13,10 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index ae22748c9cefd000986d50e12fa9cb2a545ad63c..edaa34c6c2c65df77c696b4654e64bcf37a3ff20 100644 +index 2abdeb351fbabec7490c1ce806cebf8886b6be61..ada070d8e1a2d328c02455eb9e5ad056046bcd0a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -506,13 +506,22 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -507,13 +507,22 @@ public class Shulker extends AbstractGolem implements Enemy { Vec3 vec3d = this.position(); AABB axisalignedbb = this.getBoundingBox(); @@ -46,10 +46,10 @@ index ae22748c9cefd000986d50e12fa9cb2a545ad63c..edaa34c6c2c65df77c696b4654e64bcf if (enumcolor != null) { entityshulker.setColor(enumcolor); diff --git a/src/main/java/net/minecraft/world/item/DyeColor.java b/src/main/java/net/minecraft/world/item/DyeColor.java -index f812a75985d26785639491c9a980387a3f261f2d..b11fb39b69f5225ca7da72ca1a2200c7eaf7e873 100644 +index 2d3dbc228a6a7b88167a36ba739d9eb2f03472ba..35ba78df97a5d13a8495ca9a25f2b331310ff47b 100644 --- a/src/main/java/net/minecraft/world/item/DyeColor.java +++ b/src/main/java/net/minecraft/world/item/DyeColor.java -@@ -109,4 +109,10 @@ public enum DyeColor implements StringRepresentable { +@@ -112,4 +112,10 @@ public enum DyeColor implements StringRepresentable { public String getSerializedName() { return this.name; } @@ -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 e6527157369e2babfbdfcf0cd3056ac0b450f4eb..7c4eac5536ee0577ff88bcf44c061448b7795a8d 100644 +index bfbbdd1d368b8c22204b4efcc33a4d252df7feac..57abf9cd3f7c96c23a2c56fb414ceb68557581a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1890,6 +1890,11 @@ public class PurpurWorldConfig { +@@ -1876,6 +1876,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -76,7 +76,7 @@ index e6527157369e2babfbdfcf0cd3056ac0b450f4eb..7c4eac5536ee0577ff88bcf44c061448 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1901,6 +1906,11 @@ public class PurpurWorldConfig { +@@ -1887,6 +1892,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/unapplied/0198-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0193-Eating-glow-berries-adds-glow-effect.patch similarity index 94% rename from patches/unapplied/0198-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0193-Eating-glow-berries-adds-glow-effect.patch index ab2487927..994c93f18 100644 --- a/patches/unapplied/0198-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0193-Eating-glow-berries-adds-glow-effect.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 85329295afacad3edb6865846166aa56ebae0ed2..513343d225a71e242b0f237eefcd25147709d9d1 100644 +index 21c9733065f6ecb265e4df8a7080697356c796ac..1ce51253b755c2ea4dca94c567935b074ffdbbd6 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1070,7 +1070,7 @@ public class Items { +@@ -1117,7 +1117,7 @@ public class Items { public static final Item LANTERN = registerBlock(Blocks.LANTERN, CreativeModeTab.TAB_DECORATIONS); public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN, CreativeModeTab.TAB_DECORATIONS); public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).tab(CreativeModeTab.TAB_FOOD).food(Foods.SWEET_BERRIES))); @@ -18,7 +18,7 @@ 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 743ef4d887577b8fba8b43137650ae8e5d300a7f..15a586bc5249bc32d3bdfb0c973e07229b9d8c34 100644 +index 57abf9cd3f7c96c23a2c56fb414ceb68557581a4..18e8f9a54235be5d887dacf7db05a6ddc240c78e 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 { diff --git a/patches/unapplied/0199-Option-to-make-drowned-break-doors.patch b/patches/server/0194-Option-to-make-drowned-break-doors.patch similarity index 89% rename from patches/unapplied/0199-Option-to-make-drowned-break-doors.patch rename to patches/server/0194-Option-to-make-drowned-break-doors.patch index da3b17244..296a9b336 100644 --- a/patches/unapplied/0199-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0194-Option-to-make-drowned-break-doors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 195cbb1870caf48830ea8c3f294a258c3839431d..7e9c38d595c83bf482c701423d66c26a1ea1ea05 100644 +index 037d77b47d0be69dfeda01f4a0d52ad72aea2c8d..6e0a575a95ac0bcbc9e3909178ea566a158dd561 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -28,6 +28,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; +@@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; import net.minecraft.world.entity.ai.goal.RandomStrollGoal; import net.minecraft.world.entity.ai.goal.RangedAttackGoal; import net.minecraft.world.entity.ai.goal.ZombieAttackGoal; @@ -34,10 +34,10 @@ index 195cbb1870caf48830ea8c3f294a258c3839431d..7e9c38d595c83bf482c701423d66c26a @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08ebf171bae53b7140f3a572da3ef38df8fec480..1821bee2b071804016db70c180741839ecef9ca6 100644 +index 18e8f9a54235be5d887dacf7db05a6ddc240c78e..cf3987ea985f5868f3904bed0a8f23ecbc978e02 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1037,6 +1037,7 @@ public class PurpurWorldConfig { +@@ -1023,6 +1023,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 08ebf171bae53b7140f3a572da3ef38df8fec480..1821bee2b071804016db70c180741839 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1052,6 +1053,7 @@ public class PurpurWorldConfig { +@@ -1038,6 +1039,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/unapplied/0200-Configurable-hunger-starvation-damage.patch b/patches/server/0195-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/unapplied/0200-Configurable-hunger-starvation-damage.patch rename to patches/server/0195-Configurable-hunger-starvation-damage.patch index 74cbd5aa4..17da8371d 100644 --- a/patches/unapplied/0200-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0195-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 1821bee2b071804016db70c180741839ecef9ca6..10dcb1623caa995922bba0a96f73907e05772e9c 100644 +index cf3987ea985f5868f3904bed0a8f23ecbc978e02..ccc7a7ab410389f5b7fba118b6ff893116f759a0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2524,4 +2524,9 @@ public class PurpurWorldConfig { +@@ -2506,4 +2506,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/unapplied/0201-Enhance-SysoutCatcher.patch b/patches/server/0196-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/unapplied/0201-Enhance-SysoutCatcher.patch rename to patches/server/0196-Enhance-SysoutCatcher.patch diff --git a/patches/unapplied/0202-Armor-click-equip-options.patch b/patches/server/0197-Armor-click-equip-options.patch similarity index 92% rename from patches/unapplied/0202-Armor-click-equip-options.patch rename to patches/server/0197-Armor-click-equip-options.patch index 992ecd4d9..8b9287fae 100644 --- a/patches/unapplied/0202-Armor-click-equip-options.patch +++ b/patches/server/0197-Armor-click-equip-options.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Armor click equip options diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 302203e64277932ecb224edd3768dace07bd9d94..f9f7afa0bf2989aaef2f0e8456fe3c93a226b6d0 100644 +index 95f047e6eb523d07e2b29c8f48e4b0d59d140144..5204b8157a45468a314bbcd2703896b9316128ac 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -520,7 +520,7 @@ public class ServerPlayerGameMode { - return interactionresultwrapper.getResult(); - } else { - player.setItemInHand(hand, itemstack1); +@@ -484,7 +484,7 @@ public class ServerPlayerGameMode { + player.setItemInHand(hand, itemstack1); + } + - if (this.isCreative()) { + if (this.isCreative() && itemstack1 != ItemStack.EMPTY) { // Purpur itemstack1.setCount(i); @@ -58,7 +58,7 @@ 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 10dcb1623caa995922bba0a96f73907e05772e9c..d8fb8dc520ba0b88239c0d4c3f731c0567c422cd 100644 +index ccc7a7ab410389f5b7fba118b6ff893116f759a0..d098f9a3ee2568c45b051586e36c1a9aea44dada 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -383,6 +383,8 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0203-Add-uptime-command.patch b/patches/server/0198-Add-uptime-command.patch similarity index 94% rename from patches/unapplied/0203-Add-uptime-command.patch rename to patches/server/0198-Add-uptime-command.patch index 9481518bc..ea5d8f976 100644 --- a/patches/unapplied/0203-Add-uptime-command.patch +++ b/patches/server/0198-Add-uptime-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index c137f5299e4a9e2f33aeef77818c62c3805bdc0d..9e7cc8bf867b6e4f86b55e1f1d3a1cb6233c90f1 100644 +index 9db941587e870b2a9d0378652d62f4f2c2c385bd..174d4e18743f4388ac6aec6875adf6ac88f32bcd 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -210,6 +210,7 @@ public class Commands { +@@ -208,6 +208,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index c137f5299e4a9e2f33aeef77818c62c3805bdc0d..9e7cc8bf867b6e4f86b55e1f1d3a1cb6 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 38eee8b34caaee7fb4e05dd08b1854afd0052368..a859c915117d7660673f580864b3ba2aeb1d9480 100644 +index 8a6b839ce55bc352dd5a38883c2bf8240f7420bf..3cbfbfeccb6603dc8dc60d85b8db19b61a736b72 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop +Date: Thu, 1 Jul 2021 19:25:05 -0500 +Subject: [PATCH] Structure seed options + + +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 12c8cd424668c2167c071b48d0c1f689ca363513..b2604ae34c141ce69b3e1df72543aa942a9c9f0e 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -212,6 +212,23 @@ public class PurpurConfig { + deathMessageOnlyBroadcastToAffectedPlayer = getBoolean("settings.broadcasts.death.only-broadcast-to-affected-player", deathMessageOnlyBroadcastToAffectedPlayer); + } + ++ public static int seedStructureBuriedTreasure = -1; ++ public static int seedStructureMineshaft = -1; ++ private static void seedSettings() { ++ seedStructureBuriedTreasure = getInt("settings.seed.structure.buried_treasure", seedStructureBuriedTreasure); ++ seedStructureMineshaft = getInt("settings.seed.structure.mineshaft", seedStructureMineshaft); ++ if (version < 26) { ++ int stronghold = getInt("settings.seed.structure.stronghold", -1); ++ set("settings.seed.structure.stronghold", null); ++ if (stronghold != -1) { ++ org.spigotmc.SpigotConfig.config.set("world-settings.default.seed-stronghold", stronghold); ++ org.spigotmc.SpigotConfig.save(); ++ } ++ } ++ // hide these from timings report ++ if (!TimingsManager.hiddenConfigs.contains("settings.seed")) TimingsManager.hiddenConfigs.add("settings.seed"); ++ } ++ + public static String serverModName = "Purpur"; + private static void serverModName() { + serverModName = getString("settings.server-mod-name", serverModName); diff --git a/patches/unapplied/0205-Tool-actionable-options.patch b/patches/server/0200-Tool-actionable-options.patch similarity index 97% rename from patches/unapplied/0205-Tool-actionable-options.patch rename to patches/server/0200-Tool-actionable-options.patch index 3e0d96960..650628e81 100644 --- a/patches/unapplied/0205-Tool-actionable-options.patch +++ b/patches/server/0200-Tool-actionable-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tool actionable options diff --git a/src/main/java/net/minecraft/world/item/AxeItem.java b/src/main/java/net/minecraft/world/item/AxeItem.java -index 734276a74ad11f117a816b214c62415818c27dcc..a8984ee74b82477e9f4fd70d31c5c622b32fface 100644 +index 03a6a99dcc0c8fcc32776dd49cf6092b899bf6ed..e32f9b614324000797f5d9944013af4fe28ce891 100644 --- a/src/main/java/net/minecraft/world/item/AxeItem.java +++ b/src/main/java/net/minecraft/world/item/AxeItem.java -@@ -32,22 +32,22 @@ public class AxeItem extends DiggerItem { +@@ -33,22 +33,22 @@ public class AxeItem extends DiggerItem { BlockPos blockPos = context.getClickedPos(); Player player = context.getPlayer(); BlockState blockState = level.getBlockState(blockPos); @@ -40,7 +40,7 @@ index 734276a74ad11f117a816b214c62415818c27dcc..a8984ee74b82477e9f4fd70d31c5c622 level.levelEvent(player, 3004, blockPos, 0); optional4 = optional3; } -@@ -57,14 +57,22 @@ public class AxeItem extends DiggerItem { +@@ -58,7 +58,15 @@ public class AxeItem extends DiggerItem { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, blockPos, itemStack); } @@ -54,9 +54,10 @@ index 734276a74ad11f117a816b214c62415818c27dcc..a8984ee74b82477e9f4fd70d31c5c622 + } + }); + // Purpur end + level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(player, optional4.get())); if (player != null) { itemStack.hurtAndBreak(1, player, (p) -> { - p.broadcastBreakEvent(context.getHand()); +@@ -66,7 +74,7 @@ public class AxeItem extends DiggerItem { }); } @@ -66,10 +67,10 @@ index 734276a74ad11f117a816b214c62415818c27dcc..a8984ee74b82477e9f4fd70d31c5c622 return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java -index a5c2d6f0c0850a99224a1a8d622fe6b341cee88b..d8777ab86465e25236e7abbafd7ff6688ca0d897 100644 +index 180aec596110309aade13d2080f8824d152b07cb..bf0e1f481b4c81f0663366bbe597b066f95a6200 100644 --- a/src/main/java/net/minecraft/world/item/HoeItem.java +++ b/src/main/java/net/minecraft/world/item/HoeItem.java -@@ -33,15 +33,22 @@ public class HoeItem extends DiggerItem { +@@ -34,15 +34,22 @@ public class HoeItem extends DiggerItem { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos blockPos = context.getClickedPos(); @@ -99,7 +100,7 @@ index a5c2d6f0c0850a99224a1a8d622fe6b341cee88b..d8777ab86465e25236e7abbafd7ff668 if (!level.isClientSide) { consumer.accept(context); if (player != null) { -@@ -51,7 +58,7 @@ public class HoeItem extends DiggerItem { +@@ -52,7 +59,7 @@ public class HoeItem extends DiggerItem { } } @@ -109,7 +110,7 @@ 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 e3a4041155d2998ee840fc09ca95f117a4e160b3..022490032f8df8d4ddd920b12a7a002fd86fa219 100644 +index d098f9a3ee2568c45b051586e36c1a9aea44dada..22648636601e60b43743509f597f5ac650d309fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -510,6 +510,153 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/0104-Stonecutter-damage.patch b/patches/todo/0104-Stonecutter-damage.patch similarity index 100% rename from patches/unapplied/0104-Stonecutter-damage.patch rename to patches/todo/0104-Stonecutter-damage.patch diff --git a/patches/unapplied/0144-Add-config-for-snow-on-blue-ice.patch b/patches/todo/0144-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/unapplied/0144-Add-config-for-snow-on-blue-ice.patch rename to patches/todo/0144-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/unapplied/0169-Configurable-damage-settings-for-magma-blocks.patch b/patches/todo/0169-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/unapplied/0169-Configurable-damage-settings-for-magma-blocks.patch rename to patches/todo/0169-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/unapplied/0204-Structure-seed-options.patch b/patches/unapplied/0204-Structure-seed-options.patch deleted file mode 100644 index ed082204a..000000000 --- a/patches/unapplied/0204-Structure-seed-options.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 1 Jul 2021 19:25:05 -0500 -Subject: [PATCH] Structure seed options - - -diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java -index ff58437d0ccc4901c84b3df9afb245940fbffef1..e4201731cee6ffd14a00370666de8cee5d2d5872 100644 ---- a/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java -+++ b/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java -@@ -20,7 +20,10 @@ public class BuriedTreasureFeature extends StructureFeature context) { - WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L)); -- worldgenRandom.setLargeFeatureWithSalt(context.seed(), context.chunkPos().x, context.chunkPos().z, 10387320); -+ // Purpur start -+ int salt = org.purpurmc.purpur.PurpurConfig.seedStructureBuriedTreasure; -+ worldgenRandom.setLargeFeatureWithSalt(context.seed(), context.chunkPos().x, context.chunkPos().z, salt != -1 ? salt : RANDOM_SALT); -+ // Purpur end - return worldgenRandom.nextFloat() < (context.config()).probability && context.validBiomeOnTop(Heightmap.Types.OCEAN_FLOOR_WG); - } - -diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/MineshaftFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/MineshaftFeature.java -index 45f11284bf65081b3b2e8da85114efbe5efd5b42..354a923350cbfc76645136858e8e96285de139a1 100644 ---- a/src/main/java/net/minecraft/world/level/levelgen/feature/MineshaftFeature.java -+++ b/src/main/java/net/minecraft/world/level/levelgen/feature/MineshaftFeature.java -@@ -27,6 +27,10 @@ public class MineshaftFeature extends StructureFeature { - - private static boolean checkLocation(PieceGeneratorSupplier.Context context) { - WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L)); -+ // Purpur start -+ int salt = org.purpurmc.purpur.PurpurConfig.seedStructureMineshaft; -+ if (salt != -1) worldgenRandom.setLargeFeatureWithSalt(context.seed(), context.chunkPos().x, context.chunkPos().z, salt); else -+ // Purpur end - worldgenRandom.setLargeFeatureSeed(context.seed(), context.chunkPos().x, context.chunkPos().z); - double d = (double)(context.config()).probability; - return worldgenRandom.nextDouble() >= d ? false : context.validBiome().test(context.chunkGenerator().getNoiseBiome(QuartPos.fromBlock(context.chunkPos().getMiddleBlockX()), QuartPos.fromBlock(50), QuartPos.fromBlock(context.chunkPos().getMiddleBlockZ()))); -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f5a91db8035509ce42315a75205e9f0ae13ed127..4949c3bc2066e790364db631e7f801c1e83d01e9 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -214,6 +214,23 @@ public class PurpurConfig { - deathMessageOnlyBroadcastToAffectedPlayer = getBoolean("settings.broadcasts.death.only-broadcast-to-affected-player", deathMessageOnlyBroadcastToAffectedPlayer); - } - -+ public static int seedStructureBuriedTreasure = -1; -+ public static int seedStructureMineshaft = -1; -+ private static void seedSettings() { -+ seedStructureBuriedTreasure = getInt("settings.seed.structure.buried_treasure", seedStructureBuriedTreasure); -+ seedStructureMineshaft = getInt("settings.seed.structure.mineshaft", seedStructureMineshaft); -+ if (version < 26) { -+ int stronghold = getInt("settings.seed.structure.stronghold", -1); -+ set("settings.seed.structure.stronghold", null); -+ if (stronghold != -1) { -+ org.spigotmc.SpigotConfig.config.set("world-settings.default.seed-stronghold", stronghold); -+ org.spigotmc.SpigotConfig.save(); -+ } -+ } -+ // hide these from timings report -+ if (!TimingsManager.hiddenConfigs.contains("settings.seed")) TimingsManager.hiddenConfigs.add("settings.seed"); -+ } -+ - public static String serverModName = "Purpur"; - private static void serverModName() { - serverModName = getString("settings.server-mod-name", serverModName);