--- a/net/minecraft/world/level/block/FrostedIceBlock.java
+++ b/net/minecraft/world/level/block/FrostedIceBlock.java
@@ -43,6 +_,7 @@
 
     @Override
     protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) {
+        if (!level.paperConfig().environment.frostedIce.enabled) return; // Paper - Frosted ice options
         if (random.nextInt(3) == 0 || this.fewerNeigboursThan(level, pos, 4)) {
             int i = level.dimension() == Level.END ? level.getBrightness(LightLayer.BLOCK, pos) : level.getMaxLocalRawBrightness(pos);
             if (i > 11 - state.getValue(AGE) - state.getLightBlock() && this.slightlyMelt(state, level, pos)) {
@@ -52,7 +_,7 @@
                     mutableBlockPos.setWithOffset(pos, direction);
                     BlockState blockState = level.getBlockState(mutableBlockPos);
                     if (blockState.is(this) && !this.slightlyMelt(blockState, level, mutableBlockPos)) {
-                        level.scheduleTick(mutableBlockPos, this, Mth.nextInt(random, 20, 40));
+                        level.scheduleTick(mutableBlockPos, this, Mth.nextInt(random, level.paperConfig().environment.frostedIce.delay.min, level.paperConfig().environment.frostedIce.delay.max)); // Paper - Frosted ice options
                     }
                 }
 
@@ -60,7 +_,7 @@
             }
         }
 
-        level.scheduleTick(pos, this, Mth.nextInt(random, 20, 40));
+        level.scheduleTick(pos, this, Mth.nextInt(random, level.paperConfig().environment.frostedIce.delay.min, level.paperConfig().environment.frostedIce.delay.max)); // Paper - Frosted ice options
     }
 
     private boolean slightlyMelt(BlockState state, Level level, BlockPos pos) {
