aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-07-07 10:25:36 -0700
committerGitHub <[email protected]>2023-07-07 10:25:36 -0700
commite1053543307a4e64990c41905f80c85cb82d17fb (patch)
treeaf38b2538e3598f601cb581cd349b17b4ba87e9b
parentd7d3f6371e15f68bbbfc70d567552d426563acfb (diff)
downloadPaper-e1053543307a4e64990c41905f80c85cb82d17fb.tar.gz
Paper-e1053543307a4e64990c41905f80c85cb82d17fb.zip
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.
-rw-r--r--patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch21
-rw-r--r--patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch (renamed from patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch)0
-rw-r--r--patches/api/0361-WorldCreator-keepSpawnLoaded.patch (renamed from patches/api/0360-WorldCreator-keepSpawnLoaded.patch)0
-rw-r--r--patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch (renamed from patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch)0
-rw-r--r--patches/api/0363-Add-PlayerStopUsingItemEvent.patch (renamed from patches/api/0362-Add-PlayerStopUsingItemEvent.patch)0
-rw-r--r--patches/api/0364-FallingBlock-auto-expire-setting.patch (renamed from patches/api/0363-FallingBlock-auto-expire-setting.patch)0
-rw-r--r--patches/api/0365-Keyed-Cat-Type.patch (renamed from patches/api/0364-Keyed-Cat-Type.patch)0
-rw-r--r--patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch (renamed from patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch)4
-rw-r--r--patches/api/0367-Add-WardenAngerChangeEvent.patch (renamed from patches/api/0366-Add-WardenAngerChangeEvent.patch)0
-rw-r--r--patches/api/0368-Nameable-Banner-API.patch (renamed from patches/api/0367-Nameable-Banner-API.patch)0
-rw-r--r--patches/api/0369-Add-Player-getFishHook.patch (renamed from patches/api/0368-Add-Player-getFishHook.patch)0
-rw-r--r--patches/api/0370-More-Teleport-API.patch (renamed from patches/api/0369-More-Teleport-API.patch)0
-rw-r--r--patches/api/0371-Add-EntityPortalReadyEvent.patch (renamed from patches/api/0370-Add-EntityPortalReadyEvent.patch)0
-rw-r--r--patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch (renamed from patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch)0
-rw-r--r--patches/api/0373-Collision-API.patch (renamed from patches/api/0372-Collision-API.patch)0
-rw-r--r--patches/api/0374-Block-Ticking-API.patch (renamed from patches/api/0373-Block-Ticking-API.patch)0
-rw-r--r--patches/api/0375-Add-NamespacedKey-biome-methods.patch (renamed from patches/api/0374-Add-NamespacedKey-biome-methods.patch)0
-rw-r--r--patches/api/0376-Also-load-resources-from-LibraryLoader.patch (renamed from patches/api/0375-Also-load-resources-from-LibraryLoader.patch)0
-rw-r--r--patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch (renamed from patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch)0
-rw-r--r--patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch (renamed from patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch)0
-rw-r--r--patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch (renamed from patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch)0
-rw-r--r--patches/api/0380-Add-getDrops-to-BlockState.patch (renamed from patches/api/0379-Add-getDrops-to-BlockState.patch)0
-rw-r--r--patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch (renamed from patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch)0
-rw-r--r--patches/api/0382-Elder-Guardian-appearance-API.patch (renamed from patches/api/0381-Elder-Guardian-appearance-API.patch)0
-rw-r--r--patches/api/0383-Allow-changing-bed-s-occupied-property.patch (renamed from patches/api/0382-Allow-changing-bed-s-occupied-property.patch)0
-rw-r--r--patches/api/0384-Add-EquipmentSlot-convenience-methods.patch (renamed from patches/api/0383-Add-EquipmentSlot-convenience-methods.patch)0
-rw-r--r--patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch (renamed from patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch)0
-rw-r--r--patches/api/0386-Add-entity-knockback-API.patch (renamed from patches/api/0385-Add-entity-knockback-API.patch)0
-rw-r--r--patches/api/0387-Added-EntityToggleSitEvent.patch (renamed from patches/api/0386-Added-EntityToggleSitEvent.patch)0
-rw-r--r--patches/api/0388-Add-Moving-Piston-API.patch (renamed from patches/api/0387-Add-Moving-Piston-API.patch)0
-rw-r--r--patches/api/0389-Add-PrePlayerAttackEntityEvent.patch (renamed from patches/api/0388-Add-PrePlayerAttackEntityEvent.patch)0
-rw-r--r--patches/api/0390-Add-Player-Warden-Warning-API.patch (renamed from patches/api/0389-Add-Player-Warden-Warning-API.patch)0
-rw-r--r--patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch (renamed from patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch)0
-rw-r--r--patches/api/0392-Add-paper-dumplisteners-command.patch (renamed from patches/api/0391-Add-paper-dumplisteners-command.patch)0
-rw-r--r--patches/api/0393-ItemStack-damage-API.patch (renamed from patches/api/0392-ItemStack-damage-API.patch)0
-rw-r--r--patches/api/0394-Add-Tick-TemporalUnit.patch (renamed from patches/api/0393-Add-Tick-TemporalUnit.patch)0
-rw-r--r--patches/api/0395-Friction-API.patch (renamed from patches/api/0394-Friction-API.patch)2
-rw-r--r--patches/api/0396-Player-Entity-Tracking-Events.patch (renamed from patches/api/0395-Player-Entity-Tracking-Events.patch)0
-rw-r--r--patches/api/0397-Add-missing-Fluid-type.patch (renamed from patches/api/0396-Add-missing-Fluid-type.patch)0
-rw-r--r--patches/api/0398-fix-Instruments.patch (renamed from patches/api/0397-fix-Instruments.patch)0
-rw-r--r--patches/api/0399-Add-BlockLockCheckEvent.patch (renamed from patches/api/0398-Add-BlockLockCheckEvent.patch)0
-rw-r--r--patches/api/0400-Add-Sneaking-API-for-Entities.patch (renamed from patches/api/0399-Add-Sneaking-API-for-Entities.patch)0
-rw-r--r--patches/api/0401-Improve-PortalEvents.patch (renamed from patches/api/0400-Improve-PortalEvents.patch)0
-rw-r--r--patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent.patch (renamed from patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent.patch)0
-rw-r--r--patches/api/0403-Flying-Fall-Damage-API.patch (renamed from patches/api/0402-Flying-Fall-Damage-API.patch)0
-rw-r--r--patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch (renamed from patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch)0
-rw-r--r--patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch (renamed from patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch)0
-rw-r--r--patches/api/0406-Win-Screen-API.patch (renamed from patches/api/0405-Win-Screen-API.patch)0
-rw-r--r--patches/api/0407-Add-Entity-Body-Yaw-API.patch (renamed from patches/api/0406-Add-Entity-Body-Yaw-API.patch)0
-rw-r--r--patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch (renamed from patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch)0
-rw-r--r--patches/api/0409-Add-EntityFertilizeEggEvent.patch (renamed from patches/api/0408-Add-EntityFertilizeEggEvent.patch)0
-rw-r--r--patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch (renamed from patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch)0
-rw-r--r--patches/api/0411-Add-Shearable-API.patch (renamed from patches/api/0410-Add-Shearable-API.patch)0
-rw-r--r--patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch (renamed from patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch)0
-rw-r--r--patches/api/0413-Add-Mob-Experience-reward-API.patch (renamed from patches/api/0412-Add-Mob-Experience-reward-API.patch)0
-rw-r--r--patches/api/0414-Expand-PlayerItemMendEvent.patch (renamed from patches/api/0413-Expand-PlayerItemMendEvent.patch)0
-rw-r--r--patches/api/0415-Add-transient-modifier-API.patch (renamed from patches/api/0414-Add-transient-modifier-API.patch)0
-rw-r--r--patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch (renamed from patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch)0
-rw-r--r--patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch (renamed from patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch)2
-rw-r--r--patches/api/0418-Folia-scheduler-and-owned-region-API.patch (renamed from patches/api/0417-Folia-scheduler-and-owned-region-API.patch)4
-rw-r--r--patches/api/0419-Add-event-for-player-editing-sign.patch (renamed from patches/api/0418-Add-event-for-player-editing-sign.patch)0
-rw-r--r--patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch168
62 files changed, 181 insertions, 20 deletions
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 <[email protected]>
+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
index 5775b6f33c..5775b6f33c 100644
--- a/patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
+++ b/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
index c148a391f4..c148a391f4 100644
--- a/patches/api/0360-WorldCreator-keepSpawnLoaded.patch
+++ b/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
index 032a0872d1..032a0872d1 100644
--- a/patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch
+++ b/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
index 0743d44ae1..0743d44ae1 100644
--- a/patches/api/0362-Add-PlayerStopUsingItemEvent.patch
+++ b/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
index 0a1e19afeb..0a1e19afeb 100644
--- a/patches/api/0363-FallingBlock-auto-expire-setting.patch
+++ b/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
index b0797d78b7..b0797d78b7 100644
--- a/patches/api/0364-Keyed-Cat-Type.patch
+++ b/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
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
index acf45b5314..acf45b5314 100644
--- a/patches/api/0366-Add-WardenAngerChangeEvent.patch
+++ b/patches/api/0367-Add-WardenAngerChangeEvent.patch
diff --git a/patches/api/0367-Nameable-Banner-API.patch b/patches/api/0368-Nameable-Banner-API.patch
index eba196daaf..eba196daaf 100644
--- a/patches/api/0367-Nameable-Banner-API.patch
+++ b/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
index 291eac5db5..291eac5db5 100644
--- a/patches/api/0368-Add-Player-getFishHook.patch
+++ b/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
index dba7c50dc1..dba7c50dc1 100644
--- a/patches/api/0369-More-Teleport-API.patch
+++ b/patches/api/0370-More-Teleport-API.patch
diff --git a/patches/api/0370-Add-EntityPortalReadyEvent.patch b/patches/api/0371-Add-EntityPortalReadyEvent.patch
index 4b1b1f1e1f..4b1b1f1e1f 100644
--- a/patches/api/0370-Add-EntityPortalReadyEvent.patch
+++ b/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
index 548433171d..548433171d 100644
--- a/patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch
+++ b/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
index 24bcebc503..24bcebc503 100644
--- a/patches/api/0372-Collision-API.patch
+++ b/patches/api/0373-Collision-API.patch
diff --git a/patches/api/0373-Block-Ticking-API.patch b/patches/api/0374-Block-Ticking-API.patch
index 9b2fc54ea1..9b2fc54ea1 100644
--- a/patches/api/0373-Block-Ticking-API.patch
+++ b/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
index 24cd2b9867..24cd2b9867 100644
--- a/patches/api/0374-Add-NamespacedKey-biome-methods.patch
+++ b/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
index ee5785d8cb..ee5785d8cb 100644
--- a/patches/api/0375-Also-load-resources-from-LibraryLoader.patch
+++ b/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
index 161c82afe3..161c82afe3 100644
--- a/patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch
+++ b/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
index bec7a5d015..bec7a5d015 100644
--- a/patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
+++ b/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
index 9b5ef25cf4..9b5ef25cf4 100644
--- a/patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
+++ b/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
index 48f3a99f04..48f3a99f04 100644
--- a/patches/api/0379-Add-getDrops-to-BlockState.patch
+++ b/patches/api/0380-Add-getDrops-to-BlockState.patch
diff --git a/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch b/patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch
index f094f9dbc9..f094f9dbc9 100644
--- a/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch
+++ b/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
index 6c5cac6256..6c5cac6256 100644
--- a/patches/api/0381-Elder-Guardian-appearance-API.patch
+++ b/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
index 8dfafd6d33..8dfafd6d33 100644
--- a/patches/api/0382-Allow-changing-bed-s-occupied-property.patch
+++ b/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
index 0ef6b4c9b0..0ef6b4c9b0 100644
--- a/patches/api/0383-Add-EquipmentSlot-convenience-methods.patch
+++ b/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
index 8ba283e9b1..8ba283e9b1 100644
--- a/patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
+++ b/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
index 3852612f24..3852612f24 100644
--- a/patches/api/0385-Add-entity-knockback-API.patch
+++ b/patches/api/0386-Add-entity-knockback-API.patch
diff --git a/patches/api/0386-Added-EntityToggleSitEvent.patch b/patches/api/0387-Added-EntityToggleSitEvent.patch
index af2476123b..af2476123b 100644
--- a/patches/api/0386-Added-EntityToggleSitEvent.patch
+++ b/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
index 8f889f1e3d..8f889f1e3d 100644
--- a/patches/api/0387-Add-Moving-Piston-API.patch
+++ b/patches/api/0388-Add-Moving-Piston-API.patch
diff --git a/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch b/patches/api/0389-Add-PrePlayerAttackEntityEvent.patch
index 507b313e56..507b313e56 100644
--- a/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch
+++ b/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
index 2df2999bc0..2df2999bc0 100644
--- a/patches/api/0389-Add-Player-Warden-Warning-API.patch
+++ b/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
index f13fdb5601..f13fdb5601 100644
--- a/patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch
+++ b/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
index 8053dc2c4f..8053dc2c4f 100644
--- a/patches/api/0391-Add-paper-dumplisteners-command.patch
+++ b/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
index ffdcd4b728..ffdcd4b728 100644
--- a/patches/api/0392-ItemStack-damage-API.patch
+++ b/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
index 96c1dddab8..96c1dddab8 100644
--- a/patches/api/0393-Add-Tick-TemporalUnit.patch
+++ b/patches/api/0394-Add-Tick-TemporalUnit.patch
diff --git a/patches/api/0394-Friction-API.patch b/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
index a824ae278f..a824ae278f 100644
--- a/patches/api/0395-Player-Entity-Tracking-Events.patch
+++ b/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
index c260bf8497..c260bf8497 100644
--- a/patches/api/0396-Add-missing-Fluid-type.patch
+++ b/patches/api/0397-Add-missing-Fluid-type.patch
diff --git a/patches/api/0397-fix-Instruments.patch b/patches/api/0398-fix-Instruments.patch
index 38cd1521f2..38cd1521f2 100644
--- a/patches/api/0397-fix-Instruments.patch
+++ b/patches/api/0398-fix-Instruments.patch
diff --git a/patches/api/0398-Add-BlockLockCheckEvent.patch b/patches/api/0399-Add-BlockLockCheckEvent.patch
index 55a23307b1..55a23307b1 100644
--- a/patches/api/0398-Add-BlockLockCheckEvent.patch
+++ b/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
index 8ad9168a83..8ad9168a83 100644
--- a/patches/api/0399-Add-Sneaking-API-for-Entities.patch
+++ b/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
index f7f53b19fc..f7f53b19fc 100644
--- a/patches/api/0400-Improve-PortalEvents.patch
+++ b/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
index bdc2de6d23..bdc2de6d23 100644
--- a/patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent.patch
+++ b/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
index f98c4bae3b..f98c4bae3b 100644
--- a/patches/api/0402-Flying-Fall-Damage-API.patch
+++ b/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
index 25fa280b26..25fa280b26 100644
--- a/patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
+++ b/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
index 3936bb4a92..3936bb4a92 100644
--- a/patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
+++ b/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
index 2d1bbcb699..2d1bbcb699 100644
--- a/patches/api/0405-Win-Screen-API.patch
+++ b/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
index 05fecf4aed..05fecf4aed 100644
--- a/patches/api/0406-Add-Entity-Body-Yaw-API.patch
+++ b/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
index 98799cd97d..98799cd97d 100644
--- a/patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
+++ b/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
index 52283a9df2..52283a9df2 100644
--- a/patches/api/0408-Add-EntityFertilizeEggEvent.patch
+++ b/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
index f720032bf2..f720032bf2 100644
--- a/patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
+++ b/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
index 96049cfd38..96049cfd38 100644
--- a/patches/api/0410-Add-Shearable-API.patch
+++ b/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
index 4014e17083..4014e17083 100644
--- a/patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch
+++ b/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
index e399177aeb..e399177aeb 100644
--- a/patches/api/0412-Add-Mob-Experience-reward-API.patch
+++ b/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
index 223922e05e..223922e05e 100644
--- a/patches/api/0413-Expand-PlayerItemMendEvent.patch
+++ b/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
index a32e4c86a9..a32e4c86a9 100644
--- a/patches/api/0414-Add-transient-modifier-API.patch
+++ b/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
index 268785a112..268785a112 100644
--- a/patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch
+++ b/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
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
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
index 8a4fbb67a7..8a4fbb67a7 100644
--- a/patches/api/0418-Add-event-for-player-editing-sign.patch
+++ b/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 <[email protected]>
Date: Mon, 21 Mar 2022 20:00:53 +0200
Subject: [PATCH] Fix new block data for EntityChangeBlockEvent
+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 <[email protected]>
+Co-authored-by: Jake Potrebic <[email protected]>
+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<Villager> {
+ 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<Rabbit.Variant> {
+
+ 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;