From e1053543307a4e64990c41905f80c85cb82d17fb Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Fri, 7 Jul 2023 10:25:36 -0700 Subject: [PATCH] Fix incorrect new blockdata in EntityChangeBlockEvent (#9445) Also fixes EntityBreakDoorEvent not having the correct 'to' block data Also standardizes how to handle EntityChangeBlockEvent before a removeBlock or destroyBlock call. Always use 'state.getFluidState().createLegacyBlock()' to get the new state instead of just using the 'air' state. --- ...w-blockstate-in-EntityBreakDoorEvent.patch | 21 +++ ...ing-amount-to-PlayerItemDamageEvent.patch} | 0 ...> 0361-WorldCreator-keepSpawnLoaded.patch} | 0 ...Event-and-CollarColorable-interface.patch} | 0 ...> 0363-Add-PlayerStopUsingItemEvent.patch} | 0 ...64-FallingBlock-auto-expire-setting.patch} | 0 ...t-Type.patch => 0365-Keyed-Cat-Type.patch} | 0 ...dd-method-isTickingWorlds-to-Bukkit.patch} | 4 +- ... => 0367-Add-WardenAngerChangeEvent.patch} | 0 ...I.patch => 0368-Nameable-Banner-API.patch} | 0 ...atch => 0369-Add-Player-getFishHook.patch} | 0 ...API.patch => 0370-More-Teleport-API.patch} | 0 ... => 0371-Add-EntityPortalReadyEvent.patch} | 0 ...tom-Chat-Completion-Suggestions-API.patch} | 0 ...ion-API.patch => 0373-Collision-API.patch} | 0 ...API.patch => 0374-Block-Ticking-API.patch} | 0 ...375-Add-NamespacedKey-biome-methods.patch} | 0 ...o-load-resources-from-LibraryLoader.patch} | 0 ...serialization-deserialization-for-P.patch} | 0 ...rameter-to-ProjectileSource-launchP.patch} | 0 ...limit-in-YamlConfigOptions-and-incr.patch} | 0 ... => 0380-Add-getDrops-to-BlockState.patch} | 0 ...-Add-PlayerInventorySlotChangeEvent.patch} | 0 ... 0382-Elder-Guardian-appearance-API.patch} | 0 ...ow-changing-bed-s-occupied-property.patch} | 0 ...d-EquipmentSlot-convenience-methods.patch} | 0 ...swingHand-EquipmentSlot-convenience.patch} | 0 ...ch => 0386-Add-entity-knockback-API.patch} | 0 ... => 0387-Added-EntityToggleSitEvent.patch} | 0 ...patch => 0388-Add-Moving-Piston-API.patch} | 0 ...0389-Add-PrePlayerAttackEntityEvent.patch} | 0 ... 0390-Add-Player-Warden-Warning-API.patch} | 0 ...a-friendly-methods-to-update-trades.patch} | 0 ...392-Add-paper-dumplisteners-command.patch} | 0 ....patch => 0393-ItemStack-damage-API.patch} | 0 ...patch => 0394-Add-Tick-TemporalUnit.patch} | 0 ...tion-API.patch => 0395-Friction-API.patch} | 2 +- ... 0396-Player-Entity-Tracking-Events.patch} | 0 ...atch => 0397-Add-missing-Fluid-type.patch} | 0 ...ments.patch => 0398-fix-Instruments.patch} | 0 ...tch => 0399-Add-BlockLockCheckEvent.patch} | 0 ... 0400-Add-Sneaking-API-for-Entities.patch} | 0 ....patch => 0401-Improve-PortalEvents.patch} | 0 ...ed-block-state-to-BlockExplodeEvent.patch} | 0 ...atch => 0403-Flying-Fall-Damage-API.patch} | 0 ...ion-moving-velocity-to-VehicleBlock.patch} | 0 ...eplace-ItemFlag.HIDE_POTION_EFFECTS.patch} | 0 ...en-API.patch => 0406-Win-Screen-API.patch} | 0 ...tch => 0407-Add-Entity-Body-Yaw-API.patch} | 0 ...or-InventoryBlockStartEvent-subclas.patch} | 0 ...=> 0409-Add-EntityFertilizeEggEvent.patch} | 0 ...temEvent-and-EntityCompostItemEvent.patch} | 0 ...API.patch => 0411-Add-Shearable-API.patch} | 0 ...Fix-SpawnEggMeta-get-setSpawnedType.patch} | 0 ... 0413-Add-Mob-Experience-reward-API.patch} | 0 ... => 0414-Expand-PlayerItemMendEvent.patch} | 0 ... => 0415-Add-transient-modifier-API.patch} | 0 ...he-experimental-smithing-inventory-.patch} | 0 ...to-remove-all-active-potion-effects.patch} | 2 +- ...olia-scheduler-and-owned-region-API.patch} | 4 +- ...9-Add-event-for-player-editing-sign.patch} | 0 ...lock-data-for-EntityChangeBlockEvent.patch | 170 ++++++++++++++++-- 62 files changed, 182 insertions(+), 21 deletions(-) create mode 100644 patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch rename patches/api/{0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch => 0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch} (100%) rename patches/api/{0360-WorldCreator-keepSpawnLoaded.patch => 0361-WorldCreator-keepSpawnLoaded.patch} (100%) rename patches/api/{0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch => 0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch} (100%) rename patches/api/{0362-Add-PlayerStopUsingItemEvent.patch => 0363-Add-PlayerStopUsingItemEvent.patch} (100%) rename patches/api/{0363-FallingBlock-auto-expire-setting.patch => 0364-FallingBlock-auto-expire-setting.patch} (100%) rename patches/api/{0364-Keyed-Cat-Type.patch => 0365-Keyed-Cat-Type.patch} (100%) rename patches/api/{0365-Add-method-isTickingWorlds-to-Bukkit.patch => 0366-Add-method-isTickingWorlds-to-Bukkit.patch} (96%) rename patches/api/{0366-Add-WardenAngerChangeEvent.patch => 0367-Add-WardenAngerChangeEvent.patch} (100%) rename patches/api/{0367-Nameable-Banner-API.patch => 0368-Nameable-Banner-API.patch} (100%) rename patches/api/{0368-Add-Player-getFishHook.patch => 0369-Add-Player-getFishHook.patch} (100%) rename patches/api/{0369-More-Teleport-API.patch => 0370-More-Teleport-API.patch} (100%) rename patches/api/{0370-Add-EntityPortalReadyEvent.patch => 0371-Add-EntityPortalReadyEvent.patch} (100%) rename patches/api/{0371-Custom-Chat-Completion-Suggestions-API.patch => 0372-Custom-Chat-Completion-Suggestions-API.patch} (100%) rename patches/api/{0372-Collision-API.patch => 0373-Collision-API.patch} (100%) rename patches/api/{0373-Block-Ticking-API.patch => 0374-Block-Ticking-API.patch} (100%) rename patches/api/{0374-Add-NamespacedKey-biome-methods.patch => 0375-Add-NamespacedKey-biome-methods.patch} (100%) rename patches/api/{0375-Also-load-resources-from-LibraryLoader.patch => 0376-Also-load-resources-from-LibraryLoader.patch} (100%) rename patches/api/{0376-Added-byte-array-serialization-deserialization-for-P.patch => 0377-Added-byte-array-serialization-deserialization-for-P.patch} (100%) rename patches/api/{0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch => 0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch} (100%) rename patches/api/{0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch => 0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch} (100%) rename patches/api/{0379-Add-getDrops-to-BlockState.patch => 0380-Add-getDrops-to-BlockState.patch} (100%) rename patches/api/{0380-Add-PlayerInventorySlotChangeEvent.patch => 0381-Add-PlayerInventorySlotChangeEvent.patch} (100%) rename patches/api/{0381-Elder-Guardian-appearance-API.patch => 0382-Elder-Guardian-appearance-API.patch} (100%) rename patches/api/{0382-Allow-changing-bed-s-occupied-property.patch => 0383-Allow-changing-bed-s-occupied-property.patch} (100%) rename patches/api/{0383-Add-EquipmentSlot-convenience-methods.patch => 0384-Add-EquipmentSlot-convenience-methods.patch} (100%) rename patches/api/{0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch => 0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch} (100%) rename patches/api/{0385-Add-entity-knockback-API.patch => 0386-Add-entity-knockback-API.patch} (100%) rename patches/api/{0386-Added-EntityToggleSitEvent.patch => 0387-Added-EntityToggleSitEvent.patch} (100%) rename patches/api/{0387-Add-Moving-Piston-API.patch => 0388-Add-Moving-Piston-API.patch} (100%) rename patches/api/{0388-Add-PrePlayerAttackEntityEvent.patch => 0389-Add-PrePlayerAttackEntityEvent.patch} (100%) rename patches/api/{0389-Add-Player-Warden-Warning-API.patch => 0390-Add-Player-Warden-Warning-API.patch} (100%) rename patches/api/{0390-More-vanilla-friendly-methods-to-update-trades.patch => 0391-More-vanilla-friendly-methods-to-update-trades.patch} (100%) rename patches/api/{0391-Add-paper-dumplisteners-command.patch => 0392-Add-paper-dumplisteners-command.patch} (100%) rename patches/api/{0392-ItemStack-damage-API.patch => 0393-ItemStack-damage-API.patch} (100%) rename patches/api/{0393-Add-Tick-TemporalUnit.patch => 0394-Add-Tick-TemporalUnit.patch} (100%) rename patches/api/{0394-Friction-API.patch => 0395-Friction-API.patch} (96%) rename patches/api/{0395-Player-Entity-Tracking-Events.patch => 0396-Player-Entity-Tracking-Events.patch} (100%) rename patches/api/{0396-Add-missing-Fluid-type.patch => 0397-Add-missing-Fluid-type.patch} (100%) rename patches/api/{0397-fix-Instruments.patch => 0398-fix-Instruments.patch} (100%) rename patches/api/{0398-Add-BlockLockCheckEvent.patch => 0399-Add-BlockLockCheckEvent.patch} (100%) rename patches/api/{0399-Add-Sneaking-API-for-Entities.patch => 0400-Add-Sneaking-API-for-Entities.patch} (100%) rename patches/api/{0400-Improve-PortalEvents.patch => 0401-Improve-PortalEvents.patch} (100%) rename patches/api/{0401-Add-exploded-block-state-to-BlockExplodeEvent.patch => 0402-Add-exploded-block-state-to-BlockExplodeEvent.patch} (100%) rename patches/api/{0402-Flying-Fall-Damage-API.patch => 0403-Flying-Fall-Damage-API.patch} (100%) rename patches/api/{0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch => 0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch} (100%) rename patches/api/{0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch => 0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch} (100%) rename patches/api/{0405-Win-Screen-API.patch => 0406-Win-Screen-API.patch} (100%) rename patches/api/{0406-Add-Entity-Body-Yaw-API.patch => 0407-Add-Entity-Body-Yaw-API.patch} (100%) rename patches/api/{0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch => 0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch} (100%) rename patches/api/{0408-Add-EntityFertilizeEggEvent.patch => 0409-Add-EntityFertilizeEggEvent.patch} (100%) rename patches/api/{0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch => 0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch} (100%) rename patches/api/{0410-Add-Shearable-API.patch => 0411-Add-Shearable-API.patch} (100%) rename patches/api/{0411-Fix-SpawnEggMeta-get-setSpawnedType.patch => 0412-Fix-SpawnEggMeta-get-setSpawnedType.patch} (100%) rename patches/api/{0412-Add-Mob-Experience-reward-API.patch => 0413-Add-Mob-Experience-reward-API.patch} (100%) rename patches/api/{0413-Expand-PlayerItemMendEvent.patch => 0414-Expand-PlayerItemMendEvent.patch} (100%) rename patches/api/{0414-Add-transient-modifier-API.patch => 0415-Add-transient-modifier-API.patch} (100%) rename patches/api/{0415-Properly-remove-the-experimental-smithing-inventory-.patch => 0416-Properly-remove-the-experimental-smithing-inventory-.patch} (100%) rename patches/api/{0416-Add-method-to-remove-all-active-potion-effects.patch => 0417-Add-method-to-remove-all-active-potion-effects.patch} (91%) rename patches/api/{0417-Folia-scheduler-and-owned-region-API.patch => 0418-Folia-scheduler-and-owned-region-API.patch} (99%) rename patches/api/{0418-Add-event-for-player-editing-sign.patch => 0419-Add-event-for-player-editing-sign.patch} (100%) diff --git a/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch b/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch new file mode 100644 index 0000000000..21b3f85c0b --- /dev/null +++ b/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Sun, 2 Jul 2023 22:14:09 -0700 +Subject: [PATCH] Fix incorrect new blockstate in EntityBreakDoorEvent + + +diff --git a/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java b/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java +index 30b9bdca89a8d4b226824b3de8b9ac5bc8243c7d..b7889e3b6cc5d3ed4d7fc2380d0acb060cb0905a 100644 +--- a/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java ++++ b/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java +@@ -12,8 +12,8 @@ import org.jetbrains.annotations.NotNull; + * Cancelling the event will cause the event to be delayed + */ + public class EntityBreakDoorEvent extends EntityChangeBlockEvent { +- public EntityBreakDoorEvent(@NotNull final LivingEntity entity, @NotNull final Block targetBlock) { +- super(entity, targetBlock, Material.AIR.createBlockData()); ++ public EntityBreakDoorEvent(@NotNull final LivingEntity entity, @NotNull final Block targetBlock, @NotNull final org.bukkit.block.data.BlockData to) { // Paper ++ super(entity, targetBlock, to); // Paper + } + + @NotNull diff --git a/patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch similarity index 100% rename from patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch rename to patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch diff --git a/patches/api/0360-WorldCreator-keepSpawnLoaded.patch b/patches/api/0361-WorldCreator-keepSpawnLoaded.patch similarity index 100% rename from patches/api/0360-WorldCreator-keepSpawnLoaded.patch rename to patches/api/0361-WorldCreator-keepSpawnLoaded.patch diff --git a/patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch similarity index 100% rename from patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch rename to patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch diff --git a/patches/api/0362-Add-PlayerStopUsingItemEvent.patch b/patches/api/0363-Add-PlayerStopUsingItemEvent.patch similarity index 100% rename from patches/api/0362-Add-PlayerStopUsingItemEvent.patch rename to patches/api/0363-Add-PlayerStopUsingItemEvent.patch diff --git a/patches/api/0363-FallingBlock-auto-expire-setting.patch b/patches/api/0364-FallingBlock-auto-expire-setting.patch similarity index 100% rename from patches/api/0363-FallingBlock-auto-expire-setting.patch rename to patches/api/0364-FallingBlock-auto-expire-setting.patch diff --git a/patches/api/0364-Keyed-Cat-Type.patch b/patches/api/0365-Keyed-Cat-Type.patch similarity index 100% rename from patches/api/0364-Keyed-Cat-Type.patch rename to patches/api/0365-Keyed-Cat-Type.patch diff --git a/patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch b/patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch similarity index 96% rename from patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch rename to patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch index 88a8e4f5f6..126775a362 100644 --- a/patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch +++ b/patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add method isTickingWorlds() to Bukkit. diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 14ddb641d8a20ebd80cb2c5c8bef3062f813026d..5635bd49107013faace6b79731c70ac1356ec357 100644 +index 209a0c48e092f168744498e1ba7555279318394c..aa938c777936bbefc0c8cef248ad03e0f52bef2c 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -775,12 +775,26 @@ public final class Bukkit { @@ -56,7 +56,7 @@ index 14ddb641d8a20ebd80cb2c5c8bef3062f813026d..5635bd49107013faace6b79731c70ac1 * @param world the world to unload * @param save whether to save the chunks before unloading diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index b6bdb945755a2c37b3cb2c3e2e91f7d769c517c4..5a388914d58eda63715fc0a6d0d4f507b6ca9672 100644 +index 20f95f8911852d86ea938dd73ed0d44c01b27d28..7bdac4b297e40383dd2ef4e2735fdfb086ecaa14 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -648,34 +648,55 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/patches/api/0366-Add-WardenAngerChangeEvent.patch b/patches/api/0367-Add-WardenAngerChangeEvent.patch similarity index 100% rename from patches/api/0366-Add-WardenAngerChangeEvent.patch rename to patches/api/0367-Add-WardenAngerChangeEvent.patch diff --git a/patches/api/0367-Nameable-Banner-API.patch b/patches/api/0368-Nameable-Banner-API.patch similarity index 100% rename from patches/api/0367-Nameable-Banner-API.patch rename to patches/api/0368-Nameable-Banner-API.patch diff --git a/patches/api/0368-Add-Player-getFishHook.patch b/patches/api/0369-Add-Player-getFishHook.patch similarity index 100% rename from patches/api/0368-Add-Player-getFishHook.patch rename to patches/api/0369-Add-Player-getFishHook.patch diff --git a/patches/api/0369-More-Teleport-API.patch b/patches/api/0370-More-Teleport-API.patch similarity index 100% rename from patches/api/0369-More-Teleport-API.patch rename to patches/api/0370-More-Teleport-API.patch diff --git a/patches/api/0370-Add-EntityPortalReadyEvent.patch b/patches/api/0371-Add-EntityPortalReadyEvent.patch similarity index 100% rename from patches/api/0370-Add-EntityPortalReadyEvent.patch rename to patches/api/0371-Add-EntityPortalReadyEvent.patch diff --git a/patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch b/patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch similarity index 100% rename from patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch rename to patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch diff --git a/patches/api/0372-Collision-API.patch b/patches/api/0373-Collision-API.patch similarity index 100% rename from patches/api/0372-Collision-API.patch rename to patches/api/0373-Collision-API.patch diff --git a/patches/api/0373-Block-Ticking-API.patch b/patches/api/0374-Block-Ticking-API.patch similarity index 100% rename from patches/api/0373-Block-Ticking-API.patch rename to patches/api/0374-Block-Ticking-API.patch diff --git a/patches/api/0374-Add-NamespacedKey-biome-methods.patch b/patches/api/0375-Add-NamespacedKey-biome-methods.patch similarity index 100% rename from patches/api/0374-Add-NamespacedKey-biome-methods.patch rename to patches/api/0375-Add-NamespacedKey-biome-methods.patch diff --git a/patches/api/0375-Also-load-resources-from-LibraryLoader.patch b/patches/api/0376-Also-load-resources-from-LibraryLoader.patch similarity index 100% rename from patches/api/0375-Also-load-resources-from-LibraryLoader.patch rename to patches/api/0376-Also-load-resources-from-LibraryLoader.patch diff --git a/patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch b/patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch similarity index 100% rename from patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch rename to patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch diff --git a/patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch similarity index 100% rename from patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch rename to patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch diff --git a/patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch b/patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch similarity index 100% rename from patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch rename to patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch diff --git a/patches/api/0379-Add-getDrops-to-BlockState.patch b/patches/api/0380-Add-getDrops-to-BlockState.patch similarity index 100% rename from patches/api/0379-Add-getDrops-to-BlockState.patch rename to patches/api/0380-Add-getDrops-to-BlockState.patch diff --git a/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch b/patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch similarity index 100% rename from patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch rename to patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch diff --git a/patches/api/0381-Elder-Guardian-appearance-API.patch b/patches/api/0382-Elder-Guardian-appearance-API.patch similarity index 100% rename from patches/api/0381-Elder-Guardian-appearance-API.patch rename to patches/api/0382-Elder-Guardian-appearance-API.patch diff --git a/patches/api/0382-Allow-changing-bed-s-occupied-property.patch b/patches/api/0383-Allow-changing-bed-s-occupied-property.patch similarity index 100% rename from patches/api/0382-Allow-changing-bed-s-occupied-property.patch rename to patches/api/0383-Allow-changing-bed-s-occupied-property.patch diff --git a/patches/api/0383-Add-EquipmentSlot-convenience-methods.patch b/patches/api/0384-Add-EquipmentSlot-convenience-methods.patch similarity index 100% rename from patches/api/0383-Add-EquipmentSlot-convenience-methods.patch rename to patches/api/0384-Add-EquipmentSlot-convenience-methods.patch diff --git a/patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch b/patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch similarity index 100% rename from patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch rename to patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch diff --git a/patches/api/0385-Add-entity-knockback-API.patch b/patches/api/0386-Add-entity-knockback-API.patch similarity index 100% rename from patches/api/0385-Add-entity-knockback-API.patch rename to patches/api/0386-Add-entity-knockback-API.patch diff --git a/patches/api/0386-Added-EntityToggleSitEvent.patch b/patches/api/0387-Added-EntityToggleSitEvent.patch similarity index 100% rename from patches/api/0386-Added-EntityToggleSitEvent.patch rename to patches/api/0387-Added-EntityToggleSitEvent.patch diff --git a/patches/api/0387-Add-Moving-Piston-API.patch b/patches/api/0388-Add-Moving-Piston-API.patch similarity index 100% rename from patches/api/0387-Add-Moving-Piston-API.patch rename to patches/api/0388-Add-Moving-Piston-API.patch diff --git a/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch b/patches/api/0389-Add-PrePlayerAttackEntityEvent.patch similarity index 100% rename from patches/api/0388-Add-PrePlayerAttackEntityEvent.patch rename to patches/api/0389-Add-PrePlayerAttackEntityEvent.patch diff --git a/patches/api/0389-Add-Player-Warden-Warning-API.patch b/patches/api/0390-Add-Player-Warden-Warning-API.patch similarity index 100% rename from patches/api/0389-Add-Player-Warden-Warning-API.patch rename to patches/api/0390-Add-Player-Warden-Warning-API.patch diff --git a/patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch b/patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch similarity index 100% rename from patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch rename to patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch diff --git a/patches/api/0391-Add-paper-dumplisteners-command.patch b/patches/api/0392-Add-paper-dumplisteners-command.patch similarity index 100% rename from patches/api/0391-Add-paper-dumplisteners-command.patch rename to patches/api/0392-Add-paper-dumplisteners-command.patch diff --git a/patches/api/0392-ItemStack-damage-API.patch b/patches/api/0393-ItemStack-damage-API.patch similarity index 100% rename from patches/api/0392-ItemStack-damage-API.patch rename to patches/api/0393-ItemStack-damage-API.patch diff --git a/patches/api/0393-Add-Tick-TemporalUnit.patch b/patches/api/0394-Add-Tick-TemporalUnit.patch similarity index 100% rename from patches/api/0393-Add-Tick-TemporalUnit.patch rename to patches/api/0394-Add-Tick-TemporalUnit.patch diff --git a/patches/api/0394-Friction-API.patch b/patches/api/0395-Friction-API.patch similarity index 96% rename from patches/api/0394-Friction-API.patch rename to patches/api/0395-Friction-API.patch index 47b4634d1f..dd826ded3b 100644 --- a/patches/api/0394-Friction-API.patch +++ b/patches/api/0395-Friction-API.patch @@ -59,7 +59,7 @@ index d0bef15785493b512ff0f7414c1d58d38fead581..58017fce436cdbda255f7172fbdadb72 /** * Gets the item stack associated with this item drop. diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 55518f6412d4d319df9cdab3bdff52c6e2bcb8c5..4fa02476bbcb0590171d5b20d25156ccb3cc9b6c 100644 +index 7889ec8e0954c98e9611a20811b1ddc5bcd93b7f..f4c5ec3f7e5c29b1799eef6c4f76617e9f23c0d7 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0395-Player-Entity-Tracking-Events.patch b/patches/api/0396-Player-Entity-Tracking-Events.patch similarity index 100% rename from patches/api/0395-Player-Entity-Tracking-Events.patch rename to patches/api/0396-Player-Entity-Tracking-Events.patch diff --git a/patches/api/0396-Add-missing-Fluid-type.patch b/patches/api/0397-Add-missing-Fluid-type.patch similarity index 100% rename from patches/api/0396-Add-missing-Fluid-type.patch rename to patches/api/0397-Add-missing-Fluid-type.patch diff --git a/patches/api/0397-fix-Instruments.patch b/patches/api/0398-fix-Instruments.patch similarity index 100% rename from patches/api/0397-fix-Instruments.patch rename to patches/api/0398-fix-Instruments.patch diff --git a/patches/api/0398-Add-BlockLockCheckEvent.patch b/patches/api/0399-Add-BlockLockCheckEvent.patch similarity index 100% rename from patches/api/0398-Add-BlockLockCheckEvent.patch rename to patches/api/0399-Add-BlockLockCheckEvent.patch diff --git a/patches/api/0399-Add-Sneaking-API-for-Entities.patch b/patches/api/0400-Add-Sneaking-API-for-Entities.patch similarity index 100% rename from patches/api/0399-Add-Sneaking-API-for-Entities.patch rename to patches/api/0400-Add-Sneaking-API-for-Entities.patch diff --git a/patches/api/0400-Improve-PortalEvents.patch b/patches/api/0401-Improve-PortalEvents.patch similarity index 100% rename from patches/api/0400-Improve-PortalEvents.patch rename to patches/api/0401-Improve-PortalEvents.patch diff --git a/patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent.patch b/patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent.patch similarity index 100% rename from patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent.patch rename to patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent.patch diff --git a/patches/api/0402-Flying-Fall-Damage-API.patch b/patches/api/0403-Flying-Fall-Damage-API.patch similarity index 100% rename from patches/api/0402-Flying-Fall-Damage-API.patch rename to patches/api/0403-Flying-Fall-Damage-API.patch diff --git a/patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch similarity index 100% rename from patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch rename to patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch diff --git a/patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch b/patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch similarity index 100% rename from patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch rename to patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch diff --git a/patches/api/0405-Win-Screen-API.patch b/patches/api/0406-Win-Screen-API.patch similarity index 100% rename from patches/api/0405-Win-Screen-API.patch rename to patches/api/0406-Win-Screen-API.patch diff --git a/patches/api/0406-Add-Entity-Body-Yaw-API.patch b/patches/api/0407-Add-Entity-Body-Yaw-API.patch similarity index 100% rename from patches/api/0406-Add-Entity-Body-Yaw-API.patch rename to patches/api/0407-Add-Entity-Body-Yaw-API.patch diff --git a/patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch b/patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch similarity index 100% rename from patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch rename to patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch diff --git a/patches/api/0408-Add-EntityFertilizeEggEvent.patch b/patches/api/0409-Add-EntityFertilizeEggEvent.patch similarity index 100% rename from patches/api/0408-Add-EntityFertilizeEggEvent.patch rename to patches/api/0409-Add-EntityFertilizeEggEvent.patch diff --git a/patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch b/patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch similarity index 100% rename from patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch rename to patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch diff --git a/patches/api/0410-Add-Shearable-API.patch b/patches/api/0411-Add-Shearable-API.patch similarity index 100% rename from patches/api/0410-Add-Shearable-API.patch rename to patches/api/0411-Add-Shearable-API.patch diff --git a/patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch b/patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch similarity index 100% rename from patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch rename to patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch diff --git a/patches/api/0412-Add-Mob-Experience-reward-API.patch b/patches/api/0413-Add-Mob-Experience-reward-API.patch similarity index 100% rename from patches/api/0412-Add-Mob-Experience-reward-API.patch rename to patches/api/0413-Add-Mob-Experience-reward-API.patch diff --git a/patches/api/0413-Expand-PlayerItemMendEvent.patch b/patches/api/0414-Expand-PlayerItemMendEvent.patch similarity index 100% rename from patches/api/0413-Expand-PlayerItemMendEvent.patch rename to patches/api/0414-Expand-PlayerItemMendEvent.patch diff --git a/patches/api/0414-Add-transient-modifier-API.patch b/patches/api/0415-Add-transient-modifier-API.patch similarity index 100% rename from patches/api/0414-Add-transient-modifier-API.patch rename to patches/api/0415-Add-transient-modifier-API.patch diff --git a/patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch b/patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch similarity index 100% rename from patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch rename to patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch diff --git a/patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch b/patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch similarity index 91% rename from patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch rename to patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch index 27d9d12401..d0a824c013 100644 --- a/patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch +++ b/patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add method to remove all active potion effects diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 7fe230a8e8894b375a52c68152c7a0665b6ae1b3..bc6702817516c14d90ab45eb0ebf8354e79564a5 100644 +index 03490d35a24c056ed148e45eea27d1786a58c8fc..19e58e62ae442ef9be02ca7fa2f55e370a54afa4 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java @@ -589,6 +589,15 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource diff --git a/patches/api/0417-Folia-scheduler-and-owned-region-API.patch b/patches/api/0418-Folia-scheduler-and-owned-region-API.patch similarity index 99% rename from patches/api/0417-Folia-scheduler-and-owned-region-API.patch rename to patches/api/0418-Folia-scheduler-and-owned-region-API.patch index f00d7a30d9..13a38952d2 100644 --- a/patches/api/0417-Folia-scheduler-and-owned-region-API.patch +++ b/patches/api/0418-Folia-scheduler-and-owned-region-API.patch @@ -499,7 +499,7 @@ index 0000000000000000000000000000000000000000..a6b50c9d8af589cc4747e14d343d2045 + } +} diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 5635bd49107013faace6b79731c70ac1356ec357..77113822dc579ce350a5410ed713996eaf5e917e 100644 +index aa938c777936bbefc0c8cef248ad03e0f52bef2c..b243db56756c67cd2c41d7768898d01539f9260a 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -2523,6 +2523,141 @@ public final class Bukkit { @@ -645,7 +645,7 @@ index 5635bd49107013faace6b79731c70ac1356ec357..77113822dc579ce350a5410ed713996e public static Server.Spigot spigot() { return server.spigot(); diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 5a388914d58eda63715fc0a6d0d4f507b6ca9672..b885c1aaf96f7b8e2787f37c21d65308a0a31e7f 100644 +index 7bdac4b297e40383dd2ef4e2735fdfb086ecaa14..6b72eccdcb6f75534a4267a1dd0a4cc2f39e917b 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2198,4 +2198,119 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/patches/api/0418-Add-event-for-player-editing-sign.patch b/patches/api/0419-Add-event-for-player-editing-sign.patch similarity index 100% rename from patches/api/0418-Add-event-for-player-editing-sign.patch rename to patches/api/0419-Add-event-for-player-editing-sign.patch diff --git a/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch b/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch index cb4f4d4b82..83e3a32637 100644 --- a/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch +++ b/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch @@ -3,13 +3,59 @@ From: SoSeDiK Date: Mon, 21 Mar 2022 20:00:53 +0200 Subject: [PATCH] Fix new block data for EntityChangeBlockEvent -Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> +Also standardizes how to handle EntityChangeBlockEvent before a removeBlock or destroyBlock +call. Always use 'state.getFluidState().createLegacyBlock()' to get the new state instead of +just using the 'air' state. +Also fixes the new block data for EntityBreakDoorEvent (a sub-event from +EntityChangeBlockEvent) + +Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> +Co-authored-by: Jake Potrebic + +diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +index b7abd8309a7d9744d3b3df9be8cad54f8909cc15..d3a2a6dee2d83b3df0ddc521c080f7d72b709461 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java ++++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +@@ -107,7 +107,7 @@ public class HarvestFarmland extends Behavior { + Block block1 = world.getBlockState(this.aboveFarmlandPos.below()).getBlock(); + + if (block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata)) { +- if (CraftEventFactory.callEntityChangeBlockEvent(entity, this.aboveFarmlandPos, Blocks.AIR.defaultBlockState())) { // CraftBukkit ++ if (CraftEventFactory.callEntityChangeBlockEvent(entity, this.aboveFarmlandPos, iblockdata.getFluidState().createLegacyBlock())) { // CraftBukkit // Paper - fix wrong block state + world.destroyBlock(this.aboveFarmlandPos, true, entity); + } // CraftBukkit + } +diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +index 4253b3b1263a7ae5a2f5f3a34674dfea615a81ea..784a894688f98f9d0368a36d456c5c94e1ee3695 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java ++++ b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +@@ -72,7 +72,7 @@ public class BreakDoorGoal extends DoorInteractGoal { + + if (this.breakTime == this.getDoorBreakTime() && this.isValidDifficulty(this.mob.level().getDifficulty())) { + // CraftBukkit start +- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreakDoorEvent(this.mob, this.doorPos).isCancelled()) { ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreakDoorEvent(this.mob, this.doorPos, this.mob.level().getFluidState(this.doorPos).createLegacyBlock()).isCancelled()) { // Paper - fix wrong block state + this.start(); + return; + } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index 9be4e715faefc5f7972abf064bfff3c1c980f7fc..77542bbdfdc2bf0ec1527ad8551493e1d89da40c 100644 +index 9be4e715faefc5f7972abf064bfff3c1c980f7fc..b0caf52d00d8cd76550ab116291f8e11144a5e59 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -@@ -77,7 +77,7 @@ public class EatBlockGoal extends Goal { +@@ -67,8 +67,9 @@ public class EatBlockGoal extends Goal { + if (this.eatAnimationTick == this.adjustedTickDelay(4)) { + BlockPos blockposition = this.mob.blockPosition(); + +- if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) { +- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit ++ final BlockState blockState = this.level.getBlockState(blockposition); // Paper - fix wrong block state ++ if (EatBlockGoal.IS_TALL_GRASS.test(blockState)) { // Paper - fix wrong block state ++ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, blockState.getFluidState().createLegacyBlock(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state + this.level.destroyBlock(blockposition, false); + } + +@@ -77,7 +78,7 @@ public class EatBlockGoal extends Goal { BlockPos blockposition1 = blockposition.below(); if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) { @@ -18,8 +64,21 @@ index 9be4e715faefc5f7972abf064bfff3c1c980f7fc..77542bbdfdc2bf0ec1527ad8551493e1 this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); } +diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +index ef0c0714847c37f57ca05aaeb0ce7c217ae7ac0f..082351bd5f98d8738334b9164375f63fdc890455 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java ++++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +@@ -579,7 +579,7 @@ public class Rabbit extends Animal implements VariantHolder { + + if (i == 0) { + // CraftBukkit start +- if (!CraftEventFactory.callEntityChangeBlockEvent(this.rabbit, blockposition, Blocks.AIR.defaultBlockState())) { ++ if (!CraftEventFactory.callEntityChangeBlockEvent(this.rabbit, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state + return; + } + // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 703068eaff84bcce83f61d805afa6cc0fef909b1..1ea5b05405f115e5d77ff0b282075628e64fec3d 100644 +index 703068eaff84bcce83f61d805afa6cc0fef909b1..1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -373,7 +373,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -27,12 +86,25 @@ index 703068eaff84bcce83f61d805afa6cc0fef909b1..1ea5b05405f115e5d77ff0b282075628 if (WitherBoss.canDestroy(iblockdata)) { // CraftBukkit start - if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, Blocks.AIR.defaultBlockState())) { -+ if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper ++ if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state continue; } // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +index 39eb9301626b191958ce42daa34b1ff3241cea80..b62457313a1e30aad0c5313d608667b5d3811455 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java ++++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +@@ -573,7 +573,7 @@ public class EnderMan extends Monster implements NeutralMob { + boolean flag = movingobjectpositionblock.getBlockPos().equals(blockposition); + + if (iblockdata.is(BlockTags.ENDERMAN_HOLDABLE) && flag) { +- if (CraftEventFactory.callEntityChangeBlockEvent(this.enderman, blockposition, Blocks.AIR.defaultBlockState())) { // CraftBukkit - Place event ++ if (CraftEventFactory.callEntityChangeBlockEvent(this.enderman, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // CraftBukkit - Place event // Paper - fix wrong block state + world.removeBlock(blockposition, false); + world.gameEvent(GameEvent.BLOCK_DESTROY, blockposition, GameEvent.Context.of(this.enderman, iblockdata)); + this.enderman.setCarriedBlock(iblockdata.getBlock().defaultBlockState()); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index c245acdbaa84cc795e341ed042a0d8d90383f070..842146548fc42c3b67a1196620b096d6c500b88d 100644 +index c245acdbaa84cc795e341ed042a0d8d90383f070..e87c6c8ab585d6b0b38bbb8e42c0082e38f03250 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -175,7 +175,7 @@ public class Ravager extends Raider { @@ -40,28 +112,52 @@ index c245acdbaa84cc795e341ed042a0d8d90383f070..842146548fc42c3b67a1196620b096d6 if (block instanceof LeavesBlock) { // CraftBukkit start - if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState())) { -+ if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - use correct block state ++ if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state continue; } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 754bad0bd38b8a356403f4c90de26de445cbf3c7..0b2d9eb8b3ff06cc64aa5bc7a81d79769709ccf0 100644 +index 754bad0bd38b8a356403f4c90de26de445cbf3c7..8d1f99f95a08eac98c6a03c6e534fc1997f8fe71 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -179,7 +179,10 @@ public class Silverfish extends Monster { +@@ -179,7 +179,8 @@ public class Silverfish extends Monster { if (block instanceof InfestedBlock) { // CraftBukkit start - if (!CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockposition1, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState())) { -+ // Paper start - use correct block state -+ final BlockState afterState = world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? net.minecraft.world.level.block.Blocks.AIR.defaultBlockState() : ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)); -+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockposition1, afterState)) { -+ // Paper end - use correct block state ++ BlockState afterState = world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? iblockdata.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)); // Paper - fix wrong block state ++ if (!CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockposition1, afterState)) { // Paper - fix wrong block state continue; } // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java +index f4342f6a36cf31066af3ee32fff059e6a318fad6..29ea746b6df87e996081149000c6db0b562f7e97 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java +@@ -306,7 +306,7 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie + + if (iblockdata.is(BlockTags.FIRE)) { + // CraftBukkit start +- if (CraftEventFactory.callEntityChangeBlockEvent(this, pos, Blocks.AIR.defaultBlockState())) { ++ if (CraftEventFactory.callEntityChangeBlockEvent(this, pos, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state + this.level().removeBlock(pos, false); + } + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java b/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java +index 9bc9fa5e51c93af320b095036e874e74a6d50acf..f19a1ea64d26723d738b007c5102fe44b963bfb6 100644 +--- a/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/ChorusFlowerBlock.java +@@ -263,7 +263,7 @@ public class ChorusFlowerBlock extends Block { + + if (!world.isClientSide && projectile.mayInteract(world, blockposition) && projectile.getType().is(EntityTypeTags.IMPACT_PROJECTILES)) { + // CraftBukkit +- if (!CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, Blocks.AIR.defaultBlockState())) { ++ if (!CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, state.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state + return; + } + // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java -index 719c60316d6e22d8a6014fa491c904dec4bf2835..5355d9f3eb241be8101e8770c63cabbaf1e6d471 100644 +index 719c60316d6e22d8a6014fa491c904dec4bf2835..741aef7f4fbe1eba8db1eb4eb2ab255906863c66 100644 --- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java @@ -129,7 +129,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @@ -69,7 +165,51 @@ index 719c60316d6e22d8a6014fa491c904dec4bf2835..5355d9f3eb241be8101e8770c63cabba if (!world.isClientSide && projectile.mayInteract(world, blockposition) && projectile instanceof ThrownTrident && projectile.getDeltaMovement().length() > 0.6D) { // CraftBukkit start - if (!CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, Blocks.AIR.defaultBlockState())) { -+ if (!CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, state.getFluidState().createLegacyBlock())) { // Paper - use correct block state ++ if (!CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, state.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state return; } // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/level/block/TntBlock.java b/src/main/java/net/minecraft/world/level/block/TntBlock.java +index ed90d126e317612f40b101b559a94aabf9ad7ee2..d73589ac6076f82f516c368acb17d280fb3c47e5 100644 +--- a/src/main/java/net/minecraft/world/level/block/TntBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/TntBlock.java +@@ -156,7 +156,7 @@ public class TntBlock extends Block { + + if (projectile.isOnFire() && projectile.mayInteract(world, blockposition)) { + // CraftBukkit start +- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, Blocks.AIR.defaultBlockState()) || !CraftEventFactory.callTNTPrimeEvent(world, blockposition, PrimeCause.PROJECTILE, projectile, null)) { ++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, state.getFluidState().createLegacyBlock()) || !CraftEventFactory.callTNTPrimeEvent(world, blockposition, PrimeCause.PROJECTILE, projectile, null)) { // Paper - fix wrong block state + return; + } + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/level/block/WaterlilyBlock.java b/src/main/java/net/minecraft/world/level/block/WaterlilyBlock.java +index b13d89b1516130507402cd3b4bdb9f3c2a36e807..936644ec4a57e51a1c11a5bf4e8449abcc209edb 100644 +--- a/src/main/java/net/minecraft/world/level/block/WaterlilyBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/WaterlilyBlock.java +@@ -30,7 +30,7 @@ public class WaterlilyBlock extends BushBlock { + if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper + if (world instanceof ServerLevel && entity instanceof Boat) { + // CraftBukkit start +- if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState())) { ++ if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, state.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state + return; + } + // CraftBukkit end +diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +index f40ff2f248e3cacc924d90e9f90692b5bde7ea53..ff4dc2a8ab7a158f985599e37da5999cae97d42d 100644 +--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +@@ -1357,11 +1357,11 @@ public class CraftEventFactory { + return event; + } + +- public static EntityBreakDoorEvent callEntityBreakDoorEvent(Entity entity, BlockPos pos) { ++ public static EntityBreakDoorEvent callEntityBreakDoorEvent(Entity entity, BlockPos pos, net.minecraft.world.level.block.state.BlockState newState) { // Paper + org.bukkit.entity.Entity entity1 = entity.getBukkitEntity(); + Block block = CraftBlock.at(entity.level(), pos); + +- EntityBreakDoorEvent event = new EntityBreakDoorEvent((LivingEntity) entity1, block); ++ EntityBreakDoorEvent event = new EntityBreakDoorEvent((LivingEntity) entity1, block, newState.createCraftBlockData()); // Paper + entity1.getServer().getPluginManager().callEvent(event); + + return event;