--- a/net/minecraft/world/entity/animal/EntityRabbit.java
+++ b/net/minecraft/world/entity/animal/EntityRabbit.java
@@ -67,6 +67,10 @@
 import net.minecraft.world.level.pathfinder.PathEntity;
 import net.minecraft.world.phys.Vec3D;
 
+// CraftBukkit start
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+// CraftBukkit end
+
 public class EntityRabbit extends EntityAnimal implements VariantHolder<EntityRabbit.Variant> {
 
     public static final double STROLL_SPEED_MOD = 0.6D;
@@ -89,7 +93,6 @@
         super(entitytypes, world);
         this.jumpControl = new EntityRabbit.ControllerJumpRabbit(this);
         this.moveControl = new EntityRabbit.ControllerMoveRabbit(this);
-        this.setSpeedModifier(0.0D);
     }
 
     @Override
@@ -577,9 +580,19 @@
                     int i = (Integer) iblockdata.getValue(BlockCarrots.AGE);
 
                     if (i == 0) {
+                        // CraftBukkit start
+                        if (!CraftEventFactory.callEntityChangeBlockEvent(this.rabbit, blockposition, Blocks.AIR.defaultBlockState())) {
+                            return;
+                        }
+                        // CraftBukkit end
                         world.setBlock(blockposition, Blocks.AIR.defaultBlockState(), 2);
                         world.destroyBlock(blockposition, true, this.rabbit);
                     } else {
+                        // CraftBukkit start
+                        if (!CraftEventFactory.callEntityChangeBlockEvent(this.rabbit, blockposition, iblockdata.setValue(BlockCarrots.AGE, i - 1))) {
+                            return;
+                        }
+                        // CraftBukkit end
                         world.setBlock(blockposition, (IBlockData) iblockdata.setValue(BlockCarrots.AGE, i - 1), 2);
                         world.gameEvent(GameEvent.BLOCK_CHANGE, blockposition, GameEvent.a.of((Entity) this.rabbit));
                         world.levelEvent(2001, blockposition, Block.getId(iblockdata));
