--- a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java
+++ b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java
@@ -58,6 +_,12 @@
                             if (blockState.is(BlockTags.MOB_INTERACTABLE_DOORS, state -> state.getBlock() instanceof DoorBlock)) {
                                 DoorBlock doorBlock = (DoorBlock)blockState.getBlock();
                                 if (!doorBlock.isOpen(blockState)) {
+                                    // CraftBukkit start - entities opening doors
+                                    org.bukkit.event.entity.EntityInteractEvent event = new org.bukkit.event.entity.EntityInteractEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(entity.level(), blockPos));
+                                    if (!event.callEvent()) {
+                                        return false;
+                                    }
+                                    // CraftBukkit end - entities opening doors
                                     doorBlock.setOpen(entity, level, blockState, blockPos, true);
                                 }
 
@@ -69,6 +_,12 @@
                             if (blockState1.is(BlockTags.MOB_INTERACTABLE_DOORS, state -> state.getBlock() instanceof DoorBlock)) {
                                 DoorBlock doorBlock1 = (DoorBlock)blockState1.getBlock();
                                 if (!doorBlock1.isOpen(blockState1)) {
+                                    // CraftBukkit start - entities opening doors
+                                    org.bukkit.event.entity.EntityInteractEvent event = new org.bukkit.event.entity.EntityInteractEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(entity.level(), blockPos1));
+                                    if (!event.callEvent()) {
+                                        return false;
+                                    }
+                                    // CraftBukkit end - entities opening doors
                                     doorBlock1.setOpen(entity, level, blockState1, blockPos1, true);
                                     optional = rememberDoorToClose(doorsToClose, optional, level, blockPos1);
                                 }
