--- a/net/minecraft/world/level/block/PressurePlateBlock.java
+++ b/net/minecraft/world/level/block/PressurePlateBlock.java
@@ -46,7 +_,29 @@
             case EVERYTHING -> Entity.class;
             case MOBS -> LivingEntity.class;
         };
-        return getEntityCount(level, TOUCH_AABB.move(pos), clazz) > 0 ? 15 : 0;
+        // CraftBukkit start - Call interact event when turning on a pressure plate
+        for (Entity entity : getEntities(level, PressurePlateBlock.TOUCH_AABB.move(pos), clazz)) {
+            if (this.getSignalForState(level.getBlockState(pos)) == 0) {
+                org.bukkit.event.Cancellable cancellable;
+
+                if (entity instanceof net.minecraft.world.entity.player.Player player) {
+                    cancellable = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(player, org.bukkit.event.block.Action.PHYSICAL, pos, null, null, null);
+                } else {
+                    cancellable = new org.bukkit.event.entity.EntityInteractEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos));
+                    level.getCraftServer().getPluginManager().callEvent((org.bukkit.event.entity.EntityInteractEvent) cancellable);
+                }
+
+                // We only want to block turning the plate on if all events are cancelled
+                if (cancellable.isCancelled()) {
+                    continue;
+                }
+            }
+
+            return 15;
+        }
+
+        return 0;
+        // CraftBukkit end
     }
 
     @Override
