From c74414fe7a83937da7982c43a33c69264092709a Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Thu, 8 Jun 2023 21:16:09 -0400 Subject: [PATCH] the rest of em --- ...4-Make-pufferfish-config-relocatable.patch | 0 ...wner-not-spawning-water-animals-cor.patch} | 8 ++--- ...ig-for-mob-last-hurt-by-player-time.patch} | 20 +++++------ .../0246-Anvil-repair-damage-options.patch} | 4 +-- .../0247-Fix-legacy-colors-in-console.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 6 ++-- ...d-toggle-for-enchant-level-clamping.patch} | 10 +++--- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 16 ++++----- .../0252-Stonecutter-damage.patch} | 14 ++++---- ...le-damage-settings-for-magma-blocks.patch} | 8 ++--- ...254-Add-config-for-snow-on-blue-ice.patch} | 4 +-- .../0255-Skeletons-eat-wither-roses.patch} | 16 ++++----- ...56-Enchantment-Table-Persists-Lapis.patch} | 20 +++++------ .../0257-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 8 ++--- ...for-sculk-shrieker-can_summon-state.patch} | 6 ++-- .../0260-Config-to-not-let-coral-die.patch} | 4 +-- .../0261-Add-local-difficulty-api.patch} | 6 ++-- ...262-Add-toggle-for-RNG-manipulation.patch} | 10 +++--- .../0263-Send-client-custom-name-of-BE.patch} | 4 +-- ...Fix-exact-choice-recipe-book-clicks.patch} | 10 +++--- .../0265-Allow-custom-ChatDecorators.patch} | 4 +-- .../0266-Cache-server-motd.patch} | 4 +-- ...r-output-for-invalid-movement-kicks.patch} | 10 +++--- .../0268-Add-Bee-API.patch} | 8 ++--- .../0269-Debug-Marker-API.patch} | 12 +++---- ...g-option-to-ignore-creative-players.patch} | 8 ++--- ...71-Add-skeleton-bow-accuracy-option.patch} | 20 +++++------ .../0272-Allay-respect-item-NBT.patch} | 35 +++++++++---------- .../0273-Add-death-screen-API.patch} | 18 +++++----- ...4-Implement-ram-and-rambar-commands.patch} | 22 ++++++------ ...275-Add-item-packet-serialize-event.patch} | 14 ++++---- .../0276-Fix-MC-123848.patch} | 2 +- ...quid-colors-for-rainglow-fabric-mod.patch} | 16 ++++----- ...n-to-fix-MC-3304-projectile-looting.patch} | 12 +++---- ...Configurable-block-blast-resistance.patch} | 12 +++---- ...gurable-block-fall-damage-modifiers.patch} | 14 ++++---- .../0281-Language-API.patch} | 2 +- .../0282-Milk-Keeps-Beneficial-Effects.patch} | 18 +++++----- ...s-not-looking-up-and-down-when-stra.patch} | 6 ++-- ...d-log-suppression-for-LibraryLoader.patch} | 4 +-- ...ransparent-Blocks-In-Enchanting-Box.patch} | 16 ++++----- ...ow-creeper-to-encircle-target-when-.patch} | 12 +++---- .../0287-Fire-Immunity-API.patch} | 25 ++++++------- ...eport-to-spawn-on-nether-ceiling-da.patch} | 20 +++++++---- .../0289-Added-got-ram-event.patch} | 4 +-- .../0290-Log-skipped-entity-s-position.patch} | 4 +-- .../0291-End-Crystal-Cramming.patch} | 12 +++---- ...eacon-effects-when-covered-by-tinte.patch} | 6 ++-- ...ute-clamping-and-armor-limit-config.patch} | 4 +-- ...ig-to-remove-explosion-radius-clamp.patch} | 18 ++-------- ...ble-sugarcane-cactus-and-netherwart.patch} | 10 +++--- .../0296-Add-PreExplodeEvents.patch} | 2 +- ...7-Improve-output-of-plugins-command.patch} | 0 .../0298-Make-GUI-Great-Again.patch} | 2 +- .../0299-Add-mending-multiplier.patch} | 8 ++--- todo.txt | 4 ++- 58 files changed, 279 insertions(+), 283 deletions(-) rename patches/{todo => removed}/server/0284-Make-pufferfish-config-relocatable.patch (100%) rename patches/{todo/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (86%) rename patches/{todo/server/0253-Config-for-mob-last-hurt-by-player-time.patch => server/0245-Config-for-mob-last-hurt-by-player-time.patch} (80%) rename patches/{todo/server/0254-Anvil-repair-damage-options.patch => server/0246-Anvil-repair-damage-options.patch} (97%) rename patches/{todo/server/0255-Fix-legacy-colors-in-console.patch => server/0247-Fix-legacy-colors-in-console.patch} (100%) rename patches/{todo/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch => server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (93%) rename patches/{todo/server/0257-Add-toggle-for-enchant-level-clamping.patch => server/0249-Add-toggle-for-enchant-level-clamping.patch} (89%) rename patches/{todo/server/0258-Skip-junit-tests-for-purpur-commands.patch => server/0250-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/{todo/server/0259-Implement-configurable-search-radius-for-villagers-t.patch => server/0251-Implement-configurable-search-radius-for-villagers-t.patch} (79%) rename patches/{todo/server/0260-Stonecutter-damage.patch => server/0252-Stonecutter-damage.patch} (89%) rename patches/{todo/server/0261-Configurable-damage-settings-for-magma-blocks.patch => server/0253-Configurable-damage-settings-for-magma-blocks.patch} (88%) rename patches/{todo/server/0262-Add-config-for-snow-on-blue-ice.patch => server/0254-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/{todo/server/0263-Skeletons-eat-wither-roses.patch => server/0255-Skeletons-eat-wither-roses.patch} (88%) rename patches/{todo/server/0264-Enchantment-Table-Persists-Lapis.patch => server/0256-Enchantment-Table-Persists-Lapis.patch} (90%) rename patches/{todo/server/0265-Spark-Profiler.patch => server/0257-Spark-Profiler.patch} (100%) rename patches/{todo/server/0266-Option-to-disable-kick-for-out-of-order-chat.patch => server/0258-Option-to-disable-kick-for-out-of-order-chat.patch} (85%) rename patches/{todo/server/0267-Config-for-sculk-shrieker-can_summon-state.patch => server/0259-Config-for-sculk-shrieker-can_summon-state.patch} (88%) rename patches/{todo/server/0268-Config-to-not-let-coral-die.patch => server/0260-Config-to-not-let-coral-die.patch} (94%) rename patches/{todo/server/0269-Add-local-difficulty-api.patch => server/0261-Add-local-difficulty-api.patch} (74%) rename patches/{todo/server/0270-Add-toggle-for-RNG-manipulation.patch => server/0262-Add-toggle-for-RNG-manipulation.patch} (86%) rename patches/{todo/server/0271-Send-client-custom-name-of-BE.patch => server/0263-Send-client-custom-name-of-BE.patch} (89%) rename patches/{todo/server/0272-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch => server/0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch} (92%) rename patches/{todo/server/0273-Allow-custom-ChatDecorators.patch => server/0265-Allow-custom-ChatDecorators.patch} (90%) rename patches/{todo/server/0274-Cache-server-motd.patch => server/0266-Cache-server-motd.patch} (92%) rename patches/{todo/server/0277-Add-more-logger-output-for-invalid-movement-kicks.patch => server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch} (88%) rename patches/{todo/server/0278-Add-Bee-API.patch => server/0268-Add-Bee-API.patch} (89%) rename patches/{todo/server/0279-Debug-Marker-API.patch => server/0269-Debug-Marker-API.patch} (93%) rename patches/{todo/server/0280-mob-spawning-option-to-ignore-creative-players.patch => server/0270-mob-spawning-option-to-ignore-creative-players.patch} (90%) rename patches/{todo/server/0281-Add-skeleton-bow-accuracy-option.patch => server/0271-Add-skeleton-bow-accuracy-option.patch} (75%) rename patches/{todo/server/0282-Allay-respect-item-NBT.patch => server/0272-Allay-respect-item-NBT.patch} (62%) rename patches/{todo/server/0283-Add-death-screen-API.patch => server/0273-Add-death-screen-API.patch} (77%) rename patches/{todo/server/0285-Implement-ram-and-rambar-commands.patch => server/0274-Implement-ram-and-rambar-commands.patch} (96%) rename patches/{todo/server/0286-Add-item-packet-serialize-event.patch => server/0275-Add-item-packet-serialize-event.patch} (87%) rename patches/{todo/server/0287-Fix-MC-123848.patch => server/0276-Fix-MC-123848.patch} (91%) rename patches/{todo/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch => server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch} (89%) rename patches/{todo/server/0289-Add-an-option-to-fix-MC-3304-projectile-looting.patch => server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (92%) rename patches/{todo/server/0290-Configurable-block-blast-resistance.patch => server/0279-Configurable-block-blast-resistance.patch} (87%) rename patches/{todo/server/0291-Configurable-block-fall-damage-modifiers.patch => server/0280-Configurable-block-fall-damage-modifiers.patch} (92%) rename patches/{todo/server/0292-Language-API.patch => server/0281-Language-API.patch} (93%) rename patches/{todo/server/0293-Milk-Keeps-Beneficial-Effects.patch => server/0282-Milk-Keeps-Beneficial-Effects.patch} (77%) rename patches/{todo/server/0294-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (76%) rename patches/{todo/server/0295-Add-log-suppression-for-LibraryLoader.patch => server/0284-Add-log-suppression-for-LibraryLoader.patch} (91%) rename patches/{todo/server/0296-Allow-Transparent-Blocks-In-Enchanting-Box.patch => server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch} (71%) rename patches/{todo/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch => server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (84%) rename patches/{todo/server/0298-Fire-Immunity-API.patch => server/0287-Fire-Immunity-API.patch} (84%) rename patches/{todo/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (77%) rename patches/{todo/server/0300-Added-got-ram-event.patch => server/0289-Added-got-ram-event.patch} (86%) rename patches/{todo/server/0301-Log-skipped-entity-s-position.patch => server/0290-Log-skipped-entity-s-position.patch} (86%) rename patches/{todo/server/0302-End-Crystal-Cramming.patch => server/0291-End-Crystal-Cramming.patch} (84%) rename patches/{todo/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (92%) rename patches/{todo/server/0304-Add-attribute-clamping-and-armor-limit-config.patch => server/0293-Add-attribute-clamping-and-armor-limit-config.patch} (95%) rename patches/{todo/server/0305-Config-to-remove-explosion-radius-clamp.patch => server/0294-Config-to-remove-explosion-radius-clamp.patch} (60%) rename patches/{todo/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch => server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch} (94%) rename patches/{todo/server/0307-Add-PreExplodeEvents.patch => server/0296-Add-PreExplodeEvents.patch} (94%) rename patches/{todo/server/0308-Improve-output-of-plugins-command.patch => server/0297-Improve-output-of-plugins-command.patch} (100%) rename patches/{todo/server/0309-Make-GUI-Great-Again.patch => server/0298-Make-GUI-Great-Again.patch} (99%) rename patches/{todo/server/0310-Add-mending-multiplier.patch => server/0299-Add-mending-multiplier.patch} (87%) diff --git a/patches/todo/server/0284-Make-pufferfish-config-relocatable.patch b/patches/removed/server/0284-Make-pufferfish-config-relocatable.patch similarity index 100% rename from patches/todo/server/0284-Make-pufferfish-config-relocatable.patch rename to patches/removed/server/0284-Make-pufferfish-config-relocatable.patch diff --git a/patches/todo/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 86% rename from patches/todo/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 873de73ff..d8b937284 100644 --- a/patches/todo/server/0252-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,7 +5,7 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 35cfa366baf6747105faa93f1220bb9cc31a5bd5..ff3a6755d04f2280a36bd363ab1722e074e37194 100644 +index cd2ce5bcb8c30e4657cd0e340d80544c7e805905..c8c6fed3f93903bb5c6145930538d415f6f59738 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java @@ -82,6 +82,6 @@ public abstract class WaterAnimal extends PathfinderMob { @@ -17,10 +17,10 @@ index 35cfa366baf6747105faa93f1220bb9cc31a5bd5..ff3a6755d04f2280a36bd363ab1722e0 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82d04c5f4705de059507c7633ab276a79152b6b5..f4fa610e93b5c74ca4c804bc13b5edca4019ce90 100644 +index 615af0798cb2931d380378bb1ea4918b0b66d206..acd7d1f25a14896315227033133f7598aef97dbe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -987,8 +987,10 @@ public class PurpurWorldConfig { +@@ -974,8 +974,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; @@ -30,4 +30,4 @@ index 82d04c5f4705de059507c7633ab276a79152b6b5..f4fa610e93b5c74ca4c804bc13b5edca + spawnerFixMC238526 = getBoolean("blocks.spawner.fix-mc-238526", spawnerFixMC238526); } - public int spongeAbsorptionArea = 64; + public boolean fixSandDuping = true; diff --git a/patches/todo/server/0253-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch similarity index 80% rename from patches/todo/server/0253-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch index 3d48497d8..1d36423e2 100644 --- a/patches/todo/server/0253-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5718d70cdc4f5afb14320a20c3e723623c1e66c2..d96de1ee220465cb268819f9683d52a1251ff36a 100644 +index c53f871238809fc62bb8080eb2b895c2fcac6d29..923f48e002f92a761619dbfb125d6154f4a328c5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1463,13 +1463,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1503,13 +1503,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,7 +25,7 @@ index 5718d70cdc4f5afb14320a20c3e723623c1e66c2..d96de1ee220465cb268819f9683d52a1 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 69dbcc299cde87de76ff5c254842e6b89f55d86b..7ef5980f7321662aa7034a74c2f6926846425db9 100644 +index 641caa0f74a40ea52f71f3150c0168272b378edf..0eaf7209c636440fa9351797d46954d53dd16c5c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -444,7 +444,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -38,21 +38,21 @@ index 69dbcc299cde87de76ff5c254842e6b89f55d86b..7ef5980f7321662aa7034a74c2f69268 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d24bb6256c8bc25fb8fefd547ffccf8b41232687..98a9b8b050d76a16a076c61c5593891ab7e70f03 100644 +index acd7d1f25a14896315227033133f7598aef97dbe..4d8080d52627acce69d8cf0667b7f6006e22c95d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -144,6 +144,7 @@ public class PurpurWorldConfig { - public boolean mobsIgnoreRails = false; - public boolean rainStopsAfterSleep = true; +@@ -146,6 +146,7 @@ public class PurpurWorldConfig { public boolean thunderStopsAfterSleep = true; + public boolean forceHalloweenSeason = false; + public float chanceHeadHalloweenOnEntity = 0.25F; + public int mobLastHurtByPlayerTime = 100; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -169,6 +170,7 @@ public class PurpurWorldConfig { - mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); - rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); +@@ -173,6 +174,7 @@ public class PurpurWorldConfig { thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); + forceHalloweenSeason = getBoolean("gameplay-mechanics.halloween.force", forceHalloweenSeason); + chanceHeadHalloweenOnEntity = (float) getDouble("gameplay-mechanics.halloween.head-chance", chanceHeadHalloweenOnEntity); + mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); } diff --git a/patches/todo/server/0254-Anvil-repair-damage-options.patch b/patches/server/0246-Anvil-repair-damage-options.patch similarity index 97% rename from patches/todo/server/0254-Anvil-repair-damage-options.patch rename to patches/server/0246-Anvil-repair-damage-options.patch index 1b6a71785..ce2cfb788 100644 --- a/patches/todo/server/0254-Anvil-repair-damage-options.patch +++ b/patches/server/0246-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548f return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71b803f244ec392898db423652b35e8603507f2f..a060ca451f6c0b1df4f87cbc98b05a8dc3bb2c0f 100644 +index 4d8080d52627acce69d8cf0667b7f6006e22c95d..cdab9ffeebfbc35e729610ab2a4d7ece3de2c895 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -732,9 +732,13 @@ public class PurpurWorldConfig { +@@ -736,9 +736,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/todo/server/0255-Fix-legacy-colors-in-console.patch b/patches/server/0247-Fix-legacy-colors-in-console.patch similarity index 100% rename from patches/todo/server/0255-Fix-legacy-colors-in-console.patch rename to patches/server/0247-Fix-legacy-colors-in-console.patch diff --git a/patches/todo/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 93% rename from patches/todo/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch index e92ec073c..8c3aebde7 100644 --- a/patches/todo/server/0256-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 70997b83fd7631ebf3c5bda67ef77bef605eb464..a8c227e2cb62cfa8225798329cde9078 return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a060ca451f6c0b1df4f87cbc98b05a8dc3bb2c0f..77ec7bfd2b31d7346ddc56f8808904be624dc6ef 100644 +index cdab9ffeebfbc35e729610ab2a4d7ece3de2c895..45cb432549683e155dc08863972f65815c203b94 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1013,12 +1013,14 @@ public class PurpurWorldConfig { +@@ -1006,12 +1006,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; @@ -41,4 +41,4 @@ index a060ca451f6c0b1df4f87cbc98b05a8dc3bb2c0f..77ec7bfd2b31d7346ddc56f8808904be + turtleEggsTramplingFeatherFalling = getBoolean("blocks.turtle_egg.feather-fall-distance-affects-trampling", turtleEggsTramplingFeatherFalling); } - public int waterInfiniteRequiredSources = 2; + public double axolotlMaxHealth = 14.0D; diff --git a/patches/todo/server/0257-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch similarity index 89% rename from patches/todo/server/0257-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0249-Add-toggle-for-enchant-level-clamping.patch index 96e2bd8dc..75773d9bc 100644 --- a/patches/todo/server/0257-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index dfca70fd75dc2d6c169a35a25aba2262680f6ca9..f671a4475ead763d2202ff2208b8ff3490d6b5e3 100644 +index b42360ce91de16864ad1e4489dc0c22ba412c749..0f6f14f3ddf18ef111d37434b8c2659c9a6484b9 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1190,7 +1190,7 @@ public final class ItemStack { +@@ -1192,7 +1192,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); @@ -31,10 +31,10 @@ index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235e @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3db04bc9611a76b939758ebaac8596e05860f365..3de2e7a17e1234367e4ec6d944b1145781aefeba 100644 +index 4ebaf007c785f6805b659d153c207e8f6c800bee..75908d5fdfbf795b2e83860146291619b768df31 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -395,6 +395,7 @@ public class PurpurConfig { +@@ -393,6 +393,7 @@ public class PurpurConfig { public static boolean allowIncompatibleEnchants = true; public static boolean allowHigherEnchantsLevels = true; public static boolean allowUnsafeEnchantCommand = false; @@ -42,7 +42,7 @@ index 3db04bc9611a76b939758ebaac8596e05860f365..3de2e7a17e1234367e4ec6d944b11457 private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -417,6 +418,7 @@ public class PurpurConfig { +@@ -415,6 +416,7 @@ public class PurpurConfig { allowIncompatibleEnchants = getBoolean("settings.enchantment.anvil.allow-incompatible-enchants", allowIncompatibleEnchants); allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability diff --git a/patches/todo/server/0258-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0250-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/todo/server/0258-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0250-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/todo/server/0259-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch similarity index 79% rename from patches/todo/server/0259-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch index c629b3539..74d2eb05d 100644 --- a/patches/todo/server/0259-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 75df9d6d69ad5e979ab7b99435dbae1dcb901e30..6f47f6c785dc8da6b211ac87630a3d83c42d1576 100644 +index 49e4a49331938a01d8ff79a17bbb37f33d5c49ea..231fa50590f2861cc2a733ecfb37fb27add0eff9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1093,6 +1093,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1060,6 +1060,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,19 +18,19 @@ index 75df9d6d69ad5e979ab7b99435dbae1dcb901e30..6f47f6c785dc8da6b211ac87630a3d83 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77ec7bfd2b31d7346ddc56f8808904be624dc6ef..dd39765b0b89126421834c1b9c79882347ae8a5c 100644 +index 45cb432549683e155dc08863972f65815c203b94..bf94c241a737f21274e2e846a911318148a029b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2723,6 +2723,8 @@ public class PurpurWorldConfig { +@@ -2303,6 +2303,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; + public int villagerSpawnIronGolemRadius = 0; + public int villagerSpawnIronGolemLimit = 0; private void villagerSettings() { - villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); - villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2756,6 +2758,8 @@ public class PurpurWorldConfig { + if (PurpurConfig.version < 10) { + double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); +@@ -2331,6 +2333,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); @@ -38,4 +38,4 @@ index 77ec7bfd2b31d7346ddc56f8808904be624dc6ef..dd39765b0b89126421834c1b9c798823 + villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); } - public boolean vindicatorRidable = false; + public double vindicatorMaxHealth = 24.0D; diff --git a/patches/todo/server/0260-Stonecutter-damage.patch b/patches/server/0252-Stonecutter-damage.patch similarity index 89% rename from patches/todo/server/0260-Stonecutter-damage.patch rename to patches/server/0252-Stonecutter-damage.patch index 68d644a58..0cd47f52c 100644 --- a/patches/todo/server/0260-Stonecutter-damage.patch +++ b/patches/server/0252-Stonecutter-damage.patch @@ -26,10 +26,10 @@ index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..e2d42e7947a237dd060ec1b9b63ac6ca + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 17a7fab20b4174273354fdc2fc700b7f2d669a98..a7578e112e80ed2585a7eb4fff9542f6068546be 100644 +index 0e6923e6d440e846b3db47c6b8357f7e0e85ad65..48356602e9e112c4f059777467d8adf6d5147184 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -463,7 +463,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -465,7 +465,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return BlockPathTypes.BLOCKED; } else { // Paper end @@ -38,7 +38,7 @@ index 17a7fab20b4174273354fdc2fc700b7f2d669a98..a7578e112e80ed2585a7eb4fff9542f6 return BlockPathTypes.DANGER_OTHER; } -@@ -493,7 +493,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -498,7 +498,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { } else if (!blockState.is(BlockTags.TRAPDOORS) && !blockState.is(Blocks.LILY_PAD) && !blockState.is(Blocks.BIG_DRIPLEAF)) { if (blockState.is(Blocks.POWDER_SNOW)) { return BlockPathTypes.POWDER_SNOW; @@ -48,10 +48,10 @@ index 17a7fab20b4174273354fdc2fc700b7f2d669a98..a7578e112e80ed2585a7eb4fff9542f6 return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f038a8c13 100644 +index 75908d5fdfbf795b2e83860146291619b768df31..c731c389ca4e9114512a00cd55933debfbefc9f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -207,8 +207,10 @@ public class PurpurConfig { +@@ -205,8 +205,10 @@ public class PurpurConfig { } public static String deathMsgRunWithScissors = " slipped and fell on their shears"; @@ -63,10 +63,10 @@ index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd39765b0b89126421834c1b9c79882347ae8a5c..2b405b145c4369933f2aee5262bcee1a4c077978 100644 +index bf94c241a737f21274e2e846a911318148a029b0..645963cbc96e77eb45426e183c3df3a804e6b3f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1008,6 +1008,11 @@ public class PurpurWorldConfig { +@@ -1001,6 +1001,11 @@ public class PurpurWorldConfig { spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava); } diff --git a/patches/todo/server/0261-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch similarity index 88% rename from patches/todo/server/0261-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch index b3d83f852..29186f024 100644 --- a/patches/todo/server/0261-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -index 12ffb5714f088f4aeafa1ad6a36f5b64a86c4c96..293aa5c8f91a997045f8d9f2951fe3a7f01f0642 100644 +index 1b766045687e4dcded5cbcc50b746c55b9a34e22..be365914856593bb3c4e1945cc990786072f2953 100644 --- a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -@@ -27,7 +27,7 @@ public class MagmaBlock extends Block { +@@ -22,7 +22,7 @@ public class MagmaBlock extends Block { @Override public void stepOn(Level world, BlockPos pos, BlockState state, Entity entity) { @@ -18,10 +18,10 @@ index 12ffb5714f088f4aeafa1ad6a36f5b64a86c4c96..293aa5c8f91a997045f8d9f2951fe3a7 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b405b145c4369933f2aee5262bcee1a4c077978..2a1740fe8aab03c59427b01277068e6c87d6b241 100644 +index 645963cbc96e77eb45426e183c3df3a804e6b3f5..258d979638e716ce822951544fb2821014816773 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -939,6 +939,13 @@ public class PurpurWorldConfig { +@@ -943,6 +943,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/todo/server/0262-Add-config-for-snow-on-blue-ice.patch b/patches/server/0254-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/todo/server/0262-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0254-Add-config-for-snow-on-blue-ice.patch index 1c5597277..e1e007076 100644 --- a/patches/todo/server/0262-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0254-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a1740fe8aab03c59427b01277068e6c87d6b241..aaeceeb1969c6c222a0d252d207e01762b7fb27c 100644 +index 258d979638e716ce822951544fb2821014816773..9db72cc34ce9cb8424a69070745246671ee49a7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -920,9 +920,11 @@ public class PurpurWorldConfig { +@@ -924,9 +924,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/todo/server/0263-Skeletons-eat-wither-roses.patch b/patches/server/0255-Skeletons-eat-wither-roses.patch similarity index 88% rename from patches/todo/server/0263-Skeletons-eat-wither-roses.patch rename to patches/server/0255-Skeletons-eat-wither-roses.patch index 8cc4614c6..4ea31d6b9 100644 --- a/patches/todo/server/0263-Skeletons-eat-wither-roses.patch +++ b/patches/server/0255-Skeletons-eat-wither-roses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 78fc17c45e566e0844ffbebb85044b9bfe64c6db..64a5e000adbfa5de2abc32ea9182847dbf83293d 100644 +index 27b3536224a9ddee098ad7765bf8f5f924b717d1..3bfe3e00bb9d6d99cc744488f73de2186c330671 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -14,6 +14,16 @@ import net.minecraft.world.item.Items; @@ -25,7 +25,7 @@ index 78fc17c45e566e0844ffbebb85044b9bfe64c6db..64a5e000adbfa5de2abc32ea9182847d public class Skeleton extends AbstractSkeleton { private static final int TOTAL_CONVERSION_TIME = 300; -@@ -174,4 +184,67 @@ public class Skeleton extends AbstractSkeleton { +@@ -157,4 +167,67 @@ public class Skeleton extends AbstractSkeleton { } } @@ -94,22 +94,22 @@ index 78fc17c45e566e0844ffbebb85044b9bfe64c6db..64a5e000adbfa5de2abc32ea9182847d + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aaeceeb1969c6c222a0d252d207e01762b7fb27c..2120da75446b48d58f16c187a01d73e4e1eb7a1e 100644 +index 9db72cc34ce9cb8424a69070745246671ee49a7c..d766e659f4fdb123c399d5bfff422806cc6e212f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2407,6 +2407,7 @@ public class PurpurWorldConfig { +@@ -2070,6 +2070,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; + public int skeletonFeedWitherRoses = 0; private void skeletonSettings() { - skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); - skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2420,6 +2421,7 @@ public class PurpurWorldConfig { + if (PurpurConfig.version < 10) { + double oldValue = getDouble("mobs.skeleton.attributes.max-health", skeletonMaxHealth); +@@ -2080,6 +2081,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); + skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); } - public boolean skeletonHorseRidableInWater = true; + public double skeletonHorseMaxHealthMin = 15.0D; diff --git a/patches/todo/server/0264-Enchantment-Table-Persists-Lapis.patch b/patches/server/0256-Enchantment-Table-Persists-Lapis.patch similarity index 90% rename from patches/todo/server/0264-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0256-Enchantment-Table-Persists-Lapis.patch index fddeb6312..0d2a634e2 100644 --- a/patches/todo/server/0264-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0256-Enchantment-Table-Persists-Lapis.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index c2fc00509bf3690d359928e8d352d4b3c2ca1491..69ae671be07b1928e778399551991777829e432a 100644 +index 0c3c3902e84010684ef703545c1377d8a6f32580..556e36c96820bfeba46f8e98b905c4456b969545 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java @@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -71,10 +71,10 @@ index c2fc00509bf3690d359928e8d352d4b3c2ca1491..69ae671be07b1928e778399551991777 }); } diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -index f4ee3ce287528337a0f9a3b612c157254f895a58..37a888e5db65b927094b43775ae9d4098244f809 100644 +index 839b7bc9392906dca384003468746963631fe095..286f34eef22a85be3fe9747dc3c3f9a7d51f437c 100644 --- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -@@ -28,6 +28,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; +@@ -29,6 +29,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -83,7 +83,7 @@ index f4ee3ce287528337a0f9a3b612c157254f895a58..37a888e5db65b927094b43775ae9d409 public class EnchantmentTableBlock extends BaseEntityBlock { protected static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 12.0D, 16.0D); -@@ -120,4 +122,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { +@@ -121,4 +123,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -146,11 +146,11 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2120da75446b48d58f16c187a01d73e4e1eb7a1e..61081f7e117777174b064353aa6453cecbad275d 100644 +index d766e659f4fdb123c399d5bfff422806cc6e212f..a5d07401e670775cd27ebee2daaa04194dd4fdc4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1442,6 +1442,11 @@ public class PurpurWorldConfig { - elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); +@@ -745,6 +745,11 @@ public class PurpurWorldConfig { + anvilDamageObsidianAmount = getInt("blocks.anvil.obsidian-used-for-damage", anvilDamageObsidianAmount); } + public boolean enchantmentTableLapisPersists = false; @@ -158,6 +158,6 @@ index 2120da75446b48d58f16c187a01d73e4e1eb7a1e..61081f7e117777174b064353aa6453ce + enchantmentTableLapisPersists = getBoolean("blocks.enchantment-table.lapis-persists", enchantmentTableLapisPersists); + } + - public boolean enderDragonRidable = false; - public boolean enderDragonRidableInWater = true; - public boolean enderDragonControllable = true; + public double azaleaGrowthChance = 0.0D; + private void azaleaSettings() { + azaleaGrowthChance = getDouble("blocks.azalea.growth-chance", azaleaGrowthChance); diff --git a/patches/todo/server/0265-Spark-Profiler.patch b/patches/server/0257-Spark-Profiler.patch similarity index 100% rename from patches/todo/server/0265-Spark-Profiler.patch rename to patches/server/0257-Spark-Profiler.patch diff --git a/patches/todo/server/0266-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 85% rename from patches/todo/server/0266-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch index 245629aa2..b9af52fac 100644 --- a/patches/todo/server/0266-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 565ae94ff218e18e38a5502c06d0caca407293e3..b5ff4750b669ffd60d7f3c926691fdce11dd52e4 100644 +index 8e90ee2ee59395533dc8803ded3f06c694a02e4f..1dd46063aa511febc3621a36e8d7172c3bdb012a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { @@ -18,10 +18,10 @@ index 565ae94ff218e18e38a5502c06d0caca407293e3..b5ff4750b669ffd60d7f3c926691fdce } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 15ed564a579237dd1f5d6ce56ccb473f038a8c13..9e87afb01e569e6d5c2846b931440c4ce395adae 100644 +index c731c389ca4e9114512a00cd55933debfbefc9f5..ad7153e27b04fc12a4ff97f1563584471626c6eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -461,9 +461,11 @@ public class PurpurConfig { +@@ -459,9 +459,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/todo/server/0267-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch similarity index 88% rename from patches/todo/server/0267-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch index d82e194a9..562dfe930 100644 --- a/patches/todo/server/0267-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for sculk shrieker can_summon state diff --git a/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java b/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java -index 437b44fb68bcbe81d1c431689431225b6a17a1a6..06d091b7c4df949c4abda16c4f73c194a71a4669 100644 +index 02d01eabb9606ae8c3b76ad9fa4bb9a525e247b1..ce51fec4a874f9466f9966684c535315dbf40b9e 100644 --- a/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java @@ -130,7 +130,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo @@ -18,10 +18,10 @@ index 437b44fb68bcbe81d1c431689431225b6a17a1a6..06d091b7c4df949c4abda16c4f73c194 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61081f7e117777174b064353aa6453cecbad275d..f31c457aa8bbccb4b9a6db9ab73eaeb2094140b7 100644 +index a5d07401e670775cd27ebee2daaa04194dd4fdc4..8107a8c01bccbad7e6896f95d4a7bae52f57ce3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -984,6 +984,11 @@ public class PurpurWorldConfig { +@@ -1005,6 +1005,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/todo/server/0268-Config-to-not-let-coral-die.patch b/patches/server/0260-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/todo/server/0268-Config-to-not-let-coral-die.patch rename to patches/server/0260-Config-to-not-let-coral-die.patch index 52ff8fc2a..53b705be8 100644 --- a/patches/todo/server/0268-Config-to-not-let-coral-die.patch +++ b/patches/server/0260-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f31c457aa8bbccb4b9a6db9ab73eaeb2094140b7..2e1da0979b9672a4361dddf97bd8359a30c4d943 100644 +index 8107a8c01bccbad7e6896f95d4a7bae52f57ce3a..1a9b1e0f2ffe47408a83e9de2fd2f258b6dd8595 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -821,6 +821,11 @@ public class PurpurWorldConfig { +@@ -830,6 +830,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/todo/server/0269-Add-local-difficulty-api.patch b/patches/server/0261-Add-local-difficulty-api.patch similarity index 74% rename from patches/todo/server/0269-Add-local-difficulty-api.patch rename to patches/server/0261-Add-local-difficulty-api.patch index fe1e8a59d..c76fb4ff0 100644 --- a/patches/todo/server/0269-Add-local-difficulty-api.patch +++ b/patches/server/0261-Add-local-difficulty-api.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 8f0234296397ca2d4a607dcea6093c6c606dc7d2..a5260ff68e91f2594bcc6693663c3da2e477e5dd 100644 +index 439857a814212b36e475461a01b320731a10b86d..2456d3710592dfc62b60dd609602306a20bd825a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2284,6 +2284,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { - return (this.getHandle().dragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().dragonFight()); +@@ -2278,6 +2278,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { + return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } + // Purpur start diff --git a/patches/todo/server/0270-Add-toggle-for-RNG-manipulation.patch b/patches/server/0262-Add-toggle-for-RNG-manipulation.patch similarity index 86% rename from patches/todo/server/0270-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0262-Add-toggle-for-RNG-manipulation.patch index 68267ccd6..42662a13d 100644 --- a/patches/todo/server/0270-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0262-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index cf7eb47706b5344fa7619aeda88c9641bda0ad42..fe0b002a8ebf2f8495bab456854483c341e6a14e 100644 +index ed73296c9c2e07c3b24067946f996c13aa777cbb..61699b09ab5005dec792b276ccaa62599dae62f7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -580,7 +580,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -542,7 +542,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -20,7 +20,7 @@ index cf7eb47706b5344fa7619aeda88c9641bda0ad42..fe0b002a8ebf2f8495bab456854483c3 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 2a2b56940cd39ca0f14dc8246b41cf6640caa3bd..31c89a6b8f766e1fd03608723c2d03f7f64e2e9b 100644 +index b4d3ee520e8c10755ad0c608b4660d6213fcb5ca..e6910b5ee3828ca2242d3358b9378286bb9de0f8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -46,7 +46,7 @@ public class Squid extends WaterAnimal { @@ -33,10 +33,10 @@ index 2a2b56940cd39ca0f14dc8246b41cf6640caa3bd..31c89a6b8f766e1fd03608723c2d03f7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e1da0979b9672a4361dddf97bd8359a30c4d943..7769ceb691f5563843d69463f89c3c49b095a3f4 100644 +index 1a9b1e0f2ffe47408a83e9de2fd2f258b6dd8595..ffde033727a1587cf679a9626b562a17d6048539 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -206,9 +206,11 @@ public class PurpurWorldConfig { +@@ -210,9 +210,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/todo/server/0271-Send-client-custom-name-of-BE.patch b/patches/server/0263-Send-client-custom-name-of-BE.patch similarity index 89% rename from patches/todo/server/0271-Send-client-custom-name-of-BE.patch rename to patches/server/0263-Send-client-custom-name-of-BE.patch index 396f1da6e..792957da9 100644 --- a/patches/todo/server/0271-Send-client-custom-name-of-BE.patch +++ b/patches/server/0263-Send-client-custom-name-of-BE.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Send client custom name of BE diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 64c55f3ebdbc27f7f0cea38247ff7b35fa99e341..e438e7e018f643d82ddf5efbf72779876c516d1a 100644 +index 2f19f6ac5de454845f5d13a3ebb93af625b2afc8..3431f1a00ae2918b91a6b7a449e613e6e12ff6d4 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -206,10 +206,24 @@ public abstract class BlockEntity { +@@ -205,10 +205,24 @@ public abstract class BlockEntity { @Nullable public Packet getUpdatePacket() { diff --git a/patches/todo/server/0272-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch similarity index 92% rename from patches/todo/server/0272-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch rename to patches/server/0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch index da8d7845d..f857deebc 100644 --- a/patches/todo/server/0272-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch +++ b/patches/server/0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch @@ -85,19 +85,19 @@ index 574ebb3a2fcd0e4e426a8a7ee88d722ed3b9c3f5..842b921799111789b37a34b76644c921 } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index c318f0b6d956c19d16b13c1aa99beda704d52027..45d864679816cb39420e079d37220a967e9d71d1 100644 +index 0f6f14f3ddf18ef111d37434b8c2659c9a6484b9..57bdbfd436feb2004f8c1a45f4a1658e7167582b 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -111,6 +111,7 @@ import org.bukkit.event.world.StructureGrowEvent; +@@ -113,6 +113,7 @@ import org.bukkit.event.world.StructureGrowEvent; public final class ItemStack { + public boolean isExactRecipeIngredient = false; // PaperPR public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(BuiltInRegistries.ITEM.byNameCodec().fieldOf("id").forGetter((itemstack) -> { - return itemstack.item; + return instance.group(BuiltInRegistries.ITEM.byNameCodec().fieldOf("id").forGetter(ItemStack::getItem), Codec.INT.fieldOf("Count").forGetter(ItemStack::getCount), CompoundTag.CODEC.optionalFieldOf("tag").forGetter((itemstack) -> { + return Optional.ofNullable(itemstack.getTag()); diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index dbc3040bc087a6016a491caf76019663c1cd1b4c..e24034d1ce4bb529de084aab69a531227e0c2f79 100644 +index 3ca086418ad037c48775db73d2b9c410acf1e326..f47eab4c31925f51de4a6bc8be730281cb3388fc 100644 --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java @@ -51,7 +51,11 @@ public final class Ingredient implements Predicate { diff --git a/patches/todo/server/0273-Allow-custom-ChatDecorators.patch b/patches/server/0265-Allow-custom-ChatDecorators.patch similarity index 90% rename from patches/todo/server/0273-Allow-custom-ChatDecorators.patch rename to patches/server/0265-Allow-custom-ChatDecorators.patch index cc7ca5284..82f94d4b4 100644 --- a/patches/todo/server/0273-Allow-custom-ChatDecorators.patch +++ b/patches/server/0265-Allow-custom-ChatDecorators.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6349ef5221109b7c46a437ca069e802a7895a229..b710474e2a714a6502e0256c12fcfcba7af8e142 100644 +index e059da8ea6925797b4aca13e937dc843888c32c6..17c20539170e48187bfc356f5cb905f4ae71409b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2667,6 +2667,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -387,6 +388,7 @@ public class PurpurWorldConfig { +@@ -391,6 +392,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/todo/server/0281-Add-skeleton-bow-accuracy-option.patch b/patches/server/0271-Add-skeleton-bow-accuracy-option.patch similarity index 75% rename from patches/todo/server/0281-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0271-Add-skeleton-bow-accuracy-option.patch index d96904afd..85c7b81b2 100644 --- a/patches/todo/server/0281-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0271-Add-skeleton-bow-accuracy-option.patch @@ -5,32 +5,32 @@ Subject: [PATCH] Add skeleton bow accuracy option diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 32a303f9ac9768daf621e3aa561cd6b31e5f5dff..9c8713ef3aeb2ff203bd0328d15d80c2d78d09e9 100644 +index 5ce17aec68ef65436599fde0e8d8d8c31c8a246a..0ea8ccd40729a6ddf09c4757e165460fd6d94dc9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -182,7 +182,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -180,7 +180,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo double d2 = target.getZ() - this.getZ(); double d3 = Math.sqrt(d0 * d0 + d2 * d2); -- entityarrow.shoot(d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, (float) (14 - this.level.getDifficulty().getId() * 4)); -+ entityarrow.shoot(d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, this.level.purpurConfig.skeletonBowAccuracyMap.getOrDefault(this.level.getDifficulty().getId(), (float) (14 - this.level.getDifficulty().getId() * 4))); // Purpur +- entityarrow.shoot(d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, (float) (14 - this.level().getDifficulty().getId() * 4)); ++ entityarrow.shoot(d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, this.level().purpurConfig.skeletonBowAccuracyMap.getOrDefault(this.level().getDifficulty().getId(), (float) (14 - this.level().getDifficulty().getId() * 4))); // Purpur // CraftBukkit start org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 890697f97c5eb91ced0e31069c64139b99a902f1..121f08d682afad6d30e72b32950f69db5dd8b646 100644 +index e8b61afb7e64cf1fc5cab49bc66f48cb9bbc71fc..c15c2b51d8818e50355fd7f77a05a89b023e3460 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2427,6 +2427,8 @@ public class PurpurWorldConfig { +@@ -2090,6 +2090,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; + public String skeletonBowAccuracy = "14 - difficulty * 4"; + public Map skeletonBowAccuracyMap = new HashMap<>(); private void skeletonSettings() { - skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); - skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2441,6 +2443,18 @@ public class PurpurWorldConfig { + if (PurpurConfig.version < 10) { + double oldValue = getDouble("mobs.skeleton.attributes.max-health", skeletonMaxHealth); +@@ -2101,6 +2103,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); @@ -48,4 +48,4 @@ index 890697f97c5eb91ced0e31069c64139b99a902f1..121f08d682afad6d30e72b32950f69db + } } - public boolean skeletonHorseRidableInWater = true; + public double skeletonHorseMaxHealthMin = 15.0D; diff --git a/patches/todo/server/0282-Allay-respect-item-NBT.patch b/patches/server/0272-Allay-respect-item-NBT.patch similarity index 62% rename from patches/todo/server/0282-Allay-respect-item-NBT.patch rename to patches/server/0272-Allay-respect-item-NBT.patch index 3549ad758..b9dae0290 100644 --- a/patches/todo/server/0282-Allay-respect-item-NBT.patch +++ b/patches/server/0272-Allay-respect-item-NBT.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Allay respect item NBT diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 1c136aa0d6dcad18b5e6e2084d2c166105d54a3a..e95540122ae6a486ce12a5f50fb4d2d073239554 100644 +index 339c70f101d026a100a801e66cf514b3329a89d2..cbfe6e47c480890ee98ce86921fb018137abcb0f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -409,9 +409,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier { +@@ -370,9 +370,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override public boolean wantsToPickUp(ItemStack stack) { - ItemStack itemstack1 = this.getItemInHand(InteractionHand.MAIN_HAND); - -- return !itemstack1.isEmpty() && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.inventory.canAddItem(stack) && this.allayConsidersItemEqual(itemstack1, stack); +- return !itemstack1.isEmpty() && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.inventory.canAddItem(stack) && this.allayConsidersItemEqual(itemstack1, stack); + // Purpur start -+ if (!this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + return false; + } + ItemStack itemStack = this.getItemInHand(InteractionHand.MAIN_HAND); @@ -29,7 +29,7 @@ index 1c136aa0d6dcad18b5e6e2084d2c166105d54a3a..e95540122ae6a486ce12a5f50fb4d2d0 + if (!this.inventory.canAddItem(stack)) { + return false; + } -+ for (String tag : this.level.purpurConfig.allayRespectNBT) { ++ for (String tag : this.level().purpurConfig.allayRespectNBT) { + if (stack.hasTag() && itemStack.hasTag()) { + Tag tag1 = stack.getTag().get(tag); + Tag tag2 = itemStack.getTag().get(tag); @@ -44,20 +44,19 @@ index 1c136aa0d6dcad18b5e6e2084d2c166105d54a3a..e95540122ae6a486ce12a5f50fb4d2d0 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 121f08d682afad6d30e72b32950f69db5dd8b646..1b5d3d214b7390cb960f5ee180a21a2bc54e8123 100644 +index c15c2b51d8818e50355fd7f77a05a89b023e3460..38d30017367320aeeb3c6d7524b2e800ba5a8cf5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,10 +1070,13 @@ public class PurpurWorldConfig { - public boolean allayRidable = false; - public boolean allayRidableInWater = true; - public boolean allayControllable = true; -+ public List allayRespectNBT = new ArrayList<>(); - private void allaySettings() { - allayRidable = getBoolean("mobs.allay.ridable", allayRidable); - allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater); - allayControllable = getBoolean("mobs.allay.controllable", allayControllable); -+ allayRespectNBT.clear(); -+ getList("mobs.allay.respect-nbt", new ArrayList<>()).forEach(key -> allayRespectNBT.add(key.toString())); +@@ -1049,6 +1049,12 @@ public class PurpurWorldConfig { + turtleEggsTramplingFeatherFalling = getBoolean("blocks.turtle_egg.feather-fall-distance-affects-trampling", turtleEggsTramplingFeatherFalling); } - public boolean axolotlRidable = false; ++ public List allayRespectNBT = new ArrayList<>(); ++ private void allaySettings() { ++ allayRespectNBT.clear(); ++ getList("mobs.allay.respect-nbt", new ArrayList<>()).forEach(key -> allayRespectNBT.add(key.toString())); ++ } ++ + public double axolotlMaxHealth = 14.0D; + public int axolotlBreedingTicks = 6000; + public boolean axolotlTakeDamageFromWater = false; diff --git a/patches/todo/server/0283-Add-death-screen-API.patch b/patches/server/0273-Add-death-screen-API.patch similarity index 77% rename from patches/todo/server/0283-Add-death-screen-API.patch rename to patches/server/0273-Add-death-screen-API.patch index 39f7507d1..46d10684e 100644 --- a/patches/todo/server/0283-Add-death-screen-API.patch +++ b/patches/server/0273-Add-death-screen-API.patch @@ -5,21 +5,21 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java -index 53b75f5737a910ffc5448cd9a85eae57f9c1488f..ea95873dd034779e56a8b924cd27f9375be05daf 100644 +index 76a62d872bc2ad12efd9522d8dd445b8d2342525..075a891413d072998e6d468e76d839e1a3bf7da9 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java +++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java -@@ -9,6 +9,7 @@ public class ClientboundPlayerCombatKillPacket implements Packet { private final int playerId; - private final int killerId; private final Component message; + public net.kyori.adventure.text.Component adventure$message; // Purpur - public ClientboundPlayerCombatKillPacket(CombatTracker damageTracker, Component message) { - this(damageTracker.getMob().getId(), damageTracker.getKillerId(), message); -@@ -30,6 +31,12 @@ public class ClientboundPlayerCombatKillPacket implements Packet 0; // Purpur @@ -48,10 +48,10 @@ index 2bd58d13d4c48fdddee56e2b417b68fe15072386..beb05039926e1fb7a656dfcd0c503f82 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 11560dc4ab6eb33fcb1ffcfbd49ea663d754fd8a..af8cb1f1f0c128923495f51e4828003133ce766b 100644 +index f78d0e6241930909b7b227539c8698eabc270490..117f406f5cf7d421931315763d23f68c7266bfec 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3454,6 +3454,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3449,6 +3449,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } } } @@ -65,10 +65,10 @@ index 11560dc4ab6eb33fcb1ffcfbd49ea663d754fd8a..af8cb1f1f0c128923495f51e48280031 boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4142820c3053d77d4ae7186fec968d624f893056..7a02cecaaef511c0db4708a1ce9eb885c1cfe028 100644 +index df67cee913c64fa1cac3aff8522bf656eb6ff653..8ffa65bb262bdd391755b9d255ad0e68b32bb31d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -549,4 +549,9 @@ public class PurpurConfig { +@@ -547,4 +547,9 @@ public class PurpurConfig { } }); } diff --git a/patches/todo/server/0287-Fix-MC-123848.patch b/patches/server/0276-Fix-MC-123848.patch similarity index 91% rename from patches/todo/server/0287-Fix-MC-123848.patch rename to patches/server/0276-Fix-MC-123848.patch index 2e439b84b..52ae9474f 100644 --- a/patches/todo/server/0287-Fix-MC-123848.patch +++ b/patches/server/0276-Fix-MC-123848.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix MC-123848 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 165382f5da5307d6f6eae971a565ab1ae3046891..25158e04c39146218b21ce5d5c963a24be68b2e2 100644 +index 43f9733d4cc180b3103173d86bf2e8742f87de2a..5dcd53d1a8665ed2a63f87e1ab788a64c3e38b71 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -293,6 +293,13 @@ public class ItemFrame extends HangingEntity { diff --git a/patches/todo/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch b/patches/server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch similarity index 89% rename from patches/todo/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch rename to patches/server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch index f0ff1766f..7604740dc 100644 --- a/patches/todo/server/0288-Implement-squid-colors-for-rainglow-fabric-mod.patch +++ b/patches/server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement squid colors for rainglow fabric mod diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index c2309434b4d48a44587590623ac98dbf997b9578..6f723171fa71d74b351b5cf0cd167bb6f7ca1691 100644 +index 0a2e0debc8e38cc32059c26d15cbbb0147622336..edfa9778c4dcabcd4bbf99b969c65d26b560b2f3 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.Blocks; @@ -16,7 +16,7 @@ index c2309434b4d48a44587590623ac98dbf997b9578..6f723171fa71d74b351b5cf0cd167bb6 public GlowSquid(EntityType type, Level world) { super(type, world); -@@ -65,6 +66,7 @@ public class GlowSquid extends Squid { +@@ -52,6 +53,7 @@ public class GlowSquid extends Squid { protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_DARK_TICKS_REMAINING, 0); @@ -24,7 +24,7 @@ index c2309434b4d48a44587590623ac98dbf997b9578..6f723171fa71d74b351b5cf0cd167bb6 } @Override -@@ -91,12 +93,14 @@ public class GlowSquid extends Squid { +@@ -78,12 +80,14 @@ public class GlowSquid extends Squid { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("DarkTicksRemaining", this.getDarkTicksRemaining()); @@ -40,25 +40,23 @@ index c2309434b4d48a44587590623ac98dbf997b9578..6f723171fa71d74b351b5cf0cd167bb6 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b5d3d214b7390cb960f5ee180a21a2bc54e8123..eb35509626914354af3b6a54387b5e9673766697 100644 +index 38d30017367320aeeb3c6d7524b2e800ba5a8cf5..9b2dc09bdc18b74b23ec0fa21ade6793f7df26b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1679,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1517,11 +1517,13 @@ public class PurpurWorldConfig { public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; public boolean glowSquidAlwaysDropExp = false; + public GlowSquidColor.Mode glowSquidColorMode = GlowSquidColor.Mode.RAINBOW; private void glowSquidSettings() { - glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); - glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1686,6 +1687,7 @@ public class PurpurWorldConfig { + glowSquidMaxHealth = getDouble("mobs.glow_squid.attributes.max_health", glowSquidMaxHealth); glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); glowSquidAlwaysDropExp = getBoolean("mobs.glow_squid.always-drop-exp", glowSquidAlwaysDropExp); + glowSquidColorMode = GlowSquidColor.Mode.get(getString("mobs.glow_squid.rainglow-mode", glowSquidColorMode.toString())); } - public boolean goatRidable = false; + public double goatMaxHealth = 10.0D; diff --git a/src/main/java/org/purpurmc/purpur/entity/GlowSquidColor.java b/src/main/java/org/purpurmc/purpur/entity/GlowSquidColor.java new file mode 100644 index 0000000000000000000000000000000000000000..c90256f4c16ffdb2d8e767e837ea36ac7a6613be diff --git a/patches/todo/server/0289-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 92% rename from patches/todo/server/0289-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 307fb317c..10ad72e0e 100644 --- a/patches/todo/server/0289-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) 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 1ea5664e1e7dc73cbd2d1cc38c830a19ba985528..c6fddfa199e0c42e0556ed1ad380885a17208e37 100644 +index 57f89ff7ddcd738100f296ae7a21b3240ab374de..3d036c2a62262522d3b87554ee33c83169c4d123 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -72,6 +72,7 @@ public abstract class AbstractArrow extends Projectile { @@ -48,10 +48,10 @@ index 220513d3fd5645322886522ea4f6b8c55d043b3c..d45a2f49c82d00801578c34e5f5277fc org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(entityhuman, stack, itemstack1, entityarrow, entityhuman.getUsedItemHand(), f, !flag1); if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 0c566b14191c8438389150f0c6e70bcfa3d1f53c..310e03d8cc07f95927d9806fc80a4215283d2ef5 100644 +index 1a2ce6fb16e8fed7c90ce99510b25531087a0699..5ddda49ca692b6397a8ce896baf449dc0c6183c1 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -294,6 +294,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { +@@ -295,6 +295,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { entityarrow.setPierceLevel((byte) i); } @@ -67,7 +67,7 @@ index 0c566b14191c8438389150f0c6e70bcfa3d1f53c..310e03d8cc07f95927d9806fc80a4215 } diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 60512d08a45670a164a9b93191aafa40b2c2287c..d35432087c70ce66b74d1e27df19f462f22b1aa1 100644 +index 6d1573161f0d8c7999f84925ba7bbf536ee9583a..c32cbe6065ecb6810f352b8a3598c21e42e60e1d 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java @@ -82,6 +82,14 @@ public class TridentItem extends Item implements Vanishable { @@ -104,10 +104,10 @@ index 31918fa2eb38e42a5ea5366e559f25ea9d7d59ae..15d8e9261a89da30529ac347462c5209 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7a02cecaaef511c0db4708a1ce9eb885c1cfe028..af875d966081b6e9f0d6a2680cff7f843c8dea05 100644 +index 8ffa65bb262bdd391755b9d255ad0e68b32bb31d..e7e72c4f7a1fcfb1b6372bb42c08961d0bf2738d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -554,4 +554,9 @@ public class PurpurConfig { +@@ -552,4 +552,9 @@ public class PurpurConfig { private static void fixNetworkSerializedCreativeItems() { fixNetworkSerializedItemsInCreative = getBoolean("settings.fix-network-serialized-items-in-creative", fixNetworkSerializedItemsInCreative); } diff --git a/patches/todo/server/0290-Configurable-block-blast-resistance.patch b/patches/server/0279-Configurable-block-blast-resistance.patch similarity index 87% rename from patches/todo/server/0290-Configurable-block-blast-resistance.patch rename to patches/server/0279-Configurable-block-blast-resistance.patch index b7d6b204c..eff9073af 100644 --- a/patches/todo/server/0290-Configurable-block-blast-resistance.patch +++ b/patches/server/0279-Configurable-block-blast-resistance.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Configurable block blast resistance diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 532a9920bccfc90ee75ac21714812e88d47b9ebb..bee42ce7c1cb0f5ebd4890c02bc9c5dd727f7fd6 100644 +index 5ac102afde62c08f36886b466010ccfedabfa05e..942ce713afe27ec75d849877a88721ef6334fafa 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -80,7 +80,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -81,7 +81,7 @@ public abstract class BlockBehaviour implements FeatureElement { + protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; - public final Material material; // Purpur - protected -> public public final boolean hasCollision; - protected final float explosionResistance; + public float explosionResistance; // Purpur - protected final -> public @@ -18,7 +18,7 @@ index 532a9920bccfc90ee75ac21714812e88d47b9ebb..bee42ce7c1cb0f5ebd4890c02bc9c5dd protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java -index 3a04cb4c646c07abf4338c70c865a4c4cb34b1bc..b05b4d3d97bca159c297f150005b5ab5bf6087e0 100644 +index b77cdbd8a7395e8442081c6a2b14695d62c9ef03..f3d4a4196847e26934b6d2ed592f0ddb0e53182b 100644 --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java @@ -239,7 +239,7 @@ public abstract class LavaFluid extends FlowingFluid { @@ -44,10 +44,10 @@ index ec6c63075306f9e5389e83641d2c8a82369ddc6b..0f16deddd8cbb506ef7886f57ae640a4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index af875d966081b6e9f0d6a2680cff7f843c8dea05..8972bbbaca23f771fb5e10ee4099a420a0ec3ccd 100644 +index e7e72c4f7a1fcfb1b6372bb42c08961d0bf2738d..3230dbbe472d3d2a6269cf216e783fab5b8093ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -559,4 +559,19 @@ public class PurpurConfig { +@@ -557,4 +557,19 @@ public class PurpurConfig { private static void fixProjectileLootingTransfer() { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/todo/server/0291-Configurable-block-fall-damage-modifiers.patch b/patches/server/0280-Configurable-block-fall-damage-modifiers.patch similarity index 92% rename from patches/todo/server/0291-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0280-Configurable-block-fall-damage-modifiers.patch index 0b5bd4a80..fbfedc87e 100644 --- a/patches/todo/server/0291-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0280-Configurable-block-fall-damage-modifiers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block fall damage modifiers diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index ea448ef3e072f4144e6f506f1f38399ecd571d76..19d31064eb271ee02115a75cde383796c899e7f7 100644 +index e8405a57fb88e63b63baaf00645c417633bdc0f2..2b66ddafaaca17f64d1e7502dfa4d7576e3e032f 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -174,7 +174,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -173,7 +173,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -18,10 +18,10 @@ index ea448ef3e072f4144e6f506f1f38399ecd571d76..19d31064eb271ee02115a75cde383796 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 33d3a3df277e751a3fb0d4421bf9ea2e1173763c..773162c3456945605fb664114508622f7d2fcec8 100644 +index 2feca2820d1760defe0ef784f9737ab9e9ec800f..3a935e4a16f1c71579d7021d3ad06d1f9b76e033 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -96,6 +96,10 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -94,6 +94,10 @@ public class Block extends BlockBehaviour implements ItemLike { public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -32,7 +32,7 @@ index 33d3a3df277e751a3fb0d4421bf9ea2e1173763c..773162c3456945605fb664114508622f // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -510,7 +514,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -498,7 +502,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,10 +54,10 @@ index cfbe1dae76db76cf54a4f5d72aca72d5e893859e..74cb10230d459ac9f300a9d59af504d2 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8972bbbaca23f771fb5e10ee4099a420a0ec3ccd..290a66b51dc6b86b006b577754d1030def288cf7 100644 +index 3230dbbe472d3d2a6269cf216e783fab5b8093ee..a8b217e3fe58b6435ef380a356db71ebcc557752 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -574,4 +574,50 @@ public class PurpurConfig { +@@ -572,4 +572,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/todo/server/0292-Language-API.patch b/patches/server/0281-Language-API.patch similarity index 93% rename from patches/todo/server/0292-Language-API.patch rename to patches/server/0281-Language-API.patch index 8fa736be1..ab4d99ea3 100644 --- a/patches/todo/server/0292-Language-API.patch +++ b/patches/server/0281-Language-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a3a7bf5dba5014df499eefb430b888743f1d2a4a..3310828edcabd2c24e3200dcb89d4e8ebd82cf16 100644 +index ce8179d33d5a6a187e16496731798e42488cb87a..b250de8151c07ec960de8b6c4aff9d0ea852773b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -324,6 +324,20 @@ public final class CraftServer implements Server { diff --git a/patches/todo/server/0293-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0282-Milk-Keeps-Beneficial-Effects.patch similarity index 77% rename from patches/todo/server/0293-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0282-Milk-Keeps-Beneficial-Effects.patch index 39a66109b..548a3a678 100644 --- a/patches/todo/server/0293-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0282-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ac323afc8491749969e53aa3841bc684d79c48d3..b67660cda74a4754d1701e746aca99bde868c150 100644 +index 923f48e002f92a761619dbfb125d6154f4a328c5..a293a8b74837386c2e1dea17c21d0a520ba7e062 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1107,6 +1107,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1125,6 +1125,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -17,20 +17,20 @@ index ac323afc8491749969e53aa3841bc684d79c48d3..b67660cda74a4754d1701e746aca99bd if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index fef9fd3e50bba3d0fffa3d61b60f3bb8cad081e0..a6a4d5203cb5f35306f8225e56681bc25e06beed 100644 +index 1c81826a5bb71298cbcb9b3a5715d56bc8eec8be..72dbaee9858d9bb04b2bceb25b10b51ec61ead24 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -113,7 +113,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill - return this.canDrinkPotion && this.level.isNight() && !entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API +@@ -93,7 +93,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill + return this.canDrinkPotion && this.level().isNight() && !entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API })); this.goalSelector.addGoal(0, new UseItemGoal<>(this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> { -- return canDrinkMilk && this.level.isDay() && entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API -+ return level.purpurConfig.milkClearsBeneficialEffects && canDrinkMilk && this.level.isDay() && entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API // Purpur +- return this.canDrinkMilk && this.level().isDay() && entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API ++ return level().purpurConfig.milkClearsBeneficialEffects && this.canDrinkMilk && this.level().isDay() && entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API // Purpur })); this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98545b9c06f4b5f1979633ff963bb5eb5e5f8a9c..afeab1031c329f5cfd23066f4d28827bc84c72ae 100644 +index 9b2dc09bdc18b74b23ec0fa21ade6793f7df26b9..8d2786689cca301f8162163540a6dfd8e8a09101 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { @@ -41,7 +41,7 @@ index 98545b9c06f4b5f1979633ff963bb5eb5e5f8a9c..afeab1031c329f5cfd23066f4d28827b public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean persistentTileEntityDisplayNames = false; -@@ -156,6 +157,7 @@ public class PurpurWorldConfig { +@@ -158,6 +159,7 @@ public class PurpurWorldConfig { fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/todo/server/0294-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 76% rename from patches/todo/server/0294-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch index 4b8504bd4..399485ead 100644 --- a/patches/todo/server/0294-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch +++ b/patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch @@ -5,12 +5,12 @@ Subject: [PATCH] MC-121706 - Fix mobs not looking up and down when strafing diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -index 6558b0d4bea99948fdc2b51751f3cfdc239d4b67..d85dabebbbbe213e791b8a3be3c6df05b959e40c 100644 +index 87fb10096fc9dade33c663234b1cecc34d3d77bb..874c7b29a261b1b5ad6e86ca219ff935870aecb0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -@@ -111,9 +111,9 @@ public class RangedBowAttackGoal extends Go +@@ -119,9 +119,9 @@ public class RangedBowAttackGoal extends Go + } - this.mob.getMoveControl().strafe(this.strafingBackwards ? -0.5F : 0.5F, this.strafingClockwise ? 0.5F : -0.5F); this.mob.lookAt(livingEntity, 30.0F, 30.0F); - } else { + } //else { // Purpur - fix MC-121706 diff --git a/patches/todo/server/0295-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0284-Add-log-suppression-for-LibraryLoader.patch similarity index 91% rename from patches/todo/server/0295-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0284-Add-log-suppression-for-LibraryLoader.patch index f988ca219..4cd12cefd 100644 --- a/patches/todo/server/0295-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0284-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 290a66b51dc6b86b006b577754d1030def288cf7..c3878aed434bdf490cbaf45064fa5a6c5814476f 100644 +index a8b217e3fe58b6435ef380a356db71ebcc557752..3bdba6932c1acac79c4772569b8fa27104bcf35b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -470,11 +470,14 @@ public class PurpurConfig { +@@ -468,11 +468,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/todo/server/0296-Allow-Transparent-Blocks-In-Enchanting-Box.patch b/patches/server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch similarity index 71% rename from patches/todo/server/0296-Allow-Transparent-Blocks-In-Enchanting-Box.patch rename to patches/server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch index 52a9dca2c..2a27e1703 100644 --- a/patches/todo/server/0296-Allow-Transparent-Blocks-In-Enchanting-Box.patch +++ b/patches/server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch @@ -5,25 +5,25 @@ Subject: [PATCH] Allow Transparent Blocks In Enchanting Box diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -index 37a888e5db65b927094b43775ae9d4098244f809..c4a91d7f1320027ee6a2b364303c01ebbacde584 100644 +index 286f34eef22a85be3fe9747dc3c3f9a7d51f437c..ff2b97e4feff3eefe50d2715437a68a8b16281fc 100644 --- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -@@ -42,6 +42,10 @@ public class EnchantmentTableBlock extends BaseEntityBlock { +@@ -43,6 +43,10 @@ public class EnchantmentTableBlock extends BaseEntityBlock { } - public static boolean isValidBookShelf(Level world, BlockPos tablePos, BlockPos bookshelfOffset) { + public static boolean isValidBookShelf(Level world, BlockPos tablePos, BlockPos providerOffset) { + // Purpur Start + if(org.purpurmc.purpur.PurpurConfig.allowTransparentBlocksInEnchantmentBox){ -+ return world.getBlockState(tablePos.offset(bookshelfOffset)).is(Blocks.BOOKSHELF) && !world.getBlockState(tablePos.offset(bookshelfOffset.getX() / 2, bookshelfOffset.getY(), bookshelfOffset.getZ() / 2)).isSuffocating(world, bookshelfOffset); ++ return world.getBlockState(tablePos.offset(providerOffset)).is(BlockTags.ENCHANTMENT_POWER_PROVIDER) && !world.getBlockState(tablePos.offset(providerOffset.getX() / 2, providerOffset.getY(), providerOffset.getZ() / 2)).isSuffocating(world, providerOffset); + } // Purpur end - return world.getBlockState(tablePos.offset(bookshelfOffset)).is(Blocks.BOOKSHELF) && world.isEmptyBlock(tablePos.offset(bookshelfOffset.getX() / 2, bookshelfOffset.getY(), bookshelfOffset.getZ() / 2)); + return world.getBlockState(tablePos.offset(providerOffset)).is(BlockTags.ENCHANTMENT_POWER_PROVIDER) && world.getBlockState(tablePos.offset(providerOffset.getX() / 2, providerOffset.getY(), providerOffset.getZ() / 2)).is(BlockTags.ENCHANTMENT_POWER_TRANSMITTER); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c3878aed434bdf490cbaf45064fa5a6c5814476f..81409df1af15b68971b1efd203b9ad8d87ca7b6e 100644 +index 3bdba6932c1acac79c4772569b8fa27104bcf35b..d8e347b45ae89fbea403e4754c42b48776fcdfa0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -415,6 +415,7 @@ public class PurpurConfig { +@@ -413,6 +413,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; public static boolean allowShearsLooting = false; @@ -31,7 +31,7 @@ index c3878aed434bdf490cbaf45064fa5a6c5814476f..81409df1af15b68971b1efd203b9ad8d public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -438,6 +439,7 @@ public class PurpurConfig { +@@ -436,6 +437,7 @@ public class PurpurConfig { allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); allowShearsLooting = getBoolean("settings.enchantment.allow-looting-on-shears", allowShearsLooting); diff --git a/patches/todo/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 84% rename from patches/todo/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch index bab5586b3..553eff47f 100644 --- a/patches/todo/server/0297-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,22 +24,22 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc5 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e89940e9add24fcd13287dc1afe1089260bd718..6943202332bf20392afc63617584ce2a07faa0dd 100644 +index 8d2786689cca301f8162163540a6dfd8e8a09101..4efefbdb94cfd153f82be186fd9992960ba371a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1335,6 +1335,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1259,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; + public boolean creeperEncircleTarget = false; private void creeperSettings() { - creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); - creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1353,6 +1354,7 @@ public class PurpurWorldConfig { + if (PurpurConfig.version < 10) { + double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); +@@ -1274,6 +1275,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); + creeperEncircleTarget = getBoolean("mobs.creeper.encircle-target", creeperEncircleTarget); } - public boolean dolphinRidable = false; + public double dolphinMaxHealth = 10.0D; diff --git a/patches/todo/server/0298-Fire-Immunity-API.patch b/patches/server/0287-Fire-Immunity-API.patch similarity index 84% rename from patches/todo/server/0298-Fire-Immunity-API.patch rename to patches/server/0287-Fire-Immunity-API.patch index ef04fac6e..3e1c4575d 100644 --- a/patches/todo/server/0298-Fire-Immunity-API.patch +++ b/patches/server/0287-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 889db414e3442f51f77be097806e52b4941362d5..3e2e2965270090cb2cf12b6c62cc13d3743e0604 100644 +index 61699b09ab5005dec792b276ccaa62599dae62f7..123d67729f0219677e5f1e82db2dccdfe65b7adb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -401,6 +401,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -404,6 +404,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean collidingWithWorldBorder; // Paper @@ -16,7 +16,7 @@ index 889db414e3442f51f77be097806e52b4941362d5..3e2e2965270090cb2cf12b6c62cc13d3 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1678,7 +1679,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1741,7 +1742,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 889db414e3442f51f77be097806e52b4941362d5..3e2e2965270090cb2cf12b6c62cc13d3 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2340,6 +2341,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2411,6 +2412,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { nbt.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 889db414e3442f51f77be097806e52b4941362d5..3e2e2965270090cb2cf12b6c62cc13d3 return nbt; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2508,6 +2514,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2579,6 +2585,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,14 +50,13 @@ index 889db414e3442f51f77be097806e52b4941362d5..3e2e2965270090cb2cf12b6c62cc13d3 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index bdb6485b7b3544e1b264a44ae919277221ce11ba..97ea9612343e4288decd8daa9327a7e781877a8e 100644 +index 270d38696f95e259dd036c5db2883e406e81d3fa..973192ef61cd817611581c36d0d0aa5bcb2503c0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1473,5 +1473,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - public boolean isRidableInWater() { - return !getHandle().dismountsUnderwater(); +@@ -209,6 +209,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + this.entity = entity; } -+ + + @Override + public boolean isImmuneToFire() { + return getHandle().fireImmune(); @@ -67,8 +66,10 @@ index bdb6485b7b3544e1b264a44ae919277221ce11ba..97ea9612343e4288decd8daa9327a7e7 + public void setImmuneToFire(Boolean fireImmune) { + getHandle().immuneToFire = fireImmune; + } - // Purpur end - } ++ + @Override + public boolean isInDaylight() { + return getHandle().isSunBurnTick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java index 09001578b88658c44d0661d340a0ee0f1ded6911..ea15690da167ec5e653da6f5afb55b33c45d1622 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java diff --git a/patches/todo/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 77% rename from patches/todo/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index c153e1982..09e55a59b 100644 --- a/patches/todo/server/0299-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,22 +5,30 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3e2e2965270090cb2cf12b6c62cc13d3743e0604..e71eca3ddbbeb3168dd73433b6d6ffe9f6755f77 100644 +index 123d67729f0219677e5f1e82db2dccdfe65b7adb..dd9b10e0b9da68cf4b71613770f8ca428f25ce73 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -900,6 +900,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -7,6 +7,7 @@ import com.google.common.collect.Lists; + import com.google.common.collect.Sets; + import com.google.common.collect.UnmodifiableIterator; + import com.mojang.logging.LogUtils; ++import io.papermc.paper.util.MCUtil; + import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap; + import it.unimi.dsi.fastutil.objects.Object2DoubleMap; + import java.util.Arrays; +@@ -858,6 +859,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end + if (this.level.purpurConfig.teleportOnNetherCeilingDamage && this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER && this instanceof ServerPlayer player) player.teleport(MCUtil.toLocation(this.level, this.level.getSharedSpawnPos())); else // Purpur - this.outOfWorld(); + this.onBelowWorld(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6943202332bf20392afc63617584ce2a07faa0dd..3bccb20fb131878c3bbbefa833a8b64a5dc599d6 100644 +index 4efefbdb94cfd153f82be186fd9992960ba371a3..eae7d46957e06c80f21ac8cfc4ffa8db2bff2064 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -421,6 +421,7 @@ public class PurpurWorldConfig { +@@ -425,6 +425,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +36,7 @@ index 6943202332bf20392afc63617584ce2a07faa0dd..3bccb20fb131878c3bbbefa833a8b64a public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -452,6 +453,7 @@ public class PurpurWorldConfig { +@@ -456,6 +457,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/todo/server/0300-Added-got-ram-event.patch b/patches/server/0289-Added-got-ram-event.patch similarity index 86% rename from patches/todo/server/0300-Added-got-ram-event.patch rename to patches/server/0289-Added-got-ram-event.patch index 302a44cfa..16899cbb9 100644 --- a/patches/todo/server/0300-Added-got-ram-event.patch +++ b/patches/server/0289-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event 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 8129ad2ca6e0b4c6ca586dc221dcce1e883def9b..f5c0fc9f30bdf7935200b875ada0ff1011fdb034 100644 +index c17692ff7fe82b6f3c1f1cc282f8c75f1b70664c..799390ae242935a7c4119dddd87d540badc21cc0 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 -@@ -422,6 +422,7 @@ public class Goat extends Animal { +@@ -402,6 +402,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/todo/server/0301-Log-skipped-entity-s-position.patch b/patches/server/0290-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/todo/server/0301-Log-skipped-entity-s-position.patch rename to patches/server/0290-Log-skipped-entity-s-position.patch index 584bfb4d7..f9bf9f644 100644 --- a/patches/todo/server/0301-Log-skipped-entity-s-position.patch +++ b/patches/server/0290-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 314a2a31079fcb7619ff9ebef8e6cf161f5c7c9c..3fc26a8976f4bfa28c2c6a862aac997d5f721f51 100644 +index b144543131bb756294e02e05f83002fe9abc8d96..932a9d634bbf208d41ddcf06d3395e4cd33a28c3 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -612,6 +612,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -610,6 +610,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/todo/server/0302-End-Crystal-Cramming.patch b/patches/server/0291-End-Crystal-Cramming.patch similarity index 84% rename from patches/todo/server/0302-End-Crystal-Cramming.patch rename to patches/server/0291-End-Crystal-Cramming.patch index 968e3003d..45e046042 100644 --- a/patches/todo/server/0302-End-Crystal-Cramming.patch +++ b/patches/server/0291-End-Crystal-Cramming.patch @@ -5,22 +5,22 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index a4fc0e9cb52bb5937effe5cd09f8bbefcf8dd531..e3fe5f18c77e36479eaeb7edfd2a3eb919c342d6 100644 +index ada7eba2beca5b0897fa2eb3567a639573f4e18d..4591fd93d94a4e68c7e23674d434ba019ad85607 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -83,6 +83,7 @@ public class EndCrystal extends Entity { +@@ -93,6 +93,7 @@ public class EndCrystal extends Entity { } } // Paper end + if (this.level.purpurConfig.endCrystalCramming > 0 && this.level.getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level.purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // Purpur } - // Purpur start + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bccb20fb131878c3bbbefa833a8b64a5dc599d6..74e094982005e4f6044e063b1e168a96c7e7d976 100644 +index eae7d46957e06c80f21ac8cfc4ffa8db2bff2064..ad1489bc7745f01eedfc3f439f86f125ffc1c30c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -864,6 +864,7 @@ public class PurpurWorldConfig { +@@ -873,6 +873,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 3bccb20fb131878c3bbbefa833a8b64a5dc599d6..74e094982005e4f6044e063b1e168a96 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -891,6 +892,7 @@ public class PurpurWorldConfig { +@@ -900,6 +901,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/todo/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 92% rename from patches/todo/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index f50a1dad6..d4876c150 100644 --- a/patches/todo/server/0303-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass 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 c787019b5cbadec81dd33ef4021708b9b423485a..8f82b0ce87afc8890c5b3386d5f6e22c48974b16 100644 +index cc03c02f290ee8d58a2fea54b1f977f49a2cec6e..49a2308832b24dc1eb839af786dbec9f046bdab6 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 @@ -165,6 +165,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -36,10 +36,10 @@ index c787019b5cbadec81dd33ef4021708b9b423485a..8f82b0ce87afc8890c5b3386d5f6e22c BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74e094982005e4f6044e063b1e168a96c7e7d976..820fe69d6eaa74c1d903770e56e7b436928a7fb4 100644 +index ad1489bc7745f01eedfc3f439f86f125ffc1c30c..e41de3240daa6080f8ec463489d2eb51f9370fa2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -758,11 +758,13 @@ public class PurpurWorldConfig { +@@ -767,11 +767,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/todo/server/0304-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0293-Add-attribute-clamping-and-armor-limit-config.patch similarity index 95% rename from patches/todo/server/0304-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0293-Add-attribute-clamping-and-armor-limit-config.patch index a5758a832..b15e84c66 100644 --- a/patches/todo/server/0304-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0293-Add-attribute-clamping-and-armor-limit-config.patch @@ -36,10 +36,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 81409df1af15b68971b1efd203b9ad8d87ca7b6e..be8b44daa0141151c973917a774aa07721647ed1 100644 +index d8e347b45ae89fbea403e4754c42b48776fcdfa0..5527d7708ba57ef8a3c9f472dfc0496551eb0e20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -565,6 +565,16 @@ public class PurpurConfig { +@@ -563,6 +563,16 @@ public class PurpurConfig { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/todo/server/0305-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0294-Config-to-remove-explosion-radius-clamp.patch similarity index 60% rename from patches/todo/server/0305-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0294-Config-to-remove-explosion-radius-clamp.patch index 696d5dcd1..b84318f45 100644 --- a/patches/todo/server/0305-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0294-Config-to-remove-explosion-radius-clamp.patch @@ -4,20 +4,8 @@ Date: Mon, 9 Jan 2023 19:45:55 -0500 Subject: [PATCH] Config to remove explosion radius clamp -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 790160cfcb113e046379c2fe5af32667faf3be8c..b6ac41633e91f6ee2755d1f05aac4c8046a4aa8a 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 -@@ -108,6 +108,7 @@ public class EnderDragon extends Mob implements Enemy { - - public EnderDragon(EntityType entitytypes, Level world) { - super(EntityType.ENDER_DRAGON, world); -+ this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // Purpur - moved instantiation from field - this.subEntities = new EnderDragonPart[]{this.head, this.neck, this.body, this.tail1, this.tail2, this.tail3, this.wing1, this.wing2}; - this.setHealth(this.getMaxHealth()); - this.noPhysics = true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 4392336d28aa3cc7a767a2e638e2227c16a597f4..4929149dde7630a2249a86f4ed0bf00ed3e75c84 100644 +index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..93e7e2fe1f4184719736e698563f493b1d31e8c0 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -86,7 +86,7 @@ public class Explosion { @@ -39,10 +27,10 @@ index 4392336d28aa3cc7a767a2e638e2227c16a597f4..4929149dde7630a2249a86f4ed0bf00e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bcefc3d5a0bab517d0ee06fd81dd6b040120cc6e..e8f0ec7eb707776e8746eae07e0fb1ac50cf7398 100644 +index e41de3240daa6080f8ec463489d2eb51f9370fa2..cf10d332625c77068a1793e6e5eedfe8c93e3a2a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -215,6 +215,11 @@ public class PurpurWorldConfig { +@@ -219,6 +219,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } diff --git a/patches/todo/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 94% rename from patches/todo/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch index 9dde829d8..3a0b113d2 100644 --- a/patches/todo/server/0306-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -5,7 +5,7 @@ Subject: [PATCH] bonemealable sugarcane, cactus, and netherwart diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index 2fffe4452d8f3fa5b9365dff1cfe5b5dab6bf2f8..ae2ac1c24c1e502a1968a3008273096281d5f1ca 100644 +index c2ca3432a47124d02e1aaf8ffb621f9a2c7d7a62..0d5f87d24231f6d2b8639825bcd62dd2f8791c8e 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java @@ -22,7 +22,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; @@ -17,7 +17,7 @@ index 2fffe4452d8f3fa5b9365dff1cfe5b5dab6bf2f8..ae2ac1c24c1e502a1968a30082730962 public static final IntegerProperty AGE = BlockStateProperties.AGE_15; public static final int MAX_AGE = 15; -@@ -131,4 +131,34 @@ public class CactusBlock extends Block { +@@ -129,4 +129,34 @@ public class CactusBlock extends Block { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -89,7 +89,7 @@ index 0e4026e9d39735b840f12e59f84469b9acc2fc77..bf4485b4cad324d5aace657ebf284c4d // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java -index 6b400a4759c8c8612a3b5c96ca0d87ef9dc71435..992de1ab2c00a2545a857f1b5533926bc895f996 100644 +index c3f500580d257e1397f2eb7c47b063a6fe6bb405..0d5c6bdfd4aeda472804b493315bf21ac3067e9d 100644 --- a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java @@ -19,7 +19,7 @@ import net.minecraft.world.level.material.FluidState; @@ -137,10 +137,10 @@ index 6b400a4759c8c8612a3b5c96ca0d87ef9dc71435..992de1ab2c00a2545a857f1b5533926b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4018817ad32fa06befd4fd90f1f06d0231a78bbe..0db8a1a51c857a3930d0b20028964fb355d8e5b4 100644 +index cf10d332625c77068a1793e6e5eedfe8c93e3a2a..ac50955db036a87738acda18f8bab36e1060ccfd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -817,8 +817,20 @@ public class PurpurWorldConfig { +@@ -826,8 +826,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/todo/server/0307-Add-PreExplodeEvents.patch b/patches/server/0296-Add-PreExplodeEvents.patch similarity index 94% rename from patches/todo/server/0307-Add-PreExplodeEvents.patch rename to patches/server/0296-Add-PreExplodeEvents.patch index 48e84ba6f..95155509d 100644 --- a/patches/todo/server/0307-Add-PreExplodeEvents.patch +++ b/patches/server/0296-Add-PreExplodeEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 4929149dde7630a2249a86f4ed0bf00ed3e75c84..4beaedc5ec3562df62a7a9e6b2f40728bd933044 100644 +index 93e7e2fe1f4184719736e698563f493b1d31e8c0..845c94a398fddc35731a36a792f4a95435bd1fb8 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -141,6 +141,23 @@ public class Explosion { diff --git a/patches/todo/server/0308-Improve-output-of-plugins-command.patch b/patches/server/0297-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/todo/server/0308-Improve-output-of-plugins-command.patch rename to patches/server/0297-Improve-output-of-plugins-command.patch diff --git a/patches/todo/server/0309-Make-GUI-Great-Again.patch b/patches/server/0298-Make-GUI-Great-Again.patch similarity index 99% rename from patches/todo/server/0309-Make-GUI-Great-Again.patch rename to patches/server/0298-Make-GUI-Great-Again.patch index 1847ecf3e..fa4e0d6ae 100644 --- a/patches/todo/server/0309-Make-GUI-Great-Again.patch +++ b/patches/server/0298-Make-GUI-Great-Again.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make GUI Great Again diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 582467e3419c23446b20d3076fbfce22115250a8..6ecc75621867390738e804e06ac284524664473d 100644 +index 9eeda0276b4a6f444e7fd2afee7a2c62ad58e0cd..af77803ab75fd7ace62fc2781b4de7287ff0974b 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/todo/server/0310-Add-mending-multiplier.patch b/patches/server/0299-Add-mending-multiplier.patch similarity index 87% rename from patches/todo/server/0310-Add-mending-multiplier.patch rename to patches/server/0299-Add-mending-multiplier.patch index 94478795d..0726ca84f 100644 --- a/patches/todo/server/0310-Add-mending-multiplier.patch +++ b/patches/server/0299-Add-mending-multiplier.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mending multiplier diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index df8d8f85f8db396b7db9fa6e46aa55c934105394..9a1dbb058a468c267606df336027806884fee645 100644 +index 4746dcb444f0c1b0801cd1805b7fcd3612f5ad85..2930932b431c57974bae7c28a4450a03c5f29b6d 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -346,13 +346,15 @@ public class ExperienceOrb extends Entity { +@@ -357,13 +357,15 @@ public class ExperienceOrb extends Entity { } } @@ -27,7 +27,7 @@ index df8d8f85f8db396b7db9fa6e46aa55c934105394..9a1dbb058a468c267606df3360278068 public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 157c5ce26015cabd5a007cf7444c8255db1a0b0f..31622937846c14dab4177a1f08c15985957c98bb 100644 +index ac50955db036a87738acda18f8bab36e1060ccfd..5e5b5384f619082d00c91e5de1e93f416cc621ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -121,6 +121,7 @@ public class PurpurWorldConfig { @@ -38,7 +38,7 @@ index 157c5ce26015cabd5a007cf7444c8255db1a0b0f..31622937846c14dab4177a1f08c15985 public boolean alwaysTameInCreative = false; public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; -@@ -148,6 +149,7 @@ public class PurpurWorldConfig { +@@ -150,6 +151,7 @@ public class PurpurWorldConfig { public int mobLastHurtByPlayerTime = 100; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/todo.txt b/todo.txt index db02e6537..e0848ecfc 100644 --- a/todo.txt +++ b/todo.txt @@ -1,4 +1,6 @@ * make sure that all mobs are in entity attributes and ridables (some from previous updates weren't added to attributes) * check sulker spawn from bullet options matches original design * configurable food atributes check `key.location().toString()` still works -* fix all instances of `level.blahblah` \ No newline at end of file +* fix all instances of `level.blahblah` +* merge pufferfish fixes into one +* test allow transparent blocks in enchanting box \ No newline at end of file