--- a/net/minecraft/world/level/block/DragonEggBlock.java
+++ b/net/minecraft/world/level/block/DragonEggBlock.java
@@ -55,6 +_,16 @@
                 level.random.nextInt(16) - level.random.nextInt(16)
             );
             if (level.getBlockState(blockPos).isAir() && worldBorder.isWithinBounds(blockPos)) {
+                // CraftBukkit start
+                org.bukkit.block.Block from = org.bukkit.craftbukkit.block.CraftBlock.at(level, pos);
+                org.bukkit.block.Block to = org.bukkit.craftbukkit.block.CraftBlock.at(level, blockPos);
+                org.bukkit.event.block.BlockFromToEvent event = new org.bukkit.event.block.BlockFromToEvent(from, to);
+                if (!event.callEvent()) {
+                    return;
+                }
+
+                blockPos = new BlockPos(event.getToBlock().getX(), event.getToBlock().getY(), event.getToBlock().getZ());
+                // CraftBukkit end
                 if (level.isClientSide) {
                     for (int i1 = 0; i1 < 128; i1++) {
                         double randomDouble = level.random.nextDouble();
