--- a/net/minecraft/world/level/block/SculkShriekerBlock.java
+++ b/net/minecraft/world/level/block/SculkShriekerBlock.java
@@ -63,6 +63,7 @@
             EntityPlayer entityplayer = SculkShriekerBlockEntity.tryGetPlayer(entity);
 
             if (entityplayer != null) {
+                if (org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(entityplayer, org.bukkit.event.block.Action.PHYSICAL, blockposition, null, null, null).isCancelled()) return; // CraftBukkit
                 worldserver.getBlockEntity(blockposition, TileEntityTypes.SCULK_SHRIEKER).ifPresent((sculkshriekerblockentity) -> {
                     sculkshriekerblockentity.tryShriek(worldserver, entityplayer);
                 });
@@ -147,10 +148,17 @@
     @Override
     public void spawnAfterBreak(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, ItemStack itemstack, boolean flag) {
         super.spawnAfterBreak(iblockdata, worldserver, blockposition, itemstack, flag);
+        // CraftBukkit start - Delegate to getExpDrop
+    }
+
+    @Override
+    public int getExpDrop(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, ItemStack itemstack, boolean flag) {
         if (flag) {
-            this.tryDropExperience(worldserver, blockposition, itemstack, ConstantInt.of(5));
+            return this.tryDropExperience(worldserver, blockposition, itemstack, ConstantInt.of(5));
         }
 
+        return 0;
+        // CraftBukkit end
     }
 
     @Nullable
