--- a/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
@@ -25,7 +_,8 @@
     private VibrationSystem.Data vibrationData;
     private final VibrationSystem.Listener vibrationListener;
     private final VibrationSystem.User vibrationUser = this.createVibrationUser();
-    private int lastVibrationFrequency;
+    public int lastVibrationFrequency;
+    @Nullable public Integer rangeOverride = null; // Paper - Configurable sculk sensor listener range
 
     protected SculkSensorBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState blockState) {
         super(type, pos, blockState);
@@ -52,8 +_,16 @@
                 .resultOrPartial(string -> LOGGER.error("Failed to parse vibration listener for Sculk Sensor: '{}'", string))
                 .ifPresent(data -> this.vibrationData = data);
         }
+        // Paper start - Configurable sculk sensor listener range
+        if (tag.contains(PAPER_LISTENER_RANGE_NBT_KEY)) {
+            this.rangeOverride = tag.getInt(PAPER_LISTENER_RANGE_NBT_KEY);
+        } else {
+            this.rangeOverride = null;
+        }
+        // Paper end - Configurable sculk sensor listener range
     }
 
+    protected static final String PAPER_LISTENER_RANGE_NBT_KEY = "Paper.ListenerRange"; // Paper - Configurable sculk sensor listener range
     @Override
     protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) {
         super.saveAdditional(tag, registries);
@@ -63,7 +_,13 @@
             .encodeStart(registryOps, this.vibrationData)
             .resultOrPartial(string -> LOGGER.error("Failed to encode vibration listener for Sculk Sensor: '{}'", string))
             .ifPresent(tag1 -> tag.put("listener", tag1));
-    }
+        this.saveRangeOverride(tag); // Paper - Configurable sculk sensor listener range
+    }
+    // Paper start - Configurable sculk sensor listener range
+    protected void saveRangeOverride(CompoundTag tag) {
+        if (this.rangeOverride != null && this.rangeOverride != VibrationUser.LISTENER_RANGE) tag.putInt(PAPER_LISTENER_RANGE_NBT_KEY, this.rangeOverride); // only save if it's different from the default
+    }
+    // Paper end - Configurable sculk sensor listener range
 
     @Override
     public VibrationSystem.Data getVibrationData() {
@@ -100,6 +_,7 @@
 
         @Override
         public int getListenerRadius() {
+            if (SculkSensorBlockEntity.this.rangeOverride != null) return SculkSensorBlockEntity.this.rangeOverride; // Paper - Configurable sculk sensor listener range
             return 8;
         }
 
